Managing EFI Boot Loaders for Linux:
Using rEFIt

by Rod Smith, rodsmith@rodsbooks.com

Originally written: 9/23/2011; last update: 4/27/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.

rEFIt is unusual in that it's not a full boot loader, in the sense that it can't load a Linux (or any other OS) kernel. (A kernel with EFI stub loader support is a partial exception, as described shortly.) Instead, rEFIt is a boot manager; its sole purpose is to launch other boot loaders. These include other EFI boot loaders that exist on the ESP, EFI boot loaders in a Mac's main partition, and as BIOS-style boot code detected in the disk's MBR and partitions' boot sectors.

Before reading further, be aware that rEFIt's author has discontinued the project; it hasn't been updated in over three years, and now bears a notice directing readers to my own project, rEFInd, which is a fork of rEFIt. Although some Mac users might still prefer rEFIt to rEFInd because of better Mac support in terms of installers and ancillary tools, rEFInd has significant improvements, particularly for use on UEFI-based PCs.

When to Use rEFIt

In the past, rEFIt was commonly used by Mac users who wanted to dual-boot with Windows; and indeed, it's still useful in that capacity. For most users, though, rEFInd is the better choice today because of its improvements over rEFIt and because I'm actively supporting it, whereas rEFIt's author has abandoned the original program.

Be aware that rEFIt has no Secure Boot support. Although you could theoretically sign it and launch it using shim, rEFIt would be unable to launch any programs except those that were signed by Microsoft (or whoever maintains the keys in your firmware). In theory, rEFIt would cope better with PreBootloader, which patches into the EFI's own Secure Boot system; but I've never tested it. Because rEFInd includes explicit Secure Boot support, it's the better choice if you need this support.

Nonetheless, rEFIt can be adequate if you're using ELILO to boot Linux but you also need to boot Windows or OS X. Similar comments apply if you're using GRUB Legacy or GRUB 2 but can't seem to get it to work with chainloading to your Windows or OS X boot loader.

Installing rEFIt

rEFIt installation works as described in EFI Boot Loader Installation, with some caveats.

The most important issue is that the rEFIt binary packages available from its main Web page are built as mixed-mode ("fat") 32-/64-bit binaries. These work fine on Macs, but not on UEFI-based PCs. If you use such a computer, you must therefore track down a purely 64-bit binary and replace the original package's refit.efi file with the 64-bit file. Alternatively, you can use my thin utility to split the "fat" binaries into separate 32- and 64-bit varieties and use the latter. Ubuntu's refit package includes a suitable 64-bit binary, as /usr/lib/refit/x64/refit.efi. I also provide a version that's been patched with a few extensions (version 0.14-rws), although rEFInd takes these improvements much further. Nonetheless, if you want to try rEFIt on a UEFI-based PC, the following packages may be of interest:

Differences between this 0.14-rws version and the original 0.14 version are two new options, which are described under Configuring rEFIt. To compile it, I began with the original version and all of the Debian patches; the original source code doesn't compile properly under Linux.

When you install rEFIt, your ESP's rEFIt directory should contain a refit.efi file, a refit.conf configuration file, a refit.vollabel binary file, and an icons subdirectory that holds icons. You can also install a few special .efi files that enable rEFIt to provide additional functionality. Most notable among these are:

If you're installing rEFIt on a Mac, you should follow the instructions on the rEFIt Web site. Because a Mac's EFI can read HFS+ volumes, rEFIt is usually installed on the OS X system volume rather than on the ESP. Be aware, however, that some problem reports (such as this one and this one) have appeared concerning the rEFIt installer scripts causing corruption of large hard disks (those over about 500 MB) on Macs. Thus, you might want to stick with manual installation of rEFIt even on Macs.

Configuring rEFIt

rEFIt's configuration file is refit.conf. It's well-commented and may need no adjustment, particularly on Macs. Three options deserve mention on UEFI-based PCs, though:

rEFIt requires no configuration to specify boot options; it probes the ESP, OS X partitions, and common locations for BIOS boot loaders to generate a menu of options. Although this is convenient, it does have its drawbacks: One problem is that your list of options can grow to ridiculous sizes if you install boot loaders to test them, or if you install EFI programs that aren't boot loaders (rEFIt tends to interpret them as if they were boot loaders). Another problem is that you can't give your boot loaders descriptive names, and sometimes the names are simply wrong—a Linux installation might be labelled as Windows, for example.

If you want to boot a Linux kernel with the EFI stub loader support, you can do so; however, rEFIt provides no mechanism to pass options to the kernel. Thus, if the kernel is to find its initial RAM disk and root filesystem, and if it's to use any other kernel options your system might need, you must include the options in the kernel binary itself. You can do this when you compile the kernel, as described on the EFI stub loader page.

Using rEFIt

When rEFIt is launched, it creates a display similar to the one shown here:


rEFIt presents a GUI menu for selecting your boot OS.

You can select your OS by using the arrow keys on the keyboard and pressing Enter, much as you would when using other boot loaders. If you use text mode, of course, the GUI display is replaced by a textual listing of options. The icons beneath the OS list provide access to rEFIt's tools—the shell, information about rEFIt, shutdown, and reboot options, in this case. You can sometimes pass special options to a specific boot by pressing the Insert key once it's highlighted.

Maintaining rEFIt

Ideally, rEFIt requires little maintenance. Because it auto-detects boot loaders, you shouldn't need to adjust it when you install a new OS, provided that OS installs its EFI boot files in a reasonable location. Because rEFIt doesn't directly boot Linux kernels, it requires no maintenance when you upgrade your kernels; however, you (or your distribution's scripts) must update your GRUB Legacy, GRUB 2, or ELILO configuration when you update your kernel.


Go on to "Using rEFInd"

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.