The rEFInd Boot Manager: rEFInd Features

# The rEFInd Boot Manager:
rEFInd Features

by Roderick W. Smith, rodsmith@rodsbooks.com

Originally written: March 14, 2012; last Web page update: April 6, 2024, referencing rEFInd 0.14.2

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 $20.00 | Donate another value

This page is part of the documentation for the rEFInd boot manager. If a Web search has brought you here, you may want to start at the main page.

rEFInd is a fork of the rEFIt boot manager. As such, it has many features in common with rEFIt; however, rEFInd expands on rEFIt's capabilities. In particular, rEFInd makes it practical to directly launch Linux kernels; adds video resolution options; adds support for Secure Boot; provides features to launch BIOS/CSM/legacy-mode OSes on UEFI-based PCs (which rEFIt can do only on Macs); can be installed and used on newer versions of macOS (but the macOS installer is more primitive than the one provided with rEFIt); can install to a hard disk from a boot of rEFInd from a removable disk; and more.

In broad outline, rEFInd's features include the following:

- Platform support
  - Binaries exist for x86 (aka IA32), x86-64 (aka X64 or AMD64), and ARM64 (aka AARCH64). The x86-64 binary is the best-tested of these, and the ARM64 binary is the most poorly-tested. (I've tested ARM only within a QEMU emulator.)
  - Works on EFI 1.1 (mainly Apple Macs) and UEFI 2.x (most EFI-based PCs and newer Macs).
  - Packages exist as `.zip` files (cross-platform), RPMs (for Fedora, OpenSUSE, and various other Linux distributions), Debian packages (for Debian, Ubuntu, and related distributions), and Ubuntu PPAs. See the Getting rEFInd page for details.
  - Installation is best done via a script that runs in macOS and Linux. (Linux packages may run the install script automatically.) Manual installation procedures for Linux, macOS, and Windows exist, too. An option to install rEFInd from a rEFInd USB flash drive or optical disc also exists. See the Installing and Uninstalling rEFInd page for details.
  - rEFInd provides an option to manage the EFI's own boot order. This feature is disabled by default; to enable it, add `bootorder` to the `showtools` option in `refind.conf`.
  - The main development platform is Linux, using either GNU-EFI or TianoCore EDK2 build kits. See the `BUILDING.txt` file in the source code package for information on compiling rEFInd yourself.
  - rEFInd is licensed under the terms of the GNU General Pulic License (GPL), version 3.
- Automatic OS detection
  - Rather than rely on a configuration file to identify bootable OSes, as is the case with most boot managers, rEFInd actively scans for EFI boot loader files, BIOS/CSM/legacy boot loaders, and EFI boot options stored in the EFI's own NVRAM-based boot manager memory. You can also manually identify boot options for EFI-based and NVRAM-defined boot loaders, similar to the way other boot managers work.
  - Although rEFInd is, first and foremost, a tool for launching EFI-based OSes, rEFInd is one of the few EFI boot programs that can redirect the boot process to BIOS-based OSes.
  - rEFInd can detect Linux kernels with EFI stub loader support to boot them directly, minimizing Linux configuration requirements. (See the upcoming bullet point on Linux-specific features for more details.)
  - As part of its OS detection, rEFInd can identify several tools, including EFI shells, disk partitioning utilities, Windows and macOS recovery partitions, Secure Boot utilities, and memory test tools.
  - You can boot to a network (PXE or HTTP) boot server in either of two ways:
    - Beginning with rEFInd 0.8.4, experimental network boot loader support exists via the iPXE EFI binaries. When activated, rEFInd should add a network-boot option to its menu when a suitable network boot server is available.
    - Beginning with rEFInd 0.13.0, the firmware reboot feature enables use of network boot options provided by the computer's firmware.
  - You can tell rEFInd to not scan certain volumes, directories, or filenames, to limit options you want to omit. This can be done various ways, as described here. The easiest method involves a few keypresses at rEFInd's main menu.
  - You can specify additional directories to scan for boot loaders and drivers, beyond those scanned by default.
  - Pressing the Esc key causes rEFInd to re-scan boot loaders, to assist when changing removable media or after making a change to the configuration file with an EFI shell.
  - The delay before scanning for boot loaders upon program start can be adjusted, for systems on which there's a delay before disks become available.
- OS launch options
  - OS launch options can be specified in the main rEFInd configuration file (`refind.conf`, stored in rEFInd's main directory); or for Linux kernels, in the `refind_linux.conf` file, stored in the same directory as the kernel.
  - You can set OS-specific boot options, such as to launch macOS with verbose text-mode debug messages.
  - rEFInd enables specifying the default boot option by any substring in the description. You can also specify multiple defaults, so that if the first isn't available, another will take its place (which is useful when using removable disks). You can also add time specifications to set a default to be used only during certain hours of the day. If no default loader is set, rEFInd defaults to the last-booted loader.
  - You can fine-tune options passed to EFI boot loaders, via manual configuration.
  - An option editor enables you to edit the options passed to an EFI boot loader on a per-boot basis.
- Graphics features
  - rEFInd support for both text-mode and graphical operation.
  - You can set the screen's graphics resolution, within limits imposed by the EFI. Similarly, you can specify the text-mode resolution.
  - User-configurable graphics, icons, and fonts exist—you can set your own background, set new icons, and so on.
  - rEFInd upports icons, selection backgrounds, and banner graphics in PNG, JPEG, ICNS ,and BMP formats, although some formats make more sense for some purposes than others. See Theming rEFInd for details.
  - Icons, fonts, and banner backgrounds can be scaled to adjust icon size for users with high-resolution displays, poor eyesight, or simply for personal preference reasons.
  - A screen saver feature, activated by the `screensaver `seconds`` token in `refind.conf`, exists: Set `seconds` to the number of seconds before the screen will blank to prevent burn-in.
- User interaction features
  - Some (but not all) touch-screen displays, as used on tablet computers, work. (This feature is disabled by default; you must uncomment the `enable_touch` token in `refind.conf` to activate it.)
  - On some (but not all) computers, mouse input can be used to select the boot loader to run. (As with touch screens, this feature is disabled by default; you must uncomment `enable_mouse` to activate it. The `mouse_size` and `mouse_speed` tokens fine-tune mouse operation.)
- Mac-specific features
  - rEFInd can spoof the booting of macOS when booting non-Apple OSes. This changes the way a Mac's EFI initializes hardware, which can get secondary video chipsets working on some Macs. This feature is controlled via the `spoof_osx_version` token in `refind.conf`.
  - rEFInd can adjust Apple System Integrity Protection (SIP; aka "rootless" or "CSR") settings. These settings control what features are off-limits even to `root` in macOS 10.11 (El Capitan) and later. To use this feature, you must set specific CSR values on `refind.conf`'s `csr_values` line and add `csr_rotate` to the `showtools` line.
- Linux-specific features

- rEFInd can auto-detect Linux initial RAM disk files and read Linux kernel options from a `refind_linux.conf` file. These features support (nearly) automatic handling of Linux kernels with embedded EFI stub loader support.
- By default, rEFInd "folds" multiple Linux kernels into a single entry in the main menu. Additional kernels appear as options in the submenu. This feature can be disabled by setting `fold_linux_kernels false` in `refind.conf`, which causes each kernel to get its own main-menu icon.
- In the absence of a `refind_linux.conf` file, rEFInd tries to guess minimal Linux boot options for a kernel based on the contents of `/etc/fstab` and/or the partition type codes specified by the Discoverable Partitions Specification (DPS). These options are limited in their abilities, but they're often enough to get an installation to boot without any system-specific configuration.

- Extra tools and utilities
  - rEFInd ships with EFI filesystem drivers for several common filesystems, including ext2/3fs, ext4fs, Btrfs, ReiserFS, HFS+, and ISO-9660. Code for an NTFS driver is also included, but is not compiled by default because the driver has proven to be troublesome. The main use for these drivers is to enable rEFInd to read Linux kernels from popular Linux-native filesystems; however, other uses exist, such as facilitating booting from some optical discs or making very large files available to other EFI utilities.
  - The `gptsync` utility can create a fresh hybrid MBR on a GPT disk. Hybrid MBRs are ugly and dangerous, so `gptsync` is not installed by default except under macOS, and the rEFInd configuration file option to activate it is disabled by default. That said, hybrid MBRs were required to launch older BIOS-mode OSes, such as Windows 7 and earlier, on Intel-based Macs, and they are still useful when launching old or exotic OSes, mostly on Macs.
- Miscellaneous features
  - For debugging problems, the `log_level` token in `refind.conf` enables activating logging to a log file, `refind.log`, which is stored in rEFInd's main directory (or in the root of the first ESP that rEFInd can find, if rEFInd can't write to its own directory).
  - You can specify a configuration file to use at program launch time via the `-c `filename`` command-line option. This feature requires manual installation or launching rEFInd from an EFI shell or some other EFI program you can configure.
  - rEFInd detects a fallback boot loader (`EFI/BOOT/bootx64.efi` or `EFI/BOOT/bootia32.efi`) that's redundant with another boot loader, to keep the fallback boot loader out of menus when it's unnecessary.
  - rEFInd provides an "exit" option (disabled by default), so that you can return to whatever shell or boot manager you used to launch rEFInd, should this ability be desirable.
  - rEFInd can "talk" to the Shim boot loader to validate binaries supported by Shim or its machine owner key (MOK) list when booting with Secure Boot active.
  - rEFInd can set the VMX bit on certain Intel CPUs. This feature is necessary for certain virtualization tools, such as Hyper-V, and not all EFIs enable users to set it.

If these features sound useful, then read on and try rEFInd. If not, you may need to look elsewhere. My Managing EFI Boot Loaders for Linux page may be useful to you in this case.

copyright © 2012–2024 by Roderick W. Smith

This document is licensed under the terms of the GNU Free Documentation License (FDL), version 1.3.

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

Go to the main rEFInd page

Learn how to obtain rEFInd

Return to my main Web page.