Обновление /boot
Во время установи Arch Linux на современные компьютеры с UEFI (замена БИОСу) мы создаём небольшой раздел на диске с точкой монтирования в /boot в который мы с помощью bootctl устанавливаем загрузчик. Этим загрузчиком является systemd-boot, который является частью systemd. Со временем systemd может обновляться как любой другой пакет Arch Linux. При этом загрузчик в /boot автоматически не обновляется. По этой причине, если вы уже давно пользуетесь одной установкой Arch Linux, то ваш загрузчик в /boot мог устареть.
Связанная статья: Что такое UEFI и чем он отличается от BIOS?
Эта статья расскажет, как посмотреть версию и поддерживаемые возможности, а также как обновить загрузчик systemd-boot в /boot.
Что такое systemd-boot
systemd-boot (сокращенно sd-boot) — простой менеджер загрузки UEFI. Он предоставляет графическое меню для выбора записи для загрузки и редактор командной строки ядра. Systemd-boot поддерживает системы только с прошивкой UEFI.
systemd-boot загружает информацию о загрузочной записи из системного раздела EFI (ESP), обычно монтируемого в /efi/, /boot/ или /boot/efi/ во время запуска ОС, а также из расширенного раздел загрузчика, если он существует (обычно монтируется в /boot/). Фрагменты файла конфигурации, ядра, initrds и другие образы EFI для загрузки обычно должны находиться на ESP или разделе расширенного загрузчика. Ядра Linux должны быть собраны с CONFIG_EFI_STUB, чтобы их можно было напрямую запускать как образ EFI. Во время загрузки systemd-boot автоматически собирает список загрузочных записей из следующих источников:
- Загрузочные записи, определённые с помощью файлов описания спецификации загрузчика, расположенных в /loader/entries/ на ESP и в разделе расширенного загрузчика. Обычно они описывают образы ядра Linux со связанными образами initrd, но также могут описывать произвольные другие исполняемые файлы EFI.
- Унифицированные образы ядра в соответствии со спецификацией загрузчика в виде исполняемых двоичных файлов EFI в /EFI/Linux/ на ESP и в разделе расширенного загрузчика.
- Диспетчер загрузки Microsoft Windows EFI, если он установлен.
- Диспетчер загрузки Apple MacOS X, если он установлен.
- Бинарный файл EFI Shell, если он установлен
- Перезагрузка в опцию настройки прошивки UEFI, если она поддерживается.
systemd-boot поддерживает следующие функции:
- Основные изменения конфигурации диспетчера загрузки (например, настройка тайм-аута, выбор загрузочной записи по умолчанию и т. д.) Могут быть сделаны непосредственно из пользовательского интерфейса загрузчика во время загрузки, а также во время выполнения системы с переменными EFI.
- Диспетчер загрузки интегрируется с командой systemctl для реализации таких функций, как systemctl reboot --boot-loader-entry=… (для перезагрузки в определённый пункт меню загрузки, например, «перезагрузка в Windows») и systemctl reboot --boot-loader-menu=… (для перезагрузки в меню загрузчика), реализовав интерфейс загрузчика.
- Переменная EFI, установленная загрузчиком, сообщает ОС о разделе ESP, используемом во время загрузки. Затем она используется для автоматического монтирования правильного раздела ESP в /efi/ или /boot/ во время работы ОС.
- Диспетчер загрузки предоставляет информацию о времени загрузки, затраченном на прошивку UEFI, с помощью Boot Loader Interface. Эта информация может быть отображена с помощью systemd-analyze
- В диспетчере загрузки реализован подсчёт загрузки и автоматический откат к более старым рабочим записям загрузки в случае сбоя.
- Диспетчер загрузки дополнительно считывает случайное начальное число из раздела ESP, объединяет его с «системным токеном», хранящимся в постоянной переменной EFI, и извлекает случайное начальное число для использования ОС в качестве инициализации пула энтропии, обеспечивая полный пул энтропии во время ранней загрузки.
Как обновить загрузчик в /boot
Программа bootctl может проверять прошивку EFI и статус загрузчика, выводить список доступных загрузчиков и записей загрузчика и управлять ими, а также устанавливать, обновлять или удалять загрузчик systemd-boot в текущей системе.
Чтобы проверить, используется ли в вашей системе systemd-boot выполните команду:
bootctl is-installed
Чтобы проверить текущую версию загрузчика и посмотреть другую информацию о нём выполните следующую команду:
bootctl
Вы увидите примерно следующее:
Обратите внимание на строку Product — в ней указана версия, на скриншоте это 249.5-3.
Также посмотрите на перечень Features — если вы установили свою систему достаточно давно, то некоторые функции могут быть отключены — обновление это исправит.
Например, список Features на скриншоте:
✓ Boot counting ✓ Menu timeout control ✓ One-shot menu timeout control ✓ Default entry control ✓ One-shot entry control ✓ Support for XBOOTLDR partition ✓ Support for passing random seed to OS ✗ Load drop-in drivers ✓ Boot loader sets ESP information
Большая часть списка отмечена зелёными галочками (✓), но один пункт (в вашем случае это могут быть другие пункты) отмечен красным крестиком (✗). Это означает, что systemd поддерживает все перечисленные функции, в том числе отмеченные крестиком, но установленный в данный момент загрузчик не поддерживает то, что отмечено крестиком. Для того, чтобы загрузчик начал поддерживать весь список, необходимо его обновление.
С помощью команды
pacman -Ss systemd
можно посмотреть актуальную версию пакета systemd. На скриншоте это 250-1. То есть можно обновиться до более новой версии.
Для проверки актуальной версии systemd возможно вы предпочтёте следующую команду:
pacman -Si systemd
Обновление загрузчика systemd-boot в /boot выполняет следующей командой:
sudo bootctl update
Чтобы изменения вступили в силу, нужно перезагрузить компьютер.
Близкие статьи
- Как в Arch Linux поменять операционную систему загружаемую по умолчанию (для UEFI и systemd-boot) (100%)
- Как включить Интернет в BlackArch (50%)
- Варианты установки BlackArch (50%)
- Создание загрузочной флешки BlackArch / Arch Linux (50%)
- Установка BlackArch, часть первая: Установка BlackArch в VirtualBox (50%)
- Настройка SSH в BlackArch (RANDOM - 50%)