PXE Boot OS and configuration

Our systems install via PXE boot whenever possible. Much faster than DVD/CD, floppies and alike. I have been fighting with PXELINUX (part of the excellent SYSLINUX package of boot loaders with menus) trying to get it working the way I want it to. This is important for JackRabbit and our compute clusters.

Of course I was using the native SYSLINUX package, something around version 2.09 or something like that.
I had pxegrub loading, but then it would basically hang while working with the network. Well, not hang, but largely come to a grinding halt … with an occasional packet every now and then.
This is frustrating, as I really want a single unified menu using grub to handle local and remote loads, booting, and diagnostics. From what I can see grub is not up to the task. Or put more correctly, pxegrub is not up to the task. It would be nice if grub were up to the task, but alas, again it is not. Grub, or more correctly grub-legacy has been stuck in limbo since 2005-ish, with new development going on for Grub2. Looking over the project pages for grub2, I am not sure that it is ready for prime time.
So, we write grub off. Hopefully someone will either revive that project or a better one will come along and replace it.
Unfortunately, in writing grub off, we have to think about the potential impact upon our clusters, compute and storage. How do we present a single menu to the end user? The Syslinux 2.09 package didn’t have that capability. So we started looking at doing a diskless boot and then reconfiguring the boot loader based upon menu choices. A little hackish, but workable.
Unfortunately setting up Linux to diskless boot was not as easy as I had hoped. Still working on it, but we should have what we need together soon. This is helpful in diagnostic mode. Think of something like booting pxeknife/UBCD via PXE, as well as other tools.
So looking over the syslinux, I noticed on pxelinux, all these new menu.c32 type things in the boot directory. Some googling and …
… sonofagun …
Modern syslinux (3.36 I think) does what I want. No changes to the menus, and the menus can be nested, and somewhat complex.
All righty then … We might still be able to have one base menu for all units. This is goodness.
With this set up, we will work on NFS, iSCSI, AoE, and other booting (can we boot over CIFS, or even better, can we boot Windows images?)

3 thoughts on “PXE Boot OS and configuration”

  1. Not sure if this is what you’re referring to but you can of course map CIFS via a DOS network client disk. 3Com’s UNDI driver handles this fairly well though I am suspect of the ‘Universal’ part of its UNDI driver (it hasn’t worked on several NICs for me, esp. Broadcom). Intel apparently has an UNDI driver for DOS which may be more compatible than 3Com’s though it’s very hard to find this driver which is a part of Intel’s (now old) PXE 2.0 SDK. Either way these UNDI drivers are very old.
    You can emulate RIS in Linux or other UNIX like platforms and thereby boot Windows however it really doesn’t work very well in my experience and it’s a real nightmare to setup and manage properly.
    You can generate an SDI image use the XP embedded tools and boot off that to get a netbootable WinPE environment and proceed with an install from there. As images can be in the 150MB+ range, it will take some time to boot but even then it’s pretty fast. A description on how to do this is here:
    I took a very different approach when I built an automated OS deployment solution for Windows: Boot into a Linux environment, create FAT32 partitions from there, copy over the Windows install files from a location on the network (via rsync), copy over an unattended answer file from a web location and then reboot on to a FreeDOS boot disk that is running from this FAT32 partition which in turn runs winnt.exe and the answer file. The Windows image that is copied over is managed by the user via Nlite or whatever tools one might use to add driver support, SPs, hotfixes etc. to your standard Windows image(s). Because of the complexity of trying to manage an emulated RIS environment inside Linux and the difficulty of managing a ton of DOS boot images (a la Unattended) this was actually the easiest approach I found. XPe SDI images are somewhat difficult to create but I didn’t see how I could easily slipstream answer files into them easily from Linux (if it’s possible at all).

  2. For the Linux side, our installs work great, and I am working on the diskless versions to keep them lean and fast. The windows side is what is troubling. I don’t want to install windows on each machine, I want to create a “golden” image, and boot from that. In the Linux case, we will be doing a minimal local install, and mostly running diskless. Would like to do that with windows. I understand running windows diskless is kinda hard. Running it over iSCSI is fine, and I see a boot manager that handles that.

  3. I am a complete newbie to diskless booting, I have managed to set up a Redhat 7.2 server as a pxe boot server booting to a dos floppy image created using rawwritewin. However after reading all this I am going to try to automatically set up a vmware system which will eliminate the problems of multiple drivers. Only looking into it now so if any one beats me to it maybe you could let me know how its done?

Comments are closed.