rEFInd

From Gentoo Wiki
Jump to: navigation, search
Resources

rEFInd is a boot manager for EFI and UEFI platforms forked from and successor to rEFIt. It provides a graphical interface for launching EFI-based operating systems and accessing EFI-based utilities, and has the functionality to scan multiple filesystems for executable EFI binaries.

Note
Parts of this page have been copied from Syslinux as they are both capable (u)EFI boot managers and have similar steps with regards to management of the ESP.

Installation

Installing rEFInd builds the EFI binaries but does not install them into the EFI System Partition (ESP) - additional steps are needed to finish installing rEFInd after the package has been emerged.

USE flags

rEFInd has optional support for reading several filesystems before loading the operating system. This allows to keep the kernels on the root partition or /boot partition instead of on the ESP. It should be noted, however, that filesystem drivers are not needed if it's intended to copy kernels to the ESP - they are only needed if you want rEFInd to scan the relevant filesystem for EFI executables.

USE flags for sys-boot/refind The rEFInd UEFI Boot Manager by Rod Smith

btrfs Construire le gestionnaire EFI pour le système de fichier btrfs local
custom-cflags Build with user-specified CFLAGS (unsupported) global
doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally global
ext2 Construire le gestionnaire EFI pour le système de fichier ext2 local
ext4 Construire le gestionnaire EFI pour le système de fichier ext4 local
gnuefi Compiler en utilisant GNU-EFI au lieu de Tianocore local
hfs Construire le gestionnaire EFI pour le système de fichier hfs local
iso9660 Construire le gestionnaire EFI pour le système de fichier iso9660 local
ntfs Construire le gestionnaire EFI pour le système de fichier ntfs local
reiserfs Construire le gestionnaire EFI pour le système de fichier reiserfs local

Emerge

root #emerge --ask sys-boot/refind
rEFInd has been built and installed into ${EROOT%/}/usr/share/${P}
You will need to use the command 'refind-install' to install
the binaries into your EFI System Partition

ESP Installation

Once the rEFInd package has been emerged, a second step is needed to install the binaries to the ESP. If an ESP does not exist, one needs to be created. See EFI System Partition. It is advisable to mount it at /boot.

The rEFInd package comes with an install command called refind-install. Running it will

  • Automount the boot partition according to /etc/fstab
  • Install its refind_x64.efi application and other stuff into the ESP
  • Call efibootmgr to set itself as the default boot manager.
root #refind-install
ShimSource is none
Installing rEFInd on Linux....
ESP was found at /boot using vfat
Copied rEFInd binary files

Copying sample configuration file as refind.conf; edit this file to configure
rEFInd.

Installing it!
rEFInd has been set as the default boot manager.
Creating //boot/refind_linux.conf; edit it to adjust kernel options.

Installation has completed successfully.
user $tree -L 3 /boot
/boot
├── EFI
│   ├── refind
│   │   ├── icons
│   │   ├── keys
│   │   ├── refind.conf
│   │   └── refind_x64.efi
│   └── tools
└── refind_linux.conf
user $efibootmgr -v
Boot000x* rEFInd Boot Manager   HD(1,GPT,1729a003-cf0d-4bd4-88c9-cc24d8d418c4,0x800,0x2f000)/File(\EFI\refind\refind_x64.efi)

Boot000x* can vary depending on what numbers are free.

Warning
If /boot cannot be found in /etc/fstab refind-install will default to using /boot/efi/EFI and even move an existing /boot/EFI to /boot/efi/EFI.

EFI Fallback Boot Image

Most EFI and UEFI firmware support a fallback EFI image to boot from if the configured EFI file cannot be found, and some will also override the configured boot selection if the fallback boot image is found. This can be used to boot into EFI mode when doing so otherwise is difficult.

Simply copy the refind directory on the ESP to BOOT and rename the refind EFI file according to your platform.

root #cp -r /boot/EFI/refind /boot/EFI/Boot
root #mv /boot/EFI/Boot/refind_x64.efi /boot/EFI/Boot/bootx64.efi

This can be used as either a permanent setup or as a temporary bootstrap to get the system to boot in EFI mode. Note that on x86 platforms, the x64 component is replaced with x86.

Kernel management

rEFInd detects and displays an icon appropriate for the operating system kernel based on the directory it is in. To display a nice Gentoo logo, move the kernel (and initramfs if required) to /boot/EFI/Gentoo.

root #mv /boot/vmlinuz-4.2.0-gentoo /boot/EFI/Gentoo/vmlinuz-4.9.16-gentoo.efi
root #mv /boot/initramfs-4.2.0-gentoo /boot/EFI/Gentoo/initramfs-4.9.16-gentoo.img

Kernels and initramfs go into their EFI subdirectory:

user $tree -L 3 /boot
/boot
├── EFI
│   ├── Gentoo
│   │   ├── vmlinuz-4.9.16-gentoo.efi
│   │   └── initramfs-4.9.16-gentoo.img
│   ├── refind
│   │   ├── icons
│   │   ├── keys
│   │   ├── refind.conf
│   │   └── refind_x64.efi
│   └── tools
└── refind_linux.conf

Alternatively, kernels (and initramfs if in use) my be kept in /boot. As previously stated, when used with the appropriate filesystem driver, rEFInd can scan the root partition for suitable Linux kernels to boot.

Note
File names are important to rEFInd, especially for matching kernels with their initramfs. Follow the above naming convention for best results, though more detail can be found in the config file.

Kernel cmdline

When booting an EFI stub kernel without rEFInd, the kernel cmdline (CONFIG_CMDLINE) needs to be specified. However you can also specify different boot configurations to appear as different menu options within the rEFInd menu. This is done by creating the file /boot/efi/EFI/gentoo/refind_linux.conf with a menu title and the matching cmdline options on each line.

FILE /boot/EFI/gentoo/refind_linux.conf
"Default"	"root=/dev/sda2 rootfstype=ext4 ro quiet"
"Console"	"root=/dev/sda2 rootfstype=ext4 ro quiet nox"
"Emergency"	"root=/dev/sda2 rootfstype=ext4 ro 1"

The main selection screen for rEFInd will use the first option as the default option, however alternate boot entries can be accessed by highlighting your kernel and pressing F2. You can also modify cmdline on-the-fly by pressing F2 on a menu item to open it in an editor. When ready, press Enter to boot the kernel.

Note
The kernel cmdline options above are for example only - you will need to have your own options that allow your kernel to boot for your system.

See also

External resources