PXELinux is a boot loader similar to syslinux. As syslinux is used for booting from a CD, Pxelinux is designed for PXE booting.
To get PXE Boot Loader and anything required to set up a netboot install, you will need to get the archive netboot.tar.gz from ubuntu repositories.
Let’s go to our TFTP server root directory and get PXELinux set up.
$ cd /var/lib/tftpboot
$ sudo wget http://archive.ubuntu.com/ubuntu/dists/feisty/main/installer-i386/current/images/netboot/netboot.tar.gz
$ sudo tar -xzvf netboot.tar.gz
If you “ls -l” in this directory, you will see that the file pxelinux.0 and the directory pxelinux.cfg are actually symlinks to ubuntu-installer/i386/ where you can also find a kernel, linux, and an initrd image, initrd.gz.
What basically pxelinux.0 does is to read a configuration files in pxelinux.cfg in a specific order:
Where xx-xx-xx-xx-xx-xx-xx is the MAC address of our client and C0A80025 the hexadecimal form of the client’s IP address.
If it can’t find none of those it will fall back onto default.
If default can’t be found, it will try to load a default kernel (named linux) and if it still don’t have any success, you will be left in front of a boot prompt where you will be able to type your custom boot command.
Anyway, the default settings of netboot.tar.gz are enough to start a network installation.
The boot screen you get upon boot up proposes different entry. Each entry will propose a different installation method, but all of them load ubuntu-installer/i386/linux kernel and ubuntu-installer/i386/initrd.gz intrd image.
People who simply wants to deploy a boot installation (installing ubuntu on a system with no booting device like cdrom, floppy or usb bar) can stop their reading here.
The next section is going to explain how you can automatize the installation process so you won’t be prompted by questions such as “select language”, “select keymap” ….