Загрузчик systemd

Материал из ALT Linux Wiki

Загрузчик systemd (только для UEFI)

Подготовка

  1. Удостовериться, что раздел ESP существует и смонтирован по правильному маршруту:
# mount | awk '/\/boot\/efi/{print $1}'
/dev/sdb1

/dev/sdb1 — это у меня так; у вас может быть какой-то другой диск и раздел.

  1. Создать каталоги для размещения загрузчиков, образов и настроек меню:
# mkdir -p /boot/efi/{altlinux,loader/entries}

Установка

Состоит в:

  • размещении пар «загрузчик + образ ядра» в произвольном (под)каталоге на разделе ESP, смонтированном по маршруту /boot/efi;
  • создании/правке конфигурационных файлов по намертво прибитым маршрутам (см. следующий раздел);
  • отдаче команды # bootctl install (порой приходится добавить опцию с маршрутом до раздела ESP, но мне делать такого не пришлось).

Настройка

Опции загрузки меняются через файл (маршрут и имя ровно таковы и более никаковы) /boot/efi/loader/loader.conf:

default altlinux-5.1.17
timeout 5
editor  1

Здесь указаны:

  • пункт загрузки по умолчанию (по сути — имя файла меню без расширения .conf),
  • секунды предзагрузочной задержки и
  • возможность внесения изменений в выбранный пункт перед загрузкой (не знаю, у меня не срослось пока).

Каждый пункт меню (кроме автоматически определяемого загрузчика Windows) настраивается отдельным файлом.

В моём случае их два (маршрут к каталогу именно таков, имена же файлов произвольные — обязательно лишь расширение .conf):

  • /boot/efi/loader/entries/altlinux-5.1.16.conf
title   ALT Linux 5.1.16
linux   /altlinux/vmlinuz-5.1.16-un-def-alt2
initrd   /altlinux/initrd-5.1.16-un-def-alt2.img
  • /boot/efi/loader/entries/altlinux-5.1.17.conf
title   ALT Linux 5.1.17
linux   /altlinux/vmlinuz-5.1.17-un-def-alt1
initrd   /altlinux/initrd-5.1.17-un-def-alt1.img
#options root=/dev/disk/by-label/root rw initrd=\EFI\altlinux\intel-ucode.img

В каждом из них 3 обязательных строки:

  • название пункта, как оно должно выглядеть на экране загрузки,
  • маршрут до загрузчика и
  • маршрут до образа системы.

Как видно по второму файлу, есть и необязательная строка опций, через которую можно, к примеру, задать точку монтирования корневой ФС и/или подгрузить образ с микрокодом процессора (мне подобным опять же пользоваться не доводилось).

Обновление ядра

После установки нового ядра (и сноса старых) приходится:

  • скопировать

Минусы

Ручное внесение изменений (в отличие от GRUB) как в общее меню загрузчика, так и в каждый его пункт, что потенциально может привести к невозможности загрузки некорректно отредактированного пункта (кроме автоопределённой Windows).

В связи с этим настоятельно рекомендуется не удалять предпоследнее установленное ядро, не трогая его конфигурацию в загрузчике systemd, как минимум для возможности поправить огрехи в настройке свежеустановленного, буде таковые случились.

Устранение проблем

Пока только одной — Windows заменяет очередность загрузчиков даже на запароленном UEFI. Лечится из самой Windows следующей командой от имени админа:

bcdedit /set {bootmgr} path \EFI\systemd\systemd-bootx64.efi