Please note - this 'How To' is how I built a multi-node Win98se based diskless DC farm ("SETI Wall") for running 'SETI Classic'. Regretfully, major changes are required to network boot a 'true' 32bit operating system (such as Windows XP), as required to support SETI BOINC (which does not run under Win98). Below is thus mainly of 'historical' interest, although my later page on Supporting BOINC and changes in technology may still be of some interest.
How to create the floppy boot disk
Well, Windows 98 lets you create a 'Windows Boot Disk with network support', so this would seem like a good start ?
But, ha, ha, it's the usual Microsoft 'joke' ... since this 'Boot Floppy' ONLY works if you have Windows already installed on the 'target' PC !
The reason why a Windows 98 created 'Network boot floppy' fails is that it attempts to access the 'Registry' files it fondly imagines can be found on the 'target' PC before it will run. What a joke ! There you are, panicking because your PC won't boot, most likely due to hard disk problems, and the ONE tool Microsoft gives you that will supposedly boot-up a system with a non-booting hard disk (and maybe let you save any files you can recover to a network share) and it relies on a PERFECTLY WORKING hard disk drive = this is NOT very impressive !
Instead you need to start with a NET Boot floppy made by Windows NT4, or, better, just go find 3com's 3c90x "Etherlink" set (3 floppy disks). If these are hard to find, by all means start with my SETI Wall boot floppy files. Note you still need to start with an empty but bootable (SYS'd) floppy disk which must be formatted and made bootable by Windows 98.
The NET.EXE you need is 440kb (450,342 bytes) in size. Microsoft's NET.EXE (348kb) distributed in Windows 98 fails to 'map' a network drive after booting (and I assume the Windows 95 NET.EXE (368kb) has the same problem).
NB if 3com think these files are free of Microsoft Licence limitations (or you are covered by your Win 98 Licences) I'm prepared to go along with them ....
What don't we need on the Boot Floppy ?
What don't you need ? well (from DOS Network files placed onto the disk by Microsoft NT) you can remove the following 'bloat ware' :-
SETUP.EXE (which doesn't work on machines without a HD anyway), EXPAND.EXE, README.TXT and RASCOPY.BAT (& maybe some others ..)
You can also delete NWLINK.EXE, unless you really need IPX (SPX isn't supported by the DOS vsn. of Microsoft's NW Link protocol, so unless you have a Novel 'Server' it's a bit pointless - anyway, all the foregoing has assumed NetBEUI & I'm not changing now).
You can use such a disk as the basis of the 'real' diskless workstation boot floppy.
NOTE - even after removing all of Microsoft's crap there is still not going to be enough space on the floppy for the 'must haves' (DRVSPACE for one) - but you will need to use compression (DRVSPACE) on the diskless node RAM disk so this means you must load the DRVSPACE drivers during floppy boot DOS operations - so you might as well take advantage of this and compress the whole floppy from 'step 1'.
Even with a compressed floppy, I never managed to find enough space to include TCP/IP drivers - but since I don't need to boot my nodes from the Internet, Net BIOS is more than good enough :-)
Of course, if the Nodes will need to use TCP/IP after they are booted into Windows, you can include it in the Windows 98 RAM Disk 'image', however, if you use a single image for all nodes, this will make it more difficult to 'personalise' each individual node (although see later re: PATCH.REG).
NB. You will soon discover that you can ONLY prepare such floppies on a Windows 9x PC (neither Windows NT nor 2000 understand drvspace compression).
1) SYS the floppy from Windows (98se) to ensure you get the correct vsn. DOS (this creates IO.SYS, MSDOS.SYS
and COMMAND.COM)
Next use 'Compression' on the floppy to set it up for DRVSPACE operations ...
This step is vital to ensure that the DRVSPACE drivers are actually loaded during the floppy boot phase (for use latter with the compressed RAM disk).
The problem is, with no Hard Disk (and no RAM disk at boot time), the DRVSPACE driver will ONLY be loaded if you have a compressed boot floppy. Later, after copying the Windows containing DRVSPACE.000 from the network, the SCANDISK /MOUNT command will ONLY work if the DRVSPACE driver has ALREADY been loaded = and the only way I've managed to get DRVSPACE to load is by booting from a 'compressed' floppy.
What's on the 'uncompressed' (root of floppy) ?
The 'raw' floppy will contain DRVSPACE.000 (this file contains the 'compressed drive' DOS files) plus Drvspace.bin, Drvspace.ini(**), IO.SYS & MSDOS.SYS
If space allows, it's not a bad idea to include a copy of COMMAND.COM on the (uncompressed) root of the floppy, just in case Drvspace fails to load (since, without command.com, you won't know what's gone wrong).
**NOTE - you MUST have a DRVSPACE.INI (on the uncompressed root of the floppy) to ensure that DRVSPACE.00n (and drive letters) are mounted (and allocated) - DRVSPACE will NOT load if this INI file can not be found !
For example, on your setup PC, if (after compressing A:) your Floppy 'physical' disk has been assigned F:, then on F: create a DRVSPACE.INI containing the following :-
ActivateDrive=F,A0
AutoMount=1
MaxFileFragments=120
MaxRemovableDrives=2
LastDrive=E
What's on the 'compressed' floppy ?
1) In root of the compressed drive :-
COMMAND.COM
HIMEM.SYS
IFSHELP.SYS (this 'dummy' driver 'reserves' space in the low 640kb for the Windows net drivers)
EMM386.EXE
XCOPY, XCOPY32, XCOPY32.MOD
CONFIG.SYS
AUTOEXEC.BAT
DRVSPACE.BIN
DRVSPACE.SYS
DRVSPACE.INI
XMSDSK.EXE (for RAM disk set up)
SCANDISK.EXE (for 'mounting' RAM disk as C: ..)
PATCH.REG (this is actually copied from the server during the boot-up .. see NOTES below)
2) Create a \NET sub-folder (for Net BEUI operations) and add the following files :-
ADMINIST.PWL (if you auto-log in as administrator)
ELNK3.DOS (DOS Driver for the 3com 3c509)
NDISHLP.SYS
NET.EXE
NET.MSG
NETH.MSG (actually, NET works OK without this file, but don't expect any /? help !)
PROTMAN.EXE & PROTMAN.DOS
PROTOCOL.INI
SHARES.PWL (created when you set up a shared drive)
SYSTEM.INI (yes, you must have a copy here as well as on C: ...)
WFWSYS.CFG (who knows why this is needed ..)
NOTES.
You must have the 3com version of NET.EXE (440kb). If you use the Microsoft version (348kb) you will have problems later connecting to your 'server' via Net BIOS (which I never solved = yet another MS 'dongle' check perhaps ??).
Use the NET PASSWORD command to create your .pwd password files - and then add these to the floppy.
In the System.ini file, make sure the "Your_computer/name=" in the [Network] section is NOT the same as the one you wish to use in Windows later !
[If you use the same 'Your_computer/ name' in the DOS boot portion, Windows will halt during the start-up process with a 'Duplicate network name in Protocol 1' error. To continue you will then have to manually click 'OK' = and whilst this doesn't crash Windows or the network but it does prevent unattended start-up :-( ]
Contents of the system (.SYS), and control (.REG, .BAT) files
[Paths]
WinBootDir=C:\WINDOWS
WinDir=F:\WINDOWS
HostWinBootDrv=F
[Options]
BootGUI=0
Network=1
Logo=1
Autoscan=0
;BootWarn=0
DEVICE=A:\WINDOWS\HIMEM.SYS
DOS=HIGH,UMB
DEVICEHIGH=A:\WINDOWS\IFSHLP.SYS
LASTDRIVE=M
Note on LASTDRIVE: To save a few more bytes of RAM during the DOS boot phase, LASTDRIVE can be set lower, HOWEVER don't forget Lastdrive when you choose to 'map' drive letters for network use ! (there's no point in trying 'net use m:' (see below) if you have set LASTDRIVE to E !).
PATCH.REG
This is required if you have more than one motherboard sharing the same Windows 'image' or, most likely the case, during the initial set-up, when a Node is using the 'default' Windows image.
When the Windows 'image' is launched, by default, it will have the 'machine name' that was chosen during the original set-up .. since each Node must have a unique name, either we need to make lots of unique Windows images OR we can have the boot floppy fetch it's own "patch.reg" from the server and have that change the default name to a specific one for each Node.
If Server disk space allows, once you have a Node running OK, you can copy it's 'known good running Windows image' back to the Server for future use by that node only. In this way that nodes' Windows image will be unique and no patch.reg will be required. You could then comment out that part of the autoexec.bat file dealing with patch.reg and make the floppy 'read only'.
AUTOEXEC.BAT
Plainly this needs to boot the node by creating the RAM disk, fetching the compressed Windows (which must be no more than 30Mb in size) from the 'server' share (which I called 'images') and then cross boot into windows.
You should create your own, however you can follow this example for my "Node number 12" (setting the Node number makes a boot floppy unique to that Node) :-
rem change the seti Node number, Set N= , before using each new floppy
Set N=12
rem @echo off
rem set up RAM drive, 36Mb (36000 kb) as C: from Top of mem.
XMSDSK.EXE 36000 c: /t /y
if errorlevel=3 goto RamOK
echo
echo *************************************************
echo ** Error! RAMDRIVE could not be found **
echo *************************************************
echo
goto END
:RamOK
SET netcard=elnk3.dos
SET protocol=protocol.ini
set server=server
set share=seti-%N%
set account=administrator
set logondomain=HOME
set machname=seti-%N%
rem - %MACHNAME% is useful later on (it's preserved across the Windows boot..)
prompt=$p$g
path=a:\dos;a:\;a:\net
rem now start the network
NET start basic /yes
net use m: \\%server%\images HOME
rem check drive mapped OK
if exist m:\%share%\*.* goto mapOK
echo
echo *************************************************
echo ** Error! \\%server%\%share% failed to map **
echo *************************************************
echo
goto END
:mapOK
rem get the right time from the Server
NET time \\%server% /set /yes
rem now remove any system/hidden bits & then do the copy
attrib m:\%share%\*.* -s -h /s
XCOPY m:\%share%\*.* c:\ /s
rem sanity check (do we have at least some files ?)
if exist c:\*.* goto CopyOK
echo
echo *************************************************
echo ** Error! Windows files failed to copy **
echo *************************************************
echo
goto END
:CopyOK
rem get the correct registry tweak for node N ... (required during initial use of shared image)
rem this is the only reason why the floppy can not be made 'read only'
copy m:\reg%N%.reg a:\patch.reg
if exist a:\patch.reg goto patchOK
echo
echo *************************************************
echo ** Error! no Registry patch found **
echo *************************************************
echo
goto END
:patchOK
rem OK, that's it, kill the network link (must do it now, so Windows net drivers can load later)
net use * /delete /yes
net logoff /yes
rem restore the 'hidden' / 'system' file attributes (only MS knows why ...)
attrib c:\Drvspace.000 +H +s
attrib c:\io.sys +H +s
rem OK the biggie - does c: exist ? will DOS find a valid file system ? let's go see ...
c:\
rem OK if we get here we have a c: - now let's mount the compressed Windows ....
SCANDISK /MOUNT
rem .. now reset the path (so DOS can find command.com, ScanDisk & Win)
SET COMSPEC=c:\COMMAND.COM
PATH = c:\;c:\windows;c:\windows\system;c:\windows\command
rem OK, we now have access to regedit etc. on the compressed drive ..
rem .. so make the Registry patch (to get correct m/c name from this floppy)
cd c:\windows
regedit /L:system.dat /R:user.dat a:\patch.reg
rem .. now lets go = bye bye DOS, hello Windows !
rem (during test, use the /d:f switch to prevent 32bit disk drivers loading)
WIN.com
:END
My boot floppies
For comparison use, here is an example of a 'raw' (non-compressed) boot floppy
Here is the compressed boot floppy.
Note - it's not good enough to just copy the above files onto a newly formatted floppy disk - the floppy has to be made BOOTABLE (using a Windows 98 computer) first, and then COMPRESSED, as per instructions above
Click "Next>>" (navigation bar left) for Supporting BOINC and changes in technology since this was written.