Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

rEFInd как альтернатива GRUB: настройка и темы

Сразу к делу: rEFInd, графический загрузчик UEFI, сам находит ядра и initramfs на всех разделах и показывает их в виде меню с иконками. Установка занимает две команды (pacman -S refind и refind-install), настройка сводится к правке одного файла refind.conf, а темы подключаются одной строкой include. В отличие от GRUB, конфиг не нужно перегенерировать после каждого обновления ядра: rEFInd сканирует разделы и подхватывает новый vmlinuz-linux автоматически.

Что такое rEFInd и чем он отличается от GRUB

rEFInd это менеджер загрузки для UEFI-систем. Он не хранит список пунктов в конфиге, как GRUB, а сканирует разделы в поисках загрузчиков и ядер. Нашёл vmlinuz-linux рядом с initramfs-linux.img на ext4 или btrfs разделе, добавил пункт в меню, подобрал иконку по имени ОС. Никаких grub-mkconfig после каждого обновления ядра.

Основные плюсы:

  • Автообнаружение ядер и других ОС без os-prober.
  • Графическое меню с иконками и темами из коробки.
  • Своя оболочка и утилиты прямо из меню загрузки.
  • Загрузка через EFISTUB, UKI и по сети.

Минусы тоже есть. rEFInd работает только на UEFI, для BIOS-систем он не подходит. Настройка параметров ядра менее гибкая, чем в GRUB, хотя для обычного использования её хватает.

Как установить rEFInd

Пакет лежит в официальных репозиториях:

sudo pacman -S refind

Дальше установщик сам кладёт файлы на ESP и создаёт запись в NVRAM:

sudo refind-install

Команда находит ESP, копирует туда каталог EFI/refind и регистрирует загрузчик как «rEFInd Boot Manager». После перезагрузки в меню UEFI появится новый пункт. Порядок загрузки при необходимости меняется через efibootmgr, разбор команд в статье «Порядок загрузки в NVRAM через efibootmgr».

Если запись в NVRAM не нужна, например ты хочешь загружаться с флешки или управлять порядком вручную, установи только файлы на ESP:

sudo refind-install --usedefault /dev/sda1

/dev/sda1 подставь свой ESP. В этом режиме rEFInd не трогает NVRAM, а кладёт загрузчик в EFI/BOOT/bootx64.efi, откуда его подхватывает прошивка.

ESP в /boot или /efi

refind-install сам определяет точку монтирования ESP. Если ESP смонтирована в /boot, конфиг появится в /boot/EFI/refind/refind.conf. Если в /efi, путь будет /efi/EFI/refind/refind.conf. Дальше в статье я пишу /boot/EFI/refind/, для /efi просто замени префикс.

Как настроить refind.conf

Весь конфиг лежит в одном файле: /boot/EFI/refind/refind.conf. Он читается при каждой загрузке, правки применяются сразу, без перегенерации.

Таймаут и разрешение

timeout 5
resolution 1920 1080

timeout задаёт секунды ожидания перед загрузкой пункта по умолчанию. resolution ставит разрешение меню, можно указать max, чтобы взять максимальное из поддерживаемых. Если картинка меню мылится, добавь:

use_graphics_for linux,windows

Эта строка включает графический вывод для перечисленных ОС. Без неё rEFInd может рисовать меню в текстовом режиме.

Какие разделы сканировать

scanfor internal,external,optical
  • internal: внутренние диски.
  • external: USB-накопители.
  • optical: оптические приводы.
  • bioshdd: поиск BIOS-загрузчиков на дисках с MBR.

Если не хочешь, чтобы rEFInd копался во флешках, убери external.

Пункт по умолчанию

default_selection "+,vmlinuz-linux"

Строка выбирает первый пункт, имя которого содержит vmlinuz-linux. Знак + означает «первый подходящий». Можно указать точное имя: default_selection "Arch Linux".

Утилиты в меню

showtools shell,memtest,mok_tool,about,reboot,shutdown,firmware

Добавляет в нижнюю часть меню иконки: оболочку UEFI, тест памяти, перезагрузку, выключение и вход в прошивку. firmware удобен, когда нужно попасть в UEFI без клавиши на старте.

Как rEFInd находит ядра и параметры загрузки

rEFInd ищет файлы с именами vmlinuz*, kernel*, bzImage* и пару к ним: initramfs-linux.img или initrd*.img. Для каждого ядра он создаёт пункт меню. Если в системе несколько ядер, например linux и linux-lts, в меню появятся оба пункта, каждый со своим initramfs.

Параметры загрузки берутся из файла refind_linux.conf, который лежит рядом с ядром, то есть в /boot. Сгенерировать его можно одной командой:

sudo mkrlconf

Утилита читает текущую командную строку ядра из /proc/cmdline и записывает варианты загрузки. Файл выглядит так:

"Boot with standard options"  "root=UUID=1a2b... rw"
"Boot to single-user mode"    "root=UUID=1a2b... rw single"
"Boot with minimal options"   "ro root=UUID=1a2b..."

Первая строка используется по умолчанию. Если в системе LUKS или btrfs, параметры вроде cryptdevice= и rootflags= тоже попадут сюда из /proc/cmdline. Проверь файл после генерации: cat /boot/refind_linux.conf. UUID корня можно сверить командой lsblk -f.

Если refind_linux.conf нет, rEFInd попробует загрузить ядро с минимальными параметрами, но корень может не найтись. Поэтому сразу после установки запускай mkrlconf.

Как подключить темы и иконки

Темы для rEFInd ставятся в каталог тем на ESP. Популярные варианты: rEFInd-minimal, Darkmini, rEFInd-minimal-black. Скачай архив с GitHub и распакуй:

sudo mkdir -p /boot/EFI/refind/themes
sudo tar -xzf rEFInd-minimal.tar.gz -C /boot/EFI/refind/themes

Затем подключи тему в конец refind.conf:

include themes/rEFInd-minimal/theme.conf

Путь относительный, от каталога с refind.conf. Внутри theme.conf прописаны баннер, иконки и цвета. После перезагрузки меню сменит оформление. Для GRUB похожий приём разобран в статье «Тема оформления GRUB: фон и шрифты».

Иконки для ОС

rEFInd поставляется с набором иконок для Linux, Windows и macOS. Иконка выбирается по имени файла ядра или загрузчика: нашёл vmlinuz-linux на разделе с меткой Arch, показал иконку Linux. Свои иконки можно положить в каталог темы и переопределить через icons_dir в theme.conf. Формат PNG, размер обычно 128 на 128 пикселей.

Если Windows не отображается в меню, проверь, что раздел с ней доступен для сканирования и в scanfor есть internal.

Как вернуться к GRUB

rEFInd не трогает GRUB: файлы загрузчика остаются на месте. Чтобы вернуть всё как было, удали запись rEFInd из NVRAM и сотри его каталог с ESP.

Сначала посмотри список записей:

efibootmgr

Найди строку с «rEFInd Boot Manager» и её номер вроде Boot0003, затем удали:

sudo efibootmgr -b 0003 -B

Потом удали файлы:

sudo rm -rf /boot/EFI/refind

Если rEFInd ставился с --usedefault, файлы лежат в /boot/EFI/BOOT/ под именем bootx64.efi. В этом случае запись в NVRAM не создавалась, достаточно удалить каталог. После этого в меню UEFI останется только GRUB. Смена загрузчика без переустановки системы разобрана в статье «Смена загрузчика с GRUB на systemd-boot»: приём тот же, только в обратную сторону.

Какие подводные камни бывают

Драйверы файловых систем

Если ESP отдельный от /boot, rEFInd не умеет читать ext4 или btrfs без драйверов. Ядро лежит на корневом разделе, а драйверов нет, меню пустое. Решение: установить драйверы:

sudo refind-install --alldrivers

Команда скопирует все драйверы в /boot/EFI/refind/drivers_x64/. Нужные файлы называются ext4_x64.efi и btrfs_x64.efi. Если ESP смонтирована в /boot, драйверы не нужны: rEFInd читает ядро через файловую систему ESP.

Пустой экран после установки

Частая причина: resolution выше, чем поддерживает прошивка. Поставь resolution max или убери строку совсем. Второй вариант: отключи графику для Linux строкой use_graphics_for windows.

rEFInd не видит Windows

Проверь scanfor и что раздел Windows не скрыт. Для dualboot с общим ESP смотри статью «Один EFI-раздел для dualboot».

Частые вопросы

Нужно ли удалять GRUB перед установкой rEFInd?

Нет. rEFInd встанет рядом, а в меню UEFI будет выбор между загрузчиками. GRUB можно удалить позже, когда убедишься, что rEFInd работает.

Почему rEFInd не видит ядро после обновления?

Он видит, просто пункт мог уехать вниз списка. Проверь default_selection и что refind_linux.conf на месте. После обновления ядра ничего перегенерировать не нужно.

Как поменять порядок пунктов в меню?

Порядок первого пункта задаёт default_selection, остальные rEFInd сортирует сам. Точный порядок можно навязать через dont_scan и also_scan в refind.conf.

rEFInd грузится, но система падает в initramfs?

Значит, параметры ядра неполные. Проверь refind_linux.conf: там должны быть root=UUID=... и rw. Перегенерируй файл командой sudo mkrlconf.

Чем rEFInd отличается от systemd-boot?

systemd-boot тоже автообнаруживает ядра, но работает только с ESP и не умеет читать ext4 или btrfs без дополнительных настроек. rEFInd сканирует все разделы и умеет грузить Windows и macOS из одного меню.

Полезные ресурсы

Заключение

rEFInd подходит тем, кто устал перегенерировать конфиг GRUB после каждого обновления ядра и хочет красивое графическое меню. Установка через refind-install, настройка в одном refind.conf, темы одной строкой include. Главное после установки: запусти mkrlconf, чтобы ядро получало правильные параметры, и при отдельном ESP не забудь про драйверы. Вернуться к GRUB можно в любой момент, удалив запись из NVRAM и каталог с ESP.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max