rEFInd
rEFInd is an open-source boot manager for UEFI firmware that presents a graphical menu of boot options to users at system startup, enabling easy selection among multiple operating systems such as Linux, macOS, and Windows on EFI/UEFI-compatible computers.[1] Developed as a fork of the discontinued rEFIt project, it automates the detection of installed EFI boot loaders on the EFI System Partition (ESP) and supports direct launching of Linux kernels as EFI stubs, making it particularly useful for multi-boot environments.[1][2] Initiated in 2012 by Roderick W. Smith to address limitations in rEFIt, which ceased development around 2010, rEFInd has evolved into a robust alternative with ongoing maintenance, reaching version 0.14.2 in April 2024.[3] It is distributed via SourceForge and integrated into repositories of major Linux distributions like Arch Linux, Ubuntu, and Fedora, allowing straightforward installation through package managers or manual setup.[2][4] Key features include customizable themes for the boot menu, keyboard shortcuts for advanced options like shell access, and support for Secure Boot through compatibility shims or preloader programs, ensuring compatibility with signed firmware requirements.[5][6] rEFInd also facilitates booting legacy BIOS-mode operating systems on UEFI systems via Compatibility Support Module (CSM) if available, and it supports architectures including x86, x86-64, and ARM64, though it requires UEFI firmware and is incompatible with pure BIOS or older PowerPC systems.[5] Its configuration file allows fine-tuning of boot stanzas, icon displays, and scan behaviors, enhancing user control in complex setups.[7]Introduction
Overview
rEFInd is an open-source graphical boot manager designed for EFI and UEFI firmware systems. It serves as a user-friendly interface for selecting and launching boot options on multi-boot setups, enabling users to choose from installed operating systems such as Linux distributions, macOS, or Windows during system startup.[1][2] Unlike traditional boot loaders like GRUB, which directly load operating system kernels into memory, rEFInd primarily acts as a manager that detects and invokes existing EFI boot loaders; however, it supports direct launching of Linux kernels using EFI stub functionality when available.[1] This approach allows rEFInd to complement rather than replace other boot mechanisms, providing flexibility in diverse hardware environments. It is compatible with EFI/UEFI-based computers, including modern PCs and Intel-based Macintosh systems, but does not support legacy BIOS-only hardware or PowerPC architectures.[1] Released under the GNU General Public License version 3 (GPLv3), rEFInd emphasizes accessibility and customization for users managing multiple operating systems. As of November 2025, the latest stable version is 0.14.2, released on April 6, 2024.[2][8]Relation to rEFIt
rEFIt is an early boot manager developed specifically for Intel-based Macintosh computers, with its project initiated on March 7, 2006, by Christoph Pfisterer.[9] It provided a graphical interface for multi-booting on EFI systems, primarily targeting Apple's hardware ecosystem.[10] Development continued actively until version 0.14 was released on March 7, 2010, after which Pfisterer ceased maintenance, shifting focus away from the project.[1][11] In response to rEFIt's stagnation, Roderick W. Smith forked the project in March 2012 to create rEFInd, motivated by the need to resolve persistent bugs and incomplete UEFI support in the original codebase.[1] The fork addressed limitations that hindered reliable booting on diverse UEFI platforms, particularly outside the Mac environment.[12] Among the key enhancements in rEFInd over rEFIt are improved adherence to UEFI specifications, stronger integration with Linux kernels (enabling direct loading since kernel version 3.3.0), and corrections for automatic detection failures on non-Apple hardware.[1][12] These changes made rEFInd more robust for modern firmware implementations. rEFInd preserves rEFIt's user-friendly graphical boot menu design while broadening hardware compatibility to encompass generic x86 UEFI systems from various manufacturers.[1] Pfisterer has since endorsed rEFInd as the successor to rEFIt.[10] Smith continues to maintain rEFInd as its primary developer.[1]Technical Features
Boot Management Capabilities
rEFInd employs an auto-detection mechanism that scans EFI System Partitions (ESPs) across internal and external drives to identify boot loaders and bootable volumes, enabling seamless discovery of operating systems without manual intervention.[13] This process includes support for BIOS/CSM (Compatibility Support Module) modes on Intel-based Macs, allowing rEFInd to manage mixed EFI and legacy boot environments by presenting unified options for both modes.[14] Additionally, it scans optical media and can be configured to detect legacy BIOS-mode installations on UEFI systems, ensuring broad compatibility in multi-mode setups.[5] For multi-boot environments, rEFInd supports installations of multiple operating systems, such as Linux, macOS, and Windows, on a single drive or distributed across multiple drives.[1] Users can hide specific operating systems dynamically through the boot menu or via configuration options that exclude certain volumes, directories, or files from detection, providing flexibility for managing complex setups.[7] Manual configuration is also possible through custom boot stanzas in the refind.conf file, where entries can be defined, disabled, or prioritized to override automatic detection.[7] rEFInd facilitates direct kernel launching for Linux kernels compiled as EFI applications, a capability available since Linux kernel version 3.3.0, which eliminates the need for intermediate boot loaders like GRUB.[15] It automatically detects kernel files (e.g., vmlinuz-*) and associated initial RAM disks on the ESP, applying boot options from a generated refind_linux.conf file to pass parameters such as the root filesystem and initrd paths.[15] This approach simplifies maintenance, as kernel updates are detected at boot time without requiring reconfiguration.[2] In terms of volume management, rEFInd remembers the last-booted operating system and can set it as the default selection, streamlining repeated boots in multi-OS scenarios.[13] It supports scanning external drives and removable media for boot options, with the ability to re-scan dynamically if new devices are connected after rEFInd launches, though firmware settings like "fast boot" may need adjustment for reliable detection.[13] Network booting is enabled through integration with iPXE EFI binaries, available experimentally since rEFInd version 0.8.4, which adds a network boot option to the menu for loading operating systems over the network.[5] The refind.conf configuration file serves as the primary tool for customizing boot management policies, allowing users to specify scan targets (e.g., internal, external, optical, or manual modes) and delays before scanning begins.[7] Options such as dont_scan_volumes, dont_scan_dirs, and dont_scan_files enable fine-grained control over which partitions, directories, or loader files are included or excluded, while manual menuentry stanzas permit defining custom boot options with loaders, volumes, initrds, and parameters.[7] Timeout settings and default_selection rules further refine the boot process, such as booting the previous OS immediately or after a specified delay.[7]User Interface and Customization
rEFInd features a graphical menu that displays boot options in an icon-based interface, automatically assigning OS-specific icons such as a penguin for Linux distributions and an apple for macOS installations.[7] The interface supports resolutions up to 4K when hardware permits, configurable via theresolution option in refind.conf to either a specific value like 3840 2160 or max for the highest available mode.[7] Boot entries appear as large icons (default 128x128 pixels, scaling to 256x256 on high-resolution displays) for operating systems and smaller icons (48x48 pixels) for utilities, with support for formats including PNG and ICNS for transparency effects.[7]
Theming in rEFInd allows extensive personalization through built-in options and custom configurations in refind.conf.[16] Users can set custom banners or full-screen backgrounds using image files (e.g., banner mybanner.png), with scaling controlled by banner_scale to either preserve aspect ratio or fill the screen.[7] Fonts are customizable via the font directive, specifying a PNG file with 96 glyphs for ASCII characters, and defaulting to a 14-point serif monospaced style; custom fonts can be generated using the provided mkfont.sh script on Linux systems.[16] Selection highlights use dedicated graphics like selection_big (144x144 pixels) for OS icons, enabling visual feedback during navigation.[7] While animations are not explicitly supported, themes can incorporate static elements like drop shadows on icons from sets such as AwOken 2.5, included since rEFInd 0.10.0.[16]
Navigation relies on keyboard input by default, with arrow keys to select entries, Enter or Spacebar to launch, and hotkeys for actions like Esc to re-scan boot loaders or U for shutdown.[13] Mouse support is available via enable_mouse true in the configuration, allowing point-and-click selection, while touch input can be enabled separately for compatible devices.[7] Selection timeouts, displayed on-screen, default to a brief delay before auto-booting the highlighted entry, adjustable with the timeout value in seconds (e.g., 20 or -1 for no timeout).[7]
Accessibility features include selection banners that label boot entries with text alongside icons, aiding identification without relying solely on visuals.[7] The scanfor option controls automatic detection of boot loaders, with defaults scanning for internal and external media on macOS but limited to internals on UEFI PCs; manual overrides via scanfor manual allow precise control.[7] For non-detected loaders, users add manual boot stanzas in refind.conf, specifying paths like loader /EFI/ubuntu/grubx64.efi with optional icons and volumes.[7] UI elements can be hidden with hideui (e.g., hideui label to remove text labels) for a cleaner interface, and a screensaver option blanks the display after inactivity to prevent burn-in.[7]
To install themes, files such as icons, banners, and fonts are placed in the rEFInd directory on the EFI System Partition (ESP), typically /EFI/refind/, requiring filesystem drivers like ext4fs for access to non-FAT partitions.[16] After copying assets to subdirectories (e.g., icons/ for custom icons), edit refind.conf to reference them (e.g., icons_dir icons), then reboot to apply changes; the ESP must be mounted during installation for write access.[17]
Security and Compatibility
rEFInd integrates with Secure Boot by supporting Microsoft's Shim bootloader, which is signed with Microsoft's key to enable loading of unsigned or custom-signed EFI applications under Secure Boot restrictions.[6] This allows rEFInd to function in environments requiring signed bootloaders, such as those using Shim from distributions like Ubuntu or Fedora.[6] Additionally, rEFInd supports user-mode Secure Boot keys through Machine Owner Keys (MOKs), enabling users to enroll custom keys via MokManager for signing personal EFI binaries, with tools like sbsigntool facilitating the process.[6] The boot manager includes embedded EFI filesystem drivers that provide read-only access to various partitions independently of the host operating system.[18] These drivers support FAT for standard EFI System Partition access, ext4 for Linux filesystems (handling case-insensitivity and hard links), and HFS+ for macOS volumes, allowing rEFInd to scan and load boot files from non-FAT partitions without additional OS intervention.[18] On Macs, the HFS+ driver is typically redundant due to Apple's built-in firmware support.[18] rEFInd is fully compatible with x86-64 UEFI systems, serving as the primary architecture for its deployment since widespread UEFI adoption around 2011.[1] It offers partial support for ARM architectures, though installations on ARM-based Macs remain untested and experimental as of recent releases.[17] Regarding graphics hardware, early versions encountered display issues with certain NVIDIA GPUs on older Macs, such as black screens during boot; these have been addressed in later updates through improved EFI graphics handling and GOP (Graphics Output Protocol) support.[3] For operating system compatibility, rEFInd automatically detects and launches EFI bootloaders, including GRUB (via paths like EFI/ubuntu/grubx64.efi) and systemd-boot (as an EFI application like loader.efi on the ESP).[13] It also chainloads the Windows Boot Manager (bootmgfw.efi) with a dedicated shortcut for quick access.[13] Direct support extends to FreeBSD's loader.efi on the EFI System Partition and Haiku's UEFI bootloader, which rEFInd detects and presents as boot options in multi-OS setups.[19][20] Despite its versatility, rEFInd has notable limitations in certain configurations. It does not support pure legacy BIOS booting without the Compatibility Support Module (CSM) enabled in the firmware, as it relies on UEFI for core functionality and uses CSM only to emulate legacy mode on compatible hardware.[21] Full-disk encryption setups can lead to conflicts, as rEFInd lacks native decryption support and requires an unencrypted EFI System Partition or specialized EFI drivers to access encrypted boot files; otherwise, it may fail to detect or load kernels from protected volumes.[22] Customization options, such as driver loading or scan policies in refind.conf, can help mitigate some compatibility tweaks in these scenarios.[7]Development History
Origins and Initial Release
rEFInd originated as a fork of the rEFIt boot manager, which had ceased development in 2010, with its initial public release announced on March 14, 2012, as version 0.2.0 and hosted on SourceForge.[1][2] The project was created and initially maintained by Roderick W. Smith, who was motivated by the need for a reliable boot manager to handle multi-boot setups involving Linux and macOS on UEFI systems.[1] Initial goals focused on improving UEFI handling across a broader range of hardware beyond Apple systems, including fixes for rEFIt bugs such as volume scanning errors that could lead to disk corruption issues on drives larger than approximately 500 GiB.[17] Early development saw rapid iterations: version 0.2, released in March 2012, introduced support for themes to enhance user interface customization.[23] By December 2012, version 0.5 added compatibility with Secure Boot through integration with the Shim bootloader, enabling authenticated booting on systems enforcing this security feature.[6][24] Distribution began via SourceForge downloads, with early adoption in Linux distributions; for instance, rEFInd was included in Fedora 18, released in January 2013, facilitating easier installation for users of that distro.[25][26]Maintenance and Updates
Since its inception in 2012, rEFInd has been solely maintained by Roderick W. Smith, who handles all core development and release management.[1] Community contributions are facilitated through pull requests on GitHub mirrors of the project and discussions on SourceForge, allowing users to report bugs and suggest improvements.[27] The development process is characterized by irregular releases, typically triggered by accumulated bug reports, compatibility issues, or targeted enhancements rather than a fixed schedule. Source code is hosted on SourceForge, with comprehensive documentation, binaries, and installation guides available on the maintainer's website at rodsbooks.com.[2][4] Key milestones in rEFInd's update history include version 0.10.0, released in November 2015, which added initial support for ARM (AArch64) architectures, broadening its applicability to non-x86 platforms like certain embedded systems and servers.[28] Version 0.13.0, released on February 15, 2021, introduced significant improvements to Secure Boot functionality, including better handling of signed binaries and integration with tools like Shim for key enrollment.[3][29] In March 2023, version 0.14.0 enhanced EFI driver loading mechanisms, resolving issues with properly signed drivers under Secure Boot environments and improving overall boot reliability.[30][3] The most recent update, version 0.14.2 on April 6, 2024, focused on minor bug fixes, such as filesystem detection errors and UI rendering glitches, without introducing major new features.[3][8] As of November 2025, no major releases have occurred this year, reflecting the project's reactive update cadence. Ongoing maintenance faces challenges in adapting to rapidly evolving UEFI specifications, including support for newer hardware features like TPM 2.0, which requires careful handling of cryptographic key management and boot integrity verification to maintain compatibility across diverse firmware implementations.[6] Future development is expected to emphasize stability and incremental refinements, with potential emphasis on ARM ecosystem expansion and refined Secure Boot capabilities to address emerging security standards.[3]Adoption
Use in Operating Systems and Distributions
rEFInd is widely packaged in major Linux distributions, facilitating its use as a boot manager for multi-boot setups, particularly alongside Windows. In Arch Linux, therefind package is available in both official repositories and the Arch User Repository (AUR), providing icons tailored for Arch and other distributions. Ubuntu includes rEFInd through its official repositories and a dedicated Personal Package Archive (PPA) maintained by the developer, allowing straightforward installation via apt. Fedora similarly offers rEFInd packages in its repositories, such as rEFInd-tools for management utilities, making it a recommended option for dual-booting Fedora with Windows on UEFI systems.[4][12][31][32]
On macOS, rEFInd is popular for multi-boot configurations on genuine Apple hardware and Hackintosh systems, enabling seamless booting of Linux or Windows alongside macOS. It integrates well with macOS's EFI environment, often used to chainload alternative operating systems without disrupting the native boot process, and is particularly valued on older Macs or those with third-party hardware for its graphical interface and automatic OS detection. Installation on macOS typically involves mounting the EFI System Partition (ESP) and running the refind-install script, which handles placement in /Volumes/ESP/EFI/refind.[1][17]
For Windows integration in EFI setups, rEFInd serves as a versatile boot manager for multi-OS environments, detecting and launching the Windows Boot Manager while allowing users to select other loaders. It is compatible with BitLocker-encrypted drives when booted via Secure Boot, provided the system is configured to trust rEFInd's EFI binary—achievable by enrolling keys or using Microsoft's boot policy adjustments via Group Policy to permit chainloading from non-Microsoft loaders. Manual installation from Windows involves mounting the ESP, copying files to \EFI\refind, and updating the Boot Configuration Data (BCD) with bcdedit to point to rEFInd's executable.[17][33]
rEFInd supports loaders for other operating systems, including FreeBSD, Haiku, and ReactOS, through its automatic detection of EFI applications on the ESP, making it suitable for diverse multi-boot scenarios. For FreeBSD, it can chainload the boot1.efi or loader.efi files in UEFI setups, often used in dual-boot configurations with Windows on ZFS-root systems. Haiku's official UEFI booting guide mentions rEFInd as an example boot manager for multi-OS setups, suggesting placement in the ESP's \EFI\BOOT directory to detect and launch Haiku's bootloader alongside other OSes. ReactOS, as an EFI-compatible OS, can be booted via rEFInd by detecting its FreeLoader EFI application, supporting experimental multi-boot tests on compatible hardware.[7][34][19][35]
Installation methods for rEFInd vary by operating system but emphasize placement on the EFI System Partition for broad compatibility. Distro-specific packages, such as RPM for Fedora or Debian for Ubuntu, automate installation and ESP updates, often placing binaries in /usr/share/refind before invoking the refind-install script. The refind-install script, included in binary distributions, simplifies deployment on Linux and macOS by mounting the ESP, copying files to \EFI\refind, and adding NVRAM entries via efibootmgr or bless. Manual installation, required for custom or cross-OS setups, involves mounting the ESP (e.g., as /boot/efi on Linux or R: on Windows), copying the rEFInd binaries and drivers, and configuring boot entries with tools like efibootmgr or bcdedit to ensure rEFInd loads first in the UEFI boot order.[17][36][4]