First post, by davidrg
Recently I've been playing a lot with networking old PCs (DOS 3.2+, OS/2 1.3+, Windows 3.x, 9x, NT 3.5-XP) using NetWare and, briefly so far, a NetWare Emulator (Mars NWE - same kind of thing as Samba). I use NetWare currently because I like it and because the 32bit DOS client only uses 4KB of conventional memory if it can't automatically load high so I'm fine to have the network client always loaded. Plus its something a bit different from the usual Windows NT / Samba / FTP.
Lately I've been exploring something I've never done before: network booting. I don't have any particular use for running diskless PCs - this is really just for fun and learning. I've posted a few screenshots of this over on the What retro activity did you get up to today? and it was suggested I make a thread so some of this info isn't buried. So here are a few notes (mostly what I posted over there) plus links to some more in-depth notes I've been making while exploring. A few weeks ago I did MS-DOS, perhaps in a few weeks I'll attempt OS/2, but right now I'm playing with diskless Windows 95:
(the floppy drive pictured isn't actually there, the drive is unplugged and the floppy controller disabled in the BIOS and yet it shows in windows regardless)
Network Cards and Boot ROMs
For network booting you need a network card with a Boot ROM installed. Boot ROMs are specific to at a minimum the ethernet chip used, if not the model of card, as the Boot ROM needs to contain enough of a network driver to send out packets to download a floppy disk image. Boot ROMs were usually an optional (paid-for) extra and some companies such as LanWorks made a business out of selling Ethernet Boot ROMs for a variety of cards.
Finding cards with a boot ROM is probably fairly hard today - for most people the Boot ROM would just be this annoying thing that slows down starting from a hard disk (or even prevents it all together). Thankfully Realtek and AMD at least provided boot ROM images for download - if you've got a compatible card all you need is an EPROM and an EPROM Programmer. I've started making a list of boot ROMs as I find them over here and I've tried the AMD PCnet one with VirtualBox (works fine). I've not yet managed to get the Realtek ones working with 86box. For Windows 95 however I'm using real hardware - a 133MHz Pentium with 64MB of RAM and a LanWorks BootWare ROM installed in an SMC EtherEZ (8416) NIC.
Boot Protocols & Server Software
A Boot ROM on its own won't do much without a server for it to talk to. There are a few protocols Boot ROMs used in the 80s and 90s which will affect what server software can be used:
- Novell IPX: This is the oldest you'll probably see and its what the original Novell Ethernet cards (eg, NE2000) use as well as at least some BootWare ROMs. This firmware includes an IPX stack and a NetWare client - the boot rom broadcasts a find nearest server packet, connects to the nearest NetWare server and downloads SYS:LOGIN\NET$DOS.SYS. For these ROMs you'll need either NetWare or something that looks close enough - like Personal NetWare. Mars NWE and Microsoft File & Print Services for NetWare would probably work too.
- RPL: Originally an IBM thing. Windows NT, NetWare and Personal NetWare support this and there is an implementation for Linux too. In the mid-90s Novell provided a Boot ROM that manufacturers could combine with their network drivers (NetWare Ready Firmware) which is what the AMD and Realtek ROMs use (probably why they're able to provide them for download - no royalties to pay). The Novell RPL Boot ROMs support multiple images when booting from a NetWare server - you get a list of disk images to pick from on startup.
- PXE: This is the one used today. It works over TCP/IP. Retro systems likely won't support this so I've not bothered with it.
Booting DOS is pretty trivial. The basic process is:
- Make sure your server is configured for the boot protocol in use. For NetWare and RPL that means setting up the RPL server. For NetWare and the old-style IPX Boot ROMs there is nothing to do.
- Create a network boot floppy. When you boot from this disk it should automatically start your network client (Novell NETX or VLM client for NetWare, or the Microsoft LanMan/SMB client for Windows Networking/Samba) and be ready to login
- Image the floppy disk and put it in the right place on the server. For NetWare this means running the DOSGEN utility and copying the resulting NET$DOS.SYS disk image over to SYS:LOGIN\
The server will then hand this network boot floppy image to network booting systems where it becomes a temporary A drive. Once the network client has started up and taken over control of the network card the boot image disappears and all further startup has to be done over the network. I've made a pile of screenshots showing the full process using NetWare 4.11 - Windows NT should be broadly similar. You've got to do all the same kinds of things, you'll just use more GUI to do them.
Windows 95 is another matter. The overall process is more complex and poorly documented. To start with you need the original retail or Service Pack 1 (95A) release - Windows 95B (OSR2/2.5) is not supported (nor is Windows 98). 32bit (PCI, MCA, EISA) and Plug'n'Play network adapters are also not supported, officially you need an ISA NIC. LanWorks does provide a workaround (near the bottom of the page). I don't know if this workaround is specific to LanWorks boot ROMs or if it works for PCI NICs in general.
The process for getting all this going is a bit more involved than simply making a bootable floppy disk but it is at least mostly GUI-driven even when you're using NetWare. I've made a pile of screenshots and notes notes showing the process getting it going. I expect the experience doing this with Windows NT 4.0 is probably pretty similar.
Actually booting to the desktop required a lot of trial & error. The documentation isn't great and there are bugs that never got fixed. The installer sometimes for reasons unknown to me didn't generate the network boot image. The program that finds the machine directory and loads the registry can emit a selection of undocumented and unhelpful error messages. Now I've got one last mysterious problem: Windows really wants a floppy drive on first boot and the machine I'm doing this on has a faulty floppy drive which is causing problems. Windows is only trying to copy a bunch of network bits to the floppy drive and I'm not really sure why - all the stuff its copying is already on the remote boot disk image. I guess windows thinks its being floppy booted? I'm not currently sure how to get around this besides giving it what it wants - a floppy disk in a floppy drive it can write some garbage to. The floppy drive can be removed once its booted to the desktop for the first time so its not a big deal (or wouldn't be if I had a working floppy drive handy).
Once its up and running performance is surprisingly good. I was expecting it to be obviously slow - especially with a 10Mbps NIC but it doesn't really seem much slower than running from a local disk. Booting takes about 24 seconds from "Starting Windows 95..." to the GUI and another 10 seconds to the desktop (most of which is it running my huge login script). The 64MB of RAM in my test machine probably helps quite a lot - I expect it will get a lot slower if it has to start using the network swap file. Actually running windows 95 diskless is a bit odd. There is no GUI login screen - you get a text-mode login about half-way through windows startup. The splash screen disappears, you login, and the splash screen comes back. When the GUI appears the login script runs to map drives, etc. To log off you've got to reboot. There is also no way to shut-down the system - when you try instead of getting the "now it is safe to turn off your PC" screen the computer just reboots.
Next up I might try removing half the RAM and installing Microsoft Office or Visual C++ to see what its performance is really like - wordpad isn't exactly much of a stress test! It should also let me see just how easy (or hard) it is to install stuff in this kind of setup. I've read already that Internet Explorer 4.0 will not install (possibly why OSR2/2.5 isn't supported) and I imagine a lot of other things may struggle with there being no C drive.
Other Notes - DOS Networking & NetWare
As I've been going through exploring NetWare I've been making a lot of notes and taking a lot of screenshots as it will probably be a long time before I go through doing a lot of this stuff again. A few of the potentially more interesting topics are:
- Turns out Windows 95 has a built in netware server! here are some screenshots. It doesn't work particularly well but its existence is surprising.
- Mars NWE notes - Works with all NetWare clients (except MacOS), lets a linux PC pretend to be a NetWare server.
- Using mTCP and other packet driver software alongside the NetWare client (the netware client does have a TCP/IP stack but not a lot of software supports it)
- Using Windows file sharing (WFW 3.11) alongside the 32bit DOS NetWare Client (Client32)
- If you ever wanted to know what setting up NetWare looks like: screenshots of the whole process for NetWare 4.11 and NetWare 3.12