Monday, August 17, 2009

Improving pxe boot menus

Mandriva has a fairly good tool for building and managing pxe configuration. It’s called drakpxelinux. This is the tool that got me started with network booting and although it has some fairly rough edges, worked fairly well.

After exploring some more, I discovered that pxelinux, part of the syslinux package can do much more than people traditionally use it for.. This includes graphics, multiple boot options and menus, context and general help text and passwords and ability to change kernel options. A screenshot below is an example of what we now use at work for the default menu.
Mandriva Linux CS5 beta testing @ 2009-08-17 22:32:21
This really makes things a lot easier to use and looks quite professional.

We have menu items for:

Installers:

  • Red Hat
  • Red Hat with kickstart
  • Centos
  • Mandriva with nfs preconfigured

Running off the network:

  • Red Hat using it’s nfs snapshots, confugration created from the system-config-netboot tool
  • Knoppix
  • FreeDos
  • Memtest86 and PXEKnife, which includes some basic Linux flavors, firmware updating tools, password reset tools, disk wiping and other random stuff.
  • Clonezilla and udpcast

I am wondering about adding a “Graphics” option into drakpxelinux which would allow people using drakpxelinux to configure a graphical boot menu, probally using a couple of templates and allow them to incorporate their company logo.  I am also thinking it might be nice to provide a package that contains a bunch of common pxe tools and configurations. I am Interested in this, because I am also interested in making a better way to network boot Mandriva to run it diskless.   I might see if I can get some help with some of it, as have limited perl skills, although the code not looking too tricky from my breif inspection.

Anyone interested in my sample configurations, can get them here.

DHCP and tftpd configuration is mostly standard for pxe setups, let drakpxelinux configure it for you, although you will need to point to pxelinux.0 rather than linux.0 in the dhcpd.conf file.