Managing EFI Boot Loaders for Linux:
Using SYSLINUX

by Rod Smith, rodsmith@rodsbooks.com

Originally written: 6/30/2013

I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!

Donate $1.00 Donate $2.50 Donate $5.00 Donate $10.00 Donate another value
Donate with PayPal
Donate with PayPal
Donate with PayPal
Donate with PayPal
Donate with PayPal

This page is part of my Managing EFI Boot Loaders for Linux document. If a Web search has brought you to this page, you may want to start at the beginning.

SYSLINUX is a family of boot loaders for Linux. Often employed as a means to boot Linux installation discs, SYSLINUX can also be used on hard disks. Until recently, though, SYSLINUX has not supported EFI-mode booting. That's changing with version 6, though.

When to Use SYSLINUX

At the moment (summer of 2013), I recommend using SYSLINUX only if you want to experiment with a brand-new boot loader. Although I have gotten the program to work, it is as yet poorly documented (at least, for EFI) and is new enough that it has yet to be tested on a wide range of hardware.

As far as I can tell, SYSLINUX's EFI version is similar in capabilities to ELILO: It can load a Linux kernel, but not other EFI programs. I could be wrong about this, though; I could find no documentation about its EFI-specific capabilities, and what I considered logical extensions to the BIOS-mode options for chainloading didn't work for chainloading an EFI boot loader. There could be an EFI chainloading option that's undocumented or whose documentation I haven't found, though.

SYSLINUX has two important advantages over ELILO: It's under active development and it's easier to configure to use a traditional menu system (rather than ELILO's text-mode command prompt). These advantages could make SYSLINUX a good choice for a Linux-only installation.

To the best of my knowledge, SYSLINUX doesn't explicitly support Secure Boot—but that may be a lack of knowledge on my part rather than a lack of support in the program. In principle, you should be able to sign syslinux.efi and launch it from shim much as you would any other boot loader, and from there launch any signed or unsigned Linux kernel.

Installing SYSLINUX

SYSLINUX installation works just as described in EFI Boot Loader Installation. A major caveat is that SYSLINUX requires a number of support files be installed on your ESP, and it may not be obvious what files need to go there. To help simplify things, I've created an x86-64 binary tarball of SYSLINUX 6.01.pre5-1, based on an Arch Linux package. To use this binary, you should unpack it in your ESP's root directory—that is, normally in /boot/efi or sometimes in /boot. When unpacked, this package creates a directory called EFI/syslinux, which holds the syslinux.efi boot loader binary, syslinux.cfg configuration file, and several support files. Note that the configuration file works on my Arch Linux installation, but will require changes to work on other systems.

Configuring SYSLINUX

Many of the SYSLINUX configuration features are similar to those of its BIOS counterpart. See the SYSLINUX wiki for detailed configuration instructions. The syslinux.cfg configuration file consists of a series of global options followed by one or more boot stanzas, each of which defines a single kernel or other tool to be launched. A simple example resembles the following:

DEFAULT arch
TIMEOUT 50
UI menu.c32

LABEL arch
    MENU LABEL Arch Linux
    LINUX ../../vmlinuz-linux
    APPEND root=/dev/sda2 ro
    INITRD ../../initramfs-linux.img

LABEL archfallback
    MENU LABEL Arch Linux Fallback
    LINUX ../../vmlinuz-linux
    APPEND root=/dev/sda2 ro
    INITRD ../../initramfs-linux-fallback.img

This example defines two boot entries, arch and archfallback, which boot Arch Linux in two different ways—the entries vary in their INITRD lines, which specify the initial RAM disk files to be used.

The sample configuration file in the tarball I'm providing includes entries to launch various SYSLINUX tools for detecting hardware, rebooting, and powering off. These tools hang my computer, but you may have better luck.

Using SYSLINUX

When SYSLINUX is launched, you'll see a menu, whose appearance can vary depending on your configuration file options. The configuration file provided with my sample SYSLINUX binary produces a menu like this:


SYSLINUX presents a simple text-mode menu.

You interact with SYSLINUX in the same way you interact with most boot loaders: Press the arrow keys to select a boot option and then press Enter to boot the OS.

Maintaining SYSLINUX

I know of no distribution that ships with scripts to help automate SYSLINUX maintenance; thus, you should plan on editing its configuration file manually whenever you upgrade your kernel or make other changes to your configuration that might require SYSLINUX changes.


Go on to "Using GRUB Legacy"

Return to "Managing EFI Boot Loaders for Linux" main page


If you have problems with or comments about this web page, please e-mail me at rodsmith@rodsbooks.com. Thanks.

Return to my main Web page.