Some questions regarding PXE servers and multi-booting

bootbootloadermulti-bootpxe

I currently work in a technology help desk for my college, where we fix the personal computers of all the students. We have hundreds of DVD's and CD's that we use to boot into all kinds of different things to troubleshoot. Among them are:

  • Various Linux distros
  • Windows PE environments
  • hard drive Regen
  • Windows recovery consoles (all versions)
  • Windows installation disks (all versions)

This means that we spend a ton of money on CD's and DVD's as they get lost, scratched, etc. It is becoming quite a hassle to manage them! I have been considering toying with a PXE server that could allow us to boot to these things over the network and reduce the clutter.

Some of these disks have special boot information such that you can't simply copy the files to a blank disc. And some of them are incompatible with each other on multi-boot CD's I've made. For example, I haven't been able to make a multi-boot CD with Ubuntu 11.04 and Hiren's boot CD.

  1. Is it possible to have one PXE server that can allow devices to "boot to" many different environments?

  2. Is it possible for the PXE server to have bootable disk images (ISO's) that it simply 'emulates' for the connected computers to boot to?

  3. If the answer to #2 is 'no', how can one set up a PXE server to boot to multiple things?

  4. Ultimately, I would like to boot to a PXE server that just gives a numbered menu of items that we can boot to. Like 1) Ubuntu, 2) hard drive Regen, 3) Windows 7 Home, etc. Is this possible?

    Where can I start?

Best Answer

Yep. I've managed many a PXE server. I'd recommend NeoPXE. There's tons of documentation on it and it's very powerful. You can do things like create a menu that will chainload to other PXE servers and install targets.

You should also know that a PXE server is simply a DHCP server paired with a TFTP server. To do more advanced things like what I explain below, you'll be setting up a proxy DHCP server.

For example, we have it set up so that when you first PXE boot you have a list of options to go to several different departments' PXE servers or go to Linux, Solaris, or BSD. From there you can go to Stable/Devel then pick your architecture and version. Finally you'd be given an option to do a kickstart/autoyast/jumpstart or an attended install.

The menus can be created programmatically and/or by hand. You edit configuration files then run make. I think this answers 1, 2, and 4. For number 3, if I understand you correctly... you can't simply serve an ISO to a client from a PXE server. For Linux distros, generally, you'll have to pull out the initrd and vmlinuz and then make the rest of the packages accessible via NFS, FTP, HTTP, or smb.

I think this is exactly what you're looking for.

http://download.oracle.com/docs/cd/E19273-01/835-0781/sfx46losig.gisnq.html

Let me know if you want more specific instructions for a given distro or if you need help setting up NeoPXE.

Related Question