Setting up: 1. Make and test bootrom image. 1.0. What is needed to do it? 1.1. Raw bootrom image + packet driver -> cooked bootrom image. 1.2. Test1: can it find my server and connect to it? 1.3. Problems known to occur: "ROM overflow", no response from server, response usually (or always) from improper server. 1.4. Test2: can it boot from my server? 1.5. Some info on DOSGEN and NCPDISK (in diskutls.zip). 1.6. Making individual CONFIG.SYS for workstation. 1.7. State of the system after boot; cleanup. 2. DOS configuration for network boot. 2.1. NWBCOPY.SYS - copying files to RAMdrive. 2.2. MKCFGFIL.EXE - making configurations from common source. 2.3. MSDOS 6+ CONFIG.SYS menu commands. 2.4. Suggested CONFIG.SYS commands sequence. 1. Make and test bootrom image. 1.0. What is needed to do it? - the following my files: bootrom.zip, bootr-mk.zip, boot-emu.zip, bootprog.zip, cleanup.zip - dosgen.exe (mine is in diskutls.zip, can use Novell's) - a computer with a network card, and floppy drive or disk - a packet driver for the network card - a diskette for the floppy drive (unless disk is used) - NetWare 3 compatible file server, and write access to its SYS:LOGIN directory (ability to put files there) 1.1. Raw bootrom image + packet driver -> cooked bootrom image. Use bootrom.zip + packet driver + bootr-mk.zip; the first contains raw bootrom (w/ source - you can assemble it if you wish to change some defaults), the last contains a bootrom builder - it needs the following args when invoked: - name of file to write the bootrom image (binary) - name of file containing raw bootrom (w/o driver) - name of file containing the packet driver - name of server file to be read (in SYS:LOGIN directory) - choose some name, you will make the file later - and args for the driver - the bootrom is designed to use packet interrupt 0x65, at least this must be specified. Save the bootrom image written in this step. 1.2. Test1: can it find my server and connect to it? Test the bootrom image - boot-emu.zip contains a program named BS-SETUP and data files for it, run the program, and it will ask you which disk, and what bootrom image; it can setup DOS disk or floppy with 12-bit or 16-bit FAT, when the disk will be used for boot, there will be a choice to boot either from the bootrom image or from the disk (as it were unmodified); the bs-setup can be later used to remove (uninstall) it. When booting and choosing 'R' the following should happen: - a packet driver displays its stuff (usually a lot) - my code says "SAP Query..." (optional, and in latest only) - it displays name of a NetWare server found - and finally it says "Fail to open boot image file" (this is correct now since the file was not made yet) 1.3. Problems known to occur: - message "ROM overflow" when building bootrom image - driver too big for raw bootrom image - change the image (specify /DROMPAGES=value for assembly) or the driver - no server name displayed: check Ethernet frame definition - there are used Ethernet 802.3 an Ethernet II, in case of mismatch server ignores packets; usually packet driver option -n changes the frame on workstation side; default is Ethernet II for my bootrom which is recommended - there is an answer, but never from proper server - maybe your server has improper frame definition, while some other has proper - fix as in previous - other server may have smaller response time - in such a case you can put server name in bootrom image, using file name like \\server\file 1.4. Test: can it boot from my server? Put the boot program (bootprog.zip) on your server, and test again. It should say it has no configuration for your card. Make raw image of bootable floppy (Novell has DOSGEN for it, on Linux you can use 'dd' to copy floppy to a file, I wrote own programs: DOSGEN and NCPDISK - described in 1.5), put it in the server SYS:LOGIN directory, and put there a file NET$BOOT.DAT with line like 0x00123456789A=name-of-the-image (use your card Ethernet address after the 0x in teh line). Test again - the image should get booted. CAUTION: do not load network drivers at this stage. 1.5. Some info on DOSGEN and NCPDISK (in diskutls.zip). DOSGEN was written long time ago, it supports 12-bit FAT diskettes only, and copies diskette to a file until last used cluster, signalling unused clusters met during the copying. Oppositely to Novell's one, my DOSGEN handles subdirectories. I don't know what Novell's one does when it encounters unused cluster - maybe it behaves better. To make boot diskette image using DOSGEN do the following: - unpack DOSGEN.EXE (DOSGEN.ZIP in DISKUTLS.ZIP) - format a diskette with /S option - delete unnecessary file(s) (DRVSPACE.BIN) from it - write all needed files to it - type DOSGEN diskette_name: image_name - copy the image to proper place NCPDISK is newer, was tested with NetWare 3 only, and it is quite posible that it fails with newer NetWare client. If you have a file on NetWare server which is diskette image you can use NCPDISK to access files on it. Type NCPDISK A: filename and the NCPDISK will make the image accessible by INT 13 and invoke shell so you can run programs to change it. Later you can type "exit" to exist the shell and NCPDISK. It is even possible to FORMAT the "diskette", although some formats does not work correctly (a bug of NCPDISK), and it has a disadvantage of creating a file of maximum size for the diskette format used. A collection of empty images with MS-DOS 5+ boot sector is in EMPTY.ARJ or EMPTY.ZIP - there are images for 160, 180, 320, 360, 720, 1440 kB diskettes. To make boot diskette image using NCPDISK do the following: - unpack NCPDISK.COM (NCPDISK2.ZIP in DISKUTLS.ZIP), and empty image from EMPTY.ZIP (or .ARJ) of proper size - type NCPDISK A: image_name - type SYS A: (maybe you need tell SYS where to get DOS from) - delete unnecessary file(s) (DRVSPACE.BIN) from A: - write all needed files to A: - type EXIT - copy the image to proper place NCPDISK has yet another problem: it does not distinguish servers, and if you are using many servers you must make sure the default server is always this which has the image file - or request can be send to other server, and modify other file if it accidentally has the same handle! It means if you have image on server A and a file to copy to it on B, and you use Norton Commander, you must first copy the file to server A, then to "diskette" - this way the server A is default one when you are writing to the "diskette". On Linux there is a loop device (see man losetup for more info), which can be used for something similar to NCPDISK, except loop device can only modify the diskette image, it cannot extend it in case more disk space is needed - you can extend the image manually by command like: head -c byte_count_to_add < /dev/zero >> image These programs can also be used to remove unused clusters from diskette image: use NCPDISK to access the image, sort the "diskette" by some "speeddisk" utility, then use DOSGEN to create new image. Don't forget to backup original image! 1.6. Making individual CONFIG.SYS for workstation. To set CONFIG.SYS for it: the floppy image must contain CONFIG.SYS at least as large as maximum you will use, and NET$BOOT.DAT line must contain +config-sys-name after the name-of-the-image - the file config-sys-name will be used instead the CONFIG.SYS from the floppy image. DO NOT spend too much time tuning your configurations now. 1.7. State of the system after boot; cleanup. When the DOS boots, it sees the image (optionally with replaced CONFIG.SYS - it is showed by DIR as on the floppy but it has contents of the file config-sys-name - this is why the CONFIG.SYS size is important); this access to the image occupies 81kB RAM, and should be terminated when possible (anyway it will be lost when any driver for your network adapter is loaded, so be careful about it). To free the 81kB use CLEANUP.COM which is in cleanup.zip. 2. DOS configuration for network boot. Almost surely you will need some RAMdrive to hold programs between terminating the access to the image, and loading drivers and other software to access files via the network. There are few utilities in bootutls.zip to help this task. 2.1. NWBCOPY.SYS - copying files to RAMdrive. When need to copy files to the RAMdrive, you may use - by CONFIG.SYS DEVICE= command - NWBCOPY.SYS to do it. It can set default drive to the RAMdrive, and copy files either from A:, or from SYS:LOGIN (use $: as drive name for it). And it can make directories, and few other useful things: cleanup, display comment, sleep, append line to batch (it can be used to put in batch file SET RAMDRIVE=X:, where X is ramdrive name - useful for booting a workstation with removable hard disk, or use same configuration for diskless workstations and these which have harddisk). Read NWBCOPY.DOC for more details on its parameters. 2.2. MKCFGFIL.EXE - making configurations from common source. The source consists of three types of lines: - configuration definition: number=cfgname=value(s) name=val cfgname and other values become positional parameters, and the name (or more names, separate them by blanks) become named parameters, they all can be called in config files by $(number) (number 1 = cfgname) or $(name) - file definition: number(s) >filename if number of current configuration is in the set of these numbers, the file is created (or appended to, if exists) - line definition: number(s)