The World of PXE Booting

Well, it's been quite some time since I've posted here (almost 2 months is quite some time in my book). For those of you who are wondering, no, I didn't become re-addicted to Minecraft, regardless of how similar this 2 month hiatus is from the one that occurred last year around this time. The fact of the matter is that I'm still finishing up school, and this time of the year is always busy between working 20 hours a week, going to school full time, and being very active in several organizations on campus, I simply run out of time quite quickly.

Well the good news is I'm finally caught up on all of the crap I needed to be, and perhaps none too soon! Especially with some Ice Cream Sandwich love being given by Google this week! (No, I haven't synced it yet or had a chance to begin digging through it yet, but will be soon).

Because ICS was released this week and the blogosphere is all a twitter with comments and speculations about devices having it ported to them, I've decided instead of commenting about Android in this post I will leave that for later and instead post about something fun that I set up the other day: A PXE bootable home network!

What is PXE booting?

In some situations, it is desired to have the ability to boot a system off of a network. One perfect example is a situation where you have one or more diskless computers that you want to use. A diskless system has no hard drive (disk-less), and thus can't store its data anywhere between boots. So how do we get around that? We use PXE.


With PXE, when a system boots up, it will ping the network for an address. The DHCP server that assigns the system an IP then sends it the location of a PXE server on the network. The system then downloads the necessary files to boot itself from that PXE server.

Why is it awesome?

PXE is awesome because it opens up a realm of possibilities for managing multiple systems and bootable images over a network. You can use it to set up diskless nodes for cluster computing, or do something much simpler (like I have done), and set up a Linux LiveCD image to boot over PXE, removing the need to ever have a LiveCD or LiveUSB on hand when you need to perform rescue operations.

This is I have set up. My current home network will now PXE boot any x86 device into a Gentoo Linux minimal installation CD. It does this by first using PXE to load GRUB2 onto the device that is booting, and then using GRUB2 to load the kernel and initial ramdisk for the LiveCD. From there the LiveCD is mounted over NFS, cached into RAM, and then unmounted, leaving the device booted into a complete Gentoo Linux minimal install CD environment without the need for an actual CD or USB device, or even a need to be connected to the network anymore after booting, since the whole OS is cached into RAM at that point.

How to do it?

I have taken the time to write up a howto in the Projects section of this site. It describes the tools used as well as the entire process of setting up a PXE server to boot a Gentoo install CD.

For the purposes of my howto I used Gentoo (since it is what I was booting and also what I had on hand), but the instructions should apply to any Linux distribution, though you may have to look up some of the equivalent commands for installing and running TFTP and NFS.

The project page can be found here: Gentoo PXE Setup.

If anyone notices that I'm missing anything, please leave a comment below so I can update the project page. I wrote the whole thing from memory.


PXE booting: it is awesome

Info on how to do it can be found on its projects page.


blog/2011-11-16/the_world_of_pxe_booting.txt · Last modified: 2014/05/13 12:36 (external edit)

Hosted on Microsoft Azure Powered by PHP Driven by DokuWiki RSS Feed

© 2011 Austen Dicken |