Netbooting without a network interface
I remember the first time I discovered the option in a PC BIOS to boot from LAN. I was very excited because to me it meant that I could finally do something with a PC that I had been doing with NeXT computers for a long time. Of course the first time I tried it I was immediately disappointed. It turned out that the built-in BIOS on computers had no idea how to talk to a random network interface card that had been installed in a slot. I did a little research and found out that you had to install a special ROM on the card, and if you could get one it would do some bizarre protocol that wasn't particularly useful.
Even after network interfaces started to be integrated into the motherboards it was a long time before netbooting worked. It wasn't until they finally standardized on the PXE protocol that it really became useful. These days I boot computers over PXE to do installations far more than I boot from USB or disk.
Last night I was putting together an ancient Duron (Pentium III era) to use as a sort of serial hub for my growing retro computer collection. I chose it because it has an ancient ISA slot and I have several Boca 16 port serial cards which are ISA. The battery had died long ago so I had to go into the BIOS and reset everything. I saw that it had the boot from LAN option in the BIOS when I was setting up the boot order. When I opened up the PC I discovered it had a network card in it with an empty socket. Since these days I know how to burn EPROMs and I've used the Etherboot project on a floppy a few times, I thought I would finally try sticking a netboot ROM on a card and seeing if it would really work!
First lesson learned: don't immediately go to ROM-o-matic and download a ROM and burn it to a chip. Instead get a floppy image for your card and see if it will even work. Why? Because of course it's not going to be easy and just work when you stick the ROM on the card!
After I burned the ROM for the 3C900 card, I was surprised to see the computer load the gPXE boot loader. I had expected it to completely ignore it for one reason or another. Unfortunately, it didn't quite work. It just hung after printing the gPXE load message.
I dug around in my box of cards and found another card with a socket on it, one of my precious† cards with a DEC 21x4x chip on it. I did the same thing and burned a ROM, and this time it didn't hang, but it was unable to initialize the network card properly. Nothing but timeouts and no green link light on the card or the switch it was connected to. The card definitely works because when booted into Windows I get the link lights and can get on the network just fine.
More digging and I found some really old 10baseT cards that didn't seem worth the trouble trying. I did however find a Netgear card that had a place for a socket, but the socket hadn't been installed. This time around I grabbed the gPXE boot floppy image and saw that it was able to do a PXE boot successfully. I got out the solder sucker, cleaned out the holes, put on a socket, installed a ROM, and booted it up. Nothing. Turns out there were more parts left off than just the socket that were required to make a ROM work.
Still determined to make it work, I found yet another Netgear card. I examined it more closely this time to see if there were other parts needed and it looked like the only thing missing was the socket. I tried it out with the floppy and it worked. It needed a 32 pin socket though and I didn't think I had any. I did manage to find a really banged up one that had come from a grab bag from Jameco a long time ago. I fired up the soldering iron and solder sucker and cleaned out the holes. All the pins on the socket were bent, and I carefully straightened them.
This time around it worked! It was far more work than I expected going through so many cards to find one that I could use, but I'm actually really happy that I got it to work. It means I can install an OS without having to SneakerNet™ USB sticks or CDs or floppies over. And in this case I'm going to run it without a hard drive since it will make it much quieter.
† I still hoard DEC 21x4x cards because they were one of the few that would work with the Intel x86 version of NeXTSTEP.
+1 Posted by Jac Goudsmit • Nov.10.2013 at 19.02 • Reply
I don't know if it matters, but I've had good luck booting Intel Pro/100 (compatible) cards using on-board PXE ROMs. They are available in many different versions. The nice thing about them is that they are EEPROMS so even if you can't get them to boot, you can update them to a firmware version ("boot agent") that does. I used them intensively with Windows Remote Installation Services (RIS) in the days of Windows Server 2003, to quickly reinstall Windows (XP) on 20+ machines in a software test lab. I imagine things have changed a lot (RIS is no longer supported I think, and there is a Windows Automated Installation Kit now), and I understand that you're doing something completely different, but I thought I should mention it. I don't work for Intel or Microsoft by the way :-)
+1 Posted by Art Johnson • Nov.18.2015 at 15.18 • Reply
Interesting article. I've been wondering about these 'empty' slots on the card and knew it was for booting, however I thought it was for companies requesting a customized network/protocol of some sort and had to contact the NIC card company to get it customized for their network..
I never got any of mine to work so kudos! Be nice if I can place my 'static' network inside one of these things, but what use would that really be, seeing Linux handles all that anyway?