PXEboot
PXEboot allows you to boot a system from its network card. It loads an operating system from a PXEboot server.
I use it when I want to install a Linux distrubution on a system that does not have a CDROM drive available such as my Via EPIA 800. I set it up to run Debian using this method.
I also use it as a rescue/recovery method for remote servers. Instead of having a support person sit on the phone with me while I give them endlessly detailed instructions spelling out the commands one letter at a time, I can say this: "Please push the reset button on server #4. Thanks!"
What happens when you PXEboot
- The client starts a loader from the network card boot rom.
- The boot rom broadcasts a request for network information via DHCP.
- The DHCP information instructs the boot rom to load and execute a file via TFTP, typically called "pxelinux.0"
- The pxelinux.0 file instructs the client what to do next; typically to load a file via tftp from pxelinux.cfg/* where * is either a piece of its MAC address or 'default' (which is what I use). It tries the MAC approach first and if it fails to find any matches, it uses 'default'.
- Typically the 'default' file starts a bootloader (such as syslinux) and gives you a menu. You select an option or hit Enter to accept the default. 'Default' is a text file you can easily customize.
- Default tells the system which kernel to use, and kernel options. This initiates a standard Linux boot.
Hardware requirements for PXEboot
The system has to support network booting at the BIOS level.
Recent PC's (especially with the network interface on the motherboard) support PXEboot right out of the box. Mamy of computers I work with are not 'recent. They have ethernet on a PCI card. Furthermore, most of the ethernet cards that I own don't have support for PXEboot, either.
3COM cards support PXEboot. Look at yours. Is there a big empty socket? Is there a n empty set of pads where a chip could be soldered on? Most of the cards I have from 3COM fall into one of these two categories. It means that there is no boot rom on board and the board cannot be used for PXEboot. I have one 3COM card that works. In theory you can obtain the chip and plug it in, In practice it's not worth the effort.
Everyone is currently upgrading from 100BT to 1000BT so there is a huge supply of cheap perfectly usable 100BT equipment on Ebay.
I bought a lot of 5 Intel EtherPro 100 cards from Ebay for $15 including shipping.
Read up on how your network performance is suffering due to cheap network cards, then do what I did. Pony up $3/computer and throw away all those old noncompliant crappy old network cards.
BIOS Setup
Some systems have only a boot option called "LAN" or "Network". One of my systems (Intel SE440 BX2) probes for the boot rom on any network cards and they show up as options like "UNDI slot 0"
Put the appropriate boot option at the top of the list so that PXEboot takes precendence over the hard drive and CDROM drive.
Put a separate setting for each client system into dhcpd.conf. Enable PXEboot in DHCP for the client when you need it to boot from PXE and disable when you need to boot from hard drive or CDROM. When the system comes up, it will try PXEboot and then continue on. This makes booting take a few second longer, but gives you the option to get it to boot even when it is headless or remotely located.
PXEboot server on Debian
Install and configure these packages
dhcp server: dhcp3-server
tftp server: tftpd or tftpd-hpa
The version in the tftpd package runs only from inetd, so configure it in /etc/inetd.conf The tftpd-hpa version runs either as inetd or as a standalone daemon. This is the version that I prefer.
tftp client: tftp-hpa useful for testing the server
Configuration
TFTP
I run tftpd from inetd. After installing it, you must uncomment the appropriate line in /etc/inetd.conf, and then restart inetd so that tftpd becomes available.
DHCP
Generally I put a configuration for each machine into /etc/dhcp3/dhcpd.conf so that I have control over what happens when a given machine connects. The critical lines to add to dhcpd.conf are
host clientname { hardware ethernet mac-address; fixed-address ip address of your choosing;
# Uncomment next two lines to boot from network. next-server 192.168.123.130; # Ip address of TFTP server filename "pxelinux.0"; # name of file to load from TFTP server }
This tells the client what file to grab via tftp. The files for tftp should be installed in /var/lib/tftpboot (see comment above on symlinks)
Network boot installer
Many Linux distributions (including Redhat, Debian, Trustix, Ubuntu, and SuSe) have network install support. You just have to poke around to find the files.
For example, to install Debian on the client, you poke around in the Debian FTP archives until you find netboot.tgz. Download it and unpack it in your /var/lib/tftpboot directory. Then make symlinks from /var/lib/tftpboot/pxelinux.0 and pxelinux.cfg to the real ones lurk in the debian_installer tree. That's it.
When you boot a client, it will get an IP address from the DHCP server and find the other TFTP settings. Then it will use those settings to download the pxelinux.0 file and run it. That file will tell the client to get and load a boot loader which in turn will load and start Linux on the client.
Booting the client
Set the client to boot from LAN or Network. Then boot it. If you are near the client and can look at the console,
- you should see the "UNDI" boot stuff. Notably you should see the client get the IP address that you set up for it in dhcpd.conf.
- next you should see it connect to the tftp server. It will show a series lines as it tries to find a pxelinux.cfg file; it will uses its MAC address piece by piece and then give up and load pxelinux.cfg/default
- if the pxelinux.cfg loads then it should fire up the installer and from then on, the screens are what you'd see if you booted from a cdrom.
System Rescue mode
But wait! I want to do a remote bare metal rescue mode!
Currently I have to instruct someone to push the "magic cd" into the computer and reboot it. This taxes everyone's patience because later I have to call them and ask them to remove it and stand by to see if the system will reboot correctly. The "magic cd" is a customized version of SystemRescueCD with ssh enabled on it and a root password of my choosing stored in it.
The SystemRescueCD project has died by the way. So it's only a matter of time until we cannot use the magic disk anymore. Look at FrozenTech for alternatives.
Olive looks like fun.
I want PXEboot into the SystemRescue tool kit and I want the result to have a serial console. I use a serial console. This is set up already. I just want to ask someone to push the reset button (or automate that too someday) and have the system come up. In theory I can just ssh in once the system pxeboots; I know it has a functional network card if it pxebooted, right? But I want it anyway. I am not guaranteed that the operating system will be able to find the network card after the kernel loads, now am I?
Then I can control whether it boots from network or not by modifying my dhcp server settings. If I uncomment the 'file' line it netboots, otherwise it boots from its own hard drive. If this works well enough I might quit having anything boot from a hard drive ever again! :-)
So how about a Debian diskless/NFS installation?
http://homex.subnet.at/~max/diskless/index.php
Make the server do NFS. Apply appropriate security measures, I choose to use the nfs-kernel-server package.
I intend to work with the 2.6.8-3 kernel since that's what I get in the current Debian stable release for a 2.6 kernel. I have a VMware machine running with it for development and test purposes.
The initrd image has to have the nfs pieces added to it so it can mount root via nfs.
nfs lockd sunrpc af_packet
Be sure to check nfsboot.txt in /usr/src/linux/Documentation.
See "Rescue is possible" PXEboot version http://www.tux.org/pub/people/kent-robotti/looplinux/rip/
More information
General information on PXEboot for Linux
Related systems
LinBox is a complete system for backup and bare metal restores of systems
Damn Small Linux is based on Knoppix and can be upgraded to Debian
[RIP] aka "Recovery Is Possible" is based on Slackware. There are CD and PXE versions. It uses the latest kernel.