How useful is PXE booting?

How fast is booting over PXE?. Is it conceivable to boot a linux installation? Does it take a long time? I have never really looked into it at all, but I was considering setting up a compiler farm and thought this might be interesting to try.

Does one have a main computer that the PXE answers to to get its image? Can you have multiple PXE images to pick from?

Thanks!


PXE booting is awesome. I manage a cluster of about 20 physical machines that are located on the opposite side of the globe, and they're all installed automatically without any physical intervention from anyone at the DC. I couldn't do my job nearly so well without PXE booting -- all the other remote installation options (virtual media, getting a DC tech to shuffle CDs, whatever) are very poor substitutes.

To answer your specific questions:

  1. "Does it take a long time?" If you mean install time, it takes less than 10 minutes to go from "burnt-in" to "booted into the installed OS". In terms of setting things up, it'll take a while the first time, but I've got it all automated so a new PXE server can be installed all by itself if I need it.
  2. "Does one have a main computer?" Yes, the PXE system relies on you having a server (which I call the "Gold" server, based on the nomenclature and concepts at http://infrastructures.org/) that instructs PXE clients what to do. In theory you can have several servers which contain different images, but I've yet to exercise that functionality, and I expect it would be a lot more complexity than it's worth in a greenfields installation.
  3. "Can you have multiple PXE images to choose from?" Yes, I use this functionality heavily to do my burn-ins -- all machines start with a memtest boot option, then when they've passed that I toggle a flag in the build system and reboot, and they get the burnin boot image. When they pass that, another flag gets toggled and they install. One more flag toggle and they'll boot off the local disks (and hence locally installed OS) from then on. All this decision making is based on the MAC address of the machine. For our general-purpose infrastructure at work (a couple of hundred physical machines) we also use this to perform the installs of client machines -- we've got PXE images of most Fedora/RHEL/CentOS/Ubuntu/Debian versions for customers to choose from.

PXE is FAST, assuming you aren't in the stone age using 10BASET. With gigabit being the standard, I don't think you should notice any sort of slowdowns.

Yes you need 1 computer to house the information for all the boot images, and optionally even the mount points for the OS. Linux does support having its mount points on remote servers, which generally most people would agree to use NFS for.

If you are running Windows then a good program to use for PXE booting is: http://tftpd32.jounin.net/

You can then use some flavor from the syslinux project as the PXE image and from that you can boot floppys, CDROMs, ect.

If you want to run a Linux host, then you will need to configure at a minimal:

  • DHCP server with the PXE boot image option set
  • TFTP server

It would be recommended that you also have DNS services running, but its not required to PXE boot. I personally use TFTPD32 to PXE boot a computer whenever I need to ghost that machine with Symantec Ghost.


PXE is very fast and very useful. We installed thousands of machines here with a PXE boot, using Debian's FAI, Kickstart and a modified BSD installer. It's definitely one of the easiest ways to install machines, especially when you need automated installations.

I've installed my last two personal boxes with PXE. It's especially useful with netbooks, since they don't have an optical drive, and I am quite reluctant to use a USB key to install my system when the network is quite fast.

I've also used PXE boot with LTSP (in Edubuntu), which allowed to set a park of think clients for a group of children in a very short time, just plugging old machines to the network and booting them so they would get their system from the PXE/DHCP/NFS server.

As suggested already, if you want to set a farm of servers, I would really recommend that you use a PXE installation system together with a class-based network installer (such as FAI or kickstart) and finish the installation of the machines by plugging them to a configuration manager such as Puppet or Cfengine.


http://embraceubuntu.com/2007/02/21/ubuntu-draft-available-on-tap/


Anywhere you have situation where you will want to add servers as you go, having a PXE infrastructure set up is so worth it. And it's really not that much overhead, as other people have written alread: it's basically setting a pair of flags in the DHCP server, adding a TFTP server.

Two other things which usually turns out to be very practical are:

  • Create a PXE boot menu with options for different OS installers and/or auto-installers
  • Set up a network bootable live-CD rescue system such as Parted Magic. It's da bomb when, for example, someone comes to you with a failing laptop computer, without optical drive, and with some strange 1.8" HD - and all you want to do is rescue the data off from it. :-)