- SYSLINUX - FAT filesystem bootloader
- EXTLINUX - ext2/3/4 and btrfs filesystem bootloader
- PXELINUX - Network PXE bootloader
- ISOLINUX - ISO-9660 (CDROM) bootloader
|custom-cflags||No||No||Build with user-specified CFLAGS (unsupported)|
To use Syslinux you need to make sure to both install the proper boot sector, and then to install the actual boot loader into the partition. Make sure not to omit steps.
Boot Sector Setup
Set the boot partition as active:
Run gdisk and enable legacy BIOS boot partition attributes on the partition where /boot/extlinux is stored.
Boot Loader Install
With PXELINUX is possible to netboot using images that are shared through a TFTP server. This article will assume there is a TFTP server installed, and it's TFTP root directory is in /var/lib/tftpboot. With this setup, copy the PXELINUX loader to the TFTP boot dir and create a config dir.
The config dir can be used to store different configurations for your netbooted clients. When a client tries to boot, the MAC address or the IP address is used to determine the appropriate client config file. First it tries to look for the MAC address, followed by a try on the hexadecimal representation of the client IP. Next, a character is stripped from the end of this value, until no more characters are left, or until a config file is found. If none of the tries match, the default config file is used.
The hexadecimal representation of an IP can be found with the following command:
An example config file matching occurs as follows:
syslinux package contain various modules to support variants of features, starting with syslinux 5 some modules depends on others, its good idea to copy most basic modules regardless of usecase.
Configuration file varies between bootloaders:
- SYSLINUX: syslinux.cfg
- EXTLINUX: extlinux.conf
- ISOLINUX: isolinux.cfg
The configuration format is the same.
This will give you a simple "boot:" prompt, similar to the one in Gentoo's Minimal LiveCD:
The following configuration provides a simple text menu example.
This is done via the vesamenu module, in some cases where vesa is not compatible, the simpler menu module will work.
Copy the VESA menu module into the boot filesystem:
Passing Kernel Parameters
Unless you're hardcoding kernel parameters in your kernel image, you will want to pass them through the boot loader. To do so you have to use the APPEND parameter, like this: