Managing EFI Boot Loaders for Linux

by Rod Smith,

Originally written: 9/23/2011; last update: 6/13/2015

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

With the rising availability of Extensible Firmware Interface (EFI) and Unified EFI (UEFI) computers, there's an increasing need to configure EFI boot loaders, particularly in multi-boot environments. The way EFI computers boot is very different from the way older computers based on the Basic Input/Output System (BIOS) boot. This fact is both positive and negative. On the plus side, the EFI boot method is much more flexible and, in theory, easier to configure than is the BIOS boot method. On the minus side, existing documentation and personal skills are often built around BIOS, which can make setting up an EFI-based system tricky. There's also the fact that EFI support in Linux distributions is much newer than BIOS support, so there tend to be more EFI glitches.

I've written this set of Web pages with the goal of explaining some of the basics of the EFI boot methods, most notably including how to install and manage EFI boot loaders. This document is broken into a number of sections, as detailed below.


Note: Another EFI boot loader for Linux, efilinux, is an out-of-kernel precursor to the kernel's EFI stub loader. It's got the stub loader's disadvantages and few of its advantages. I've had little success getting it working, although I've only tested it on a couple of systems. I therefore don't cover it here, aside from this paragraph. At least two additional programs, Shim and PreLoader, exist to help work around boot problems associated with Secure Boot; these are described in the first section on Secure Boot.

Quick Recommendations

Most Linux distributions install the EFI version of GRUB 2 on EFI-based computers. When I first wrote these pages, GRUB 2 barely worked, but it's much more reliable in 2015 than in 2011. Thus, if you're happy with GRUB 2 as installed by your distribution, you might as well stick with it.

There are problems with GRUB 2, though. Some of these problems relate to the fact that it can be difficult to control your boot mode (EFI vs. BIOS) when you install an OS, and therefore difficult to tell which version of GRUB you've installed. There are also cases where GRUB misbehaves; it may fail to launch, refuse to chainload to Windows or OS X, or do other strange things. In these cases, or if you dislike GRUB 2, you should try something else.

As of mid-2015, the best of these boot loaders is probably the EFI stub loader, which is built into the Linux kernel itself. The stub loader is simple, but it can be awkward to control, so you'll probably want to use it in conjunction with rEFInd or gummiboot, which are boot managers—they present menus that enable you to launch a boot loader. One complication of the EFI stub loader is that some users, particularly with Macs and Lenovos, seem to be having problems with some kernels in the 3.7.x and later kernel series. See this Arch Linux forum thread for details.

The SYSLINUX boot loader is available for both BIOS and EFI, and is under active development. Its EFI version works reasonably well, although it's not very popular. ELILO is similar to SYSLINUX, but is no longer being actively developed. Despite this fact, ELILO is reasonably reliable, in my experience.

GRUB Legacy, like ELILO, is no longer being actively developed. Furthermore, the original version is BIOS-only; EFI support is available only in a significantly-patched version produced by Red Hat. Although this version is not being actively developed, it's worked reasonably well for me.

Both versions of GRUB, rEFIt, rEFInd, and gummiboot can function as boot managers for non-Linux OSes; that is, they can chainload other boot loaders. ELILO and SYSLINUX are Linux-only tools; if you multi-boot with another OS, you'll need to use another program to switch between Linux and your other OS.

Be aware that there are significant system-specific quirks. I've never gotten ELILO to work on my 32-bit Mac Mini, for instance. ELILO does work with a 32-bit version of VirtualBox's EFI, so I suspect a Mac-specific quirk—but I've seen many references to ELILO working on Macs, so it may be model-specific, or I may be doing something wrong.

If you have a computer that shipped with Windows 8 installed, chances are the firmware is set to use Secure Boot. This is a feature designed to prevent malware from infecting the computer before the OS has a chance to take over. Unfortunately, it also complicates the installation and management of boot loaders. If you need help, read my section on Secure Boot.

Additional Resources

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

Return to my main Web page.