More PXE Magic
Multi-OS PXE Menu
If all you were interested in was PXE booting a single version of Ubuntu or Debian, you would be done. Of course, what if you wanted the choice of either the 32- or 64-bit versions of a particular release, or what if you wanted to choose between a few different releases? Although you could just overwrite your tftpboot directory every time you wanted to change it up, with only a few extra tweaks to the config, you easily can host multiple releases with the same menu.
Move Precise to a Submenu
To get started, let's clean out any existing files in the /var/lib/tftpboot directory. Let's use the i386 Precise netboot.tar.gz to begin, but let's tweak how the files are organized by isolating precise in its own directory:
$ cd /var/lib/tftpboot $ sudo mkdir precise $ cd precise $ sudo wget http://us.archive.ubuntu.com/ubuntu/dists/precise/ ↪main/installer-i386/current/images/netboot/netboot.tar.gz $ sudo tar xzf netboot.tar.gz
All of the interesting PXE configuration can be found inside the ubuntu-installer/i386 directory, so make a copy of those files back in the root tftpboot directory so you can edit them:
$ cd /var/lib/tftpboot $ sudo cp -a precise/ubuntu-installer/i386/boot-screens ↪precise/ubuntu-installer/i386/pxelinux.0 ↪precise/ubuntu-installer/i386/pxelinux.cfg .
Unfortunately, all of the configuration files under the boot-screens directory you copied reference ubuntu-installer/i386/boot-screens, when you want them to reference just boot-screens, so the next step is to run a quick Perl one-liner to search and remove any instance of ubuntu-installer/i386/ found in the config file:
$ cd /var/lib/tftpboot/boot-screens $ sudo perl -pi -e 's|ubuntu-installer/i386/||' *
The specific pxelinux configuration that points to the Ubuntu Precise kernel and initrd can be found under precise/ubuntu-installer/i386/boot-screens/txt.cfg. If you were to look at that file, it would look something like this:
default install label install menu label ^Install menu default kernel ubuntu-installer/i386/linux append vga=788 initrd=ubuntu-installer/i386/ ↪initrd.gz -- quiet label cli menu label ^Command-line install kernel ubuntu-installer/i386/linux append tasks=standard pkgsel/language-pack-patterns= ↪pkgsel/install-language-support=false vga=788 ↪initrd=ubuntu-installer/i386/initrd.gz -- quiet
What you want to do is make a copy of this config file under your root-level boot-screens directory, but because you extracted the tarball into a directory named precise (instead of the root directory), you need to do another search and replace, and add precise in front of any reference to the ubuntu-installer directory. Otherwise, the paths to the kernel and initrd will be wrong:
$ cd /var/lib/tftpboot/boot-screens $ sudo cp ../precise/ubuntu-installer/i386/boot-screens/txt.cfg ↪precise-i386.cfg $ sudo perl -pi -e 's|ubuntu-installer|precise/ubuntu-installer|g' ↪precise-i386.cfg
When you are done, the /var/lib/tftpboot/boot-screens/precise-i386.cfg file should look something like this:
default install label install menu label ^Install menu default kernel precise/ubuntu-installer/i386/linux append vga=788 initrd=precise/ubuntu-installer/i386/initrd.gz ↪-- quiet label cli menu label ^Command-line install kernel precise/ubuntu-installer/i386/linux append tasks=standard pkgsel/language-pack-patterns= ↪pkgsel/install-language-support=false vga=788 ↪initrd=precise/ubuntu-installer/i386/initrd.gz -- quiet
Kyle Rankin is a VP of engineering operations at Final, Inc., the author of a number of books including DevOps Troubleshooting and The Official Ubuntu Server Book, and is a columnist for Linux Journal. Follow him @kylerankin.
|Take Control of Your PC with UEFI Secure Boot||Nov 30, 2015|
|Geek Hide-away in Guatemala - Stay for Free!||Nov 26, 2015|
|Microsoft and Linux: True Romance or Toxic Love?||Nov 25, 2015|
|Non-Linux FOSS: Install Windows? Yeah, Open Source Can Do That.||Nov 24, 2015|
|Cipher Security: How to harden TLS and SSH||Nov 23, 2015|
|Web Stores Held Hostage||Nov 19, 2015|
- Cipher Security: How to harden TLS and SSH
- Microsoft and Linux: True Romance or Toxic Love?
- Non-Linux FOSS: Install Windows? Yeah, Open Source Can Do That.
- Web Stores Held Hostage
- Firefox's New Feature for Tighter Security
- Geek Hide-away in Guatemala - Stay for Free!
- PuppetLabs Introduces Application Orchestration
- It's a Bird. It's Another Bird!
- diff -u: What's New in Kernel Development
- IBM LinuxONE Provides New Options for Linux Deployment