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.
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. There isn’t much demand for RPL and Intel deprecated it in 2005. Luckily, they’ve kept an old version of their drivers available which contains a boot ROM image supporting RPL.
The executable, PRORPL.EXE, will uncompress using 7z and produce 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
After booting the virtual machine from cold, VirtualBox didn’t complain, but also didn’t use the ROM. Looking in the Log Viewer showed the vague message rc=VERR_TOO_MUCH_DATA.
The vital piece of information I forgot is that boot ROMs must be smaller than 64 kilobytes. The Intel image is very close to that size. Back to the drawing board!
With some further searching, I found a Generic BootRom Utility on AMD’s website which contains a 16kb file. This file, RBOOT.ROM, is a working RPL boot ROM for AMD PCnet network cards. Coincidentally, the VirtualBox machine I’m using has an AMD PCnet-FAST III card. Result!
Re-running the vboxmanage command above with the path to the newly discovered boot ROM works a treat. I can boot a virtual machine straight off a virtual Novell NetWare server. By today’s standards, the process is quite cumbersome but I’ll leave a description of that for another time.