Novell RPL Boot under VirtualBox

One of my recent retrocomputing projects was to set up a Novell NetWare 4.11 server and boot clients from it. Remote boot, or Remote Initial Program Load, was a common method for booting network clients over the LAN before IP became commonplace.

RPL requires a boot ROM on the network card which finds a nearby server, connects to it and downloads a disk image which it then executes. By today’s standards, it’s trivial – but by late 1990s standards, it was anything but.

Skipping past the reminiscing, I spent a few hours trying to get VirtualBox to do RPL boot. Etherboot doesn’t appear to support RPL, so I tracked down a ROM image on Intel’s website. Intel deprecated RPL around 2005, but they’ve kept an old version of their drivers available which contains a boot ROM image supporting RPL.

After uncompressing the download with 7z (using 7z x PRORPL.exe), I was left with two interesting looking files with the extension FLB. One of these is 63,488 bytes, and the other is 139,264 bytes. Installing these in a VirtualBox machine is straightforward but unfortunately undocumented:

vboxmanage setextradata "vmName" VBoxInternal/Devices/pcbios/0/Config/LanBootRom romLocation

Configuring the virtual machine to use the smaller of the two image was fruitless – VirtualBox didn’t complain at all, but instead ran ‘default’ iPXE code. Only when looking in the Log Viewer did I see a reference to the ROM filename and a strange error such as rc=VERR_TOO_MUCH_DATA.

Trial and error showed that the ROM size must be a few kilobytes below the 64kb limit, and a couple more hours searching uncovered AMD’s website which has a file named "Generic BootRom Utility" which contains a 16kb file, RBOOT.ROM, which is a working RPL boot ROM for AMD PCnet network cards, including the PCnet-FAST III card in my virtual machine.

Re-running the vboxmanage command above with the path to the newly discovered boot ROM works a treat. I can now boot a virtual machine straight off a virtual NetWare server – the details of how to do that are coming in a future blog post.

Retrocomputing

And so, dusting off my knowledge of Novell Netware from years ago, I started to install NetWare 4.11 in VirtualBox.

Apparently this doesn’t work, but with some hackery thus, it’s fine:

1. Copy all the files off the installation CD in to a directory
2. Download updated NetWare ATA drivers with UDMA support
3. Assuming you unpacked the ZIP file above to /tmp/a, and the contents of the installation CD are in the current directory, do:

cp /tmp/a/NW3X-4X/NBI.NLM ./products/nw411/_/411/syspre/nbi.nlm
cp /tmp/a/NW3X-4X/NBI.NLM ./products/nw411/_/411/boot/nbi.nlm
cp /tmp/a/NW3X-4X/NWPALOAD.NLM ./products/nw411/ibm/411/diskdrv/nwpaload.nlm
cp /tmp/a/NW3X-4X/NWPA.NLM ./products/nw411/ibm/411/diskdrv/nwpa.nlm
cp /tmp/a/IDEATA.HAM ./products/nw411/ibm/411/diskdrv/ideata.ham
cp /tmp/a/IDEATA.DDI ./products/nw411/ibm/411/diskdrv/ideata.ddi
cp /tmp/a/IDECD.CDM ./products/nw411/ibm/411/diskdrv/idecd.cdm
cp /tmp/a/IDECD.DDI ./products/nw411/ibm/411/diskdrv/idecd.ddi
cp /tmp/a/IDEHD.CDM ./products/nw411/ibm/411/diskdrv/idehd.cdm
cp /tmp/a/IDEHD.DDI ./products/nw411/ibm/411/diskdrv/idehd.ddi

This will update the drivers on the installation CD with those supporting UDMA.
4. Create an ISO image of these files using “mkisofs -D -l . > ../netware411-patched.iso”
5. Install the server. INSTALL.NLM will throw up some errors, and you will need to enter slot 10002 for the IDEATA Disk Driver, but other than that, it’s fine.

Now if you’ll excuse me, I’m off to install Word 6 :-)