ServerMagic 4.0 for NetWare tips and tricks
Maybe you've also experienced that resizing volumes in Powerquest's Server Magic
4.0 for NetWare is doing a lengthy full verify, no matter what are the settings
at the "Disk Verify" option. Well, that is a bug. I notified
PowerQuest about it, but they didn't seem to care much. However, if you
need a solution, here is a quick workaround:
First, we need ServerMagic for NetWare, version 4.0. File details:
SMAGIC NLM 2,177,486 08-16-00 4:00a
NLM Version 4.00, 2000 August 16
Copyright=Copyright 1994-2000, PowerQuest Corp. All rights reserved.
This version was on the download site at PowerQuest and now is also packaged with
ServerMagic 6.5, because 6.5 is not working on 3.12/3.2 (and on 4.x???).
"ServerMagic 6.5 for NetWare includes ServerMagic 4.0 providing unprecedented
support for NetWare 3.x to 6.5 systems."
Even though you can download ServerMagic, you need an activation key, as it
serializes itself based on the NetWare Server's serial number, etc. Without
that, you're limited to 100MB. (Getting the activation key for ServerMagic
using NetWare's internal debugger is out of the scope of this document.
So you're already in the middle of the migration and you want to disable disk
1) load smagic.nlm
2) enter to debugger (2*shifts + left ALT + ESC)
3) get smagic.nlm start code address by:
.m smag* [enter]
c <code address> + 61834 [enter]
5) you will see:
74 (if you don't see 74, exit without changes by going to step 7)
Now don't forget to set "verify off" for the disks, as other checks could be
done at other routines.
You can also "patch" SMAGIC.NLM and then save time and trouble later on, you
should do change a byte located at 399823 (decimal) from 74 to EB (hex) using
any hex editor, like hiew or using POKE.EXE, my
friend's utility. (See read-only flag if it fails).
F:\TEMP>POKE SMAGIC.NLM 399823 EB
Poke (C) 1991 COMPUNIX SOFTWARE
SMAGIC.NLM is 2177486 bytes long.
I am going to make the following changes:
399823: 74 to EB
Are you sure? (Y/N) Y
A little more technical stuff for the caring ones
For example, at <code address>+50DB0 you find:
[NetWare3/4] - SMAGIC.NLM|W?GetCheckForBadSects$:PREFERENCES$n(uc)us
[NetWare5/6] - SMAGIC.NLM|GetCheckForBadSects$PREFERENCES
Before calling that, usually there is: push SMAGIC.NLM|w?gPrefs$npn$PREFERENCES$$
This variable looks like this:
02 00 00 00 | 28 00 00 00 || F9 FF FF FF
F9=..1001 - OFF OFF
FB=..1011 - ON OFF
FD=..1101 - OFF ON
FF=..1111 - ON ON
1st call calls "CheckVolumeSegment$n()i;" (AL=drive number)
then it calls SMAGIC.NLM|w?enVolSegResize$n(pn$PARTITION_INFO$$pn$NETWSI_LIMITS$$uli)i (code+7FD30)
You need to change the conditional jump to an unconditional at:
<code address>+61834 (7406) = <-- EB06
Other routine names I forgot why I wrote down:
I promise I'll look into it again I feel the need or anyone interested.
Comments, suggestion, flame, praise to:
|version / modified||Description|
|v0.01 - 2003.05.01||Original document|
|v0.02 - 2003.05.20||Notified PowerQuest (got answer too)|
|v1.00 - 2005.04.25||published on the web|
|v1.01 - 2006.03.20||updated symantec's link|