efibootmgr: Управление диспетчером загрузки UEFI

Установка, настройка, эксплуатация.
Ответить
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

efibootmgr: Управление диспетчером загрузки UEFI

Сообщение root »

Оглавление
Введение
`efibootmgr` — Это утилита, которая взаимодействует с прошивкой EFI в системе, которая работает в качестве менеджера загрузок. С её помощью можно манипулировать загрузочными записями. Инструмент управления записями загрузки UEFI (UEFI boot entries) позволяет:
  • просматривать текущие записи (Boot####),
  • добавлять новые,
  • менять порядок загрузки,
  • удалять ненужные записи
  • Активировать / деактивировать записи
Применимо для систем с UEFI и разделом EFI System Partition (ESP).

Просмотр записей загрузки
Чтобы увидеть список загрузочных записей:

Код: Выделить всё

efibootmgr
Для подробного вывода с указанием путей:

Код: Выделить всё

efibootmgr -v
Пример:

Код: Выделить всё

BootCurrent: 0003
Timeout: 1 seconds
BootOrder: 0003,0001,0002
Boot0001* Fedora HD(1,....)/EFI/fedora/shimx64.efi
Boot0002* Windows Boot Manager HD(1,....)/EFI/Microsoft/Boot/bootmgfw.efi
Boot0003* UEFI Shell HD(1,....)/EFI/tools/Shellx64.efi

Добавление новой записи (пример UEFI Shell)
Чтобы добавить запись для UEFI Shell:

Код: Выделить всё

efibootmgr -c -d /dev/sda -p 1 -l '\EFI\tools\Shell.efi' -L 'UEFI Shell'
Где:
  • `-c` — создать новую запись,
  • `-d /dev/sda` — устройство с EFI-разделом,
  • `-p 1` — номер раздела,
  • `-l` — путь к EFI-файлу (относительно ESP),
  • `-L` — метка записи, отображаемая в меню UEFI.

Изменение порядка загрузки
Для установки своего порядка загрузки:

Код: Выделить всё

efibootmgr -o 0006,0003,0002,0007,0005,0004,0008
Где `Boot0006`, `Boot0003` и т.д. — номера записей из вывода команды `efibootmgr`.

Удаление записи загрузки
Чтобы удалить ненужную запись (например, `Boot0008`):

Код: Выделить всё

efibootmgr -b 8 -B

Работа при включённом Secure Boot
Secure Boot — это функция проверки цифровых подписей EFI-загрузчиков и драйверов.
При активном Secure Boot в UEFI могут быть ограничения на изменение загрузочных записей.
Если команда `efibootmgr` возвращает ошибку “Operation not permitted”, возможны причины:
  • Secure Boot активен и не разрешает модификацию переменных загрузчика.
  • Система использует “Setup Mode” или “User Mode” и защищает EFI переменные.
  • Работа выполняется не от имени root.
Чтобы временно отключить Secure Boot:

Код: Выделить всё

mokutil --disable-validation
reboot
После перезагрузки подтвердите действие в меню “Machine Owner Key (MOK)” и выберите “Disable validation”.
Теперь `efibootmgr` сможет изменять записи.

Если Secure Boot нужно оставить включённым, но разрешить работу с загрузчиком, можно добавить собственный ключ MOK:

Код: Выделить всё

mokutil --import my_key.der
reboot
После подтверждения ключа можно использовать подписанные загрузчики (например, свой shim или grub).

Проверить состояние Secure Boot:

Код: Выделить всё

mokutil --sb-state
Пример вывода:

Код: Выделить всё

SecureBoot enabled
Platform is in user mode

Советы и предостережения
  • EFI System Partition должна быть смонтирована (обычно `/boot/efi`).
  • Пути к файлам чувствительны к регистру и требуют обратных слешей (`\`).
  • При удалении записей проверяй, что не удаляешь текущую (`BootCurrent`).
  • Некоторые UEFI-прошивки не сохраняют порядок, заданный через efibootmgr.
  • Если ничего не работает — проверь Secure Boot и переменные UEFI через `dmesg | grep EFI`.

Описание некоторых параметров
  • -v, --verbose: Вывести подробную информацию о загрузочных записях (пути к файлам, UUID разделов).
  • -c, --create: Создать новую загрузочную запись.
  • -d, --disk /dev/sdX: Указать диск, на котором находится EFI-раздел (по умолчанию /dev/sda).
  • -p, --part X: Указать номер раздела EFI на диске (по умолчанию 1).
  • -l, --loader name: Указать путь к загрузчику (например, \\EFI\\ubuntu\\grubx64.efi).
  • -L, --label "Label": Задать метку (имя) для новой загрузочной записи.
  • -b, --bootnum XXXX: Указать номер загрузочной записи для операций (например, 0001).
  • -B, --delete-bootnum: Удалить запись, указанную параметром -b.
  • -o, --bootorder XXXX,YYYY,...: Установить новый порядок загрузки, указав номера через запятую.
  • -n, --bootnext XXXX: Указать, с какой записи загрузиться только один раз (одноразовая загрузка).
  • -N, --delete-bootnext: Удалить параметр одноразовой загрузки.
  • -a <bootnum> Устанавливает атрибут Active для указанной записи, делая её доступной для менеджера загрузки UEFI.

    Код: Выделить всё

    efibootmgr -a 0003
  • -A <bootnum> снимает флаг Active, делая запись неактивной. Часто применяется для переключения между загрузчиками (например, grub и Windows Boot Manager) без их удаления.

    Код: Выделить всё

    efibootmgr -A 0003
  • Формат номеров (ведущие нули):
    efibootmgr понимает номера как в формате с ведущими нулями (как они хранятся в NVRAM), так и без них.
    То есть команды -o 0006,0003 и -o 6,3 сделают абсолютно одно и то же. Вы можете писать как удобно.
  • Полнота списка (обязательно ли перечислять всё):
    Не обязательно. Команда -o (или --bootorder) перезаписывает весь список загрузки целиком тем порядком, который вы указали.
    • Если вы хотите только поменять порядок (например, переместить Windows на первое место), вам нужно указать только те пункты, порядок которых важен для загрузки прямо сейчас.
    • Система сама добавит остальные существующие загрузочные записи (которые вы не перечислили) в конец списка в том порядке, в котором они шли изначально или в алфавитном (hex) порядке.

Заключение
`efibootmgr` — мощный инструмент управления UEFI-загрузкой.
С его помощью можно добавлять и удалять записи, менять порядок, создавать загрузку с UEFI Shell.
При активном Secure Boot потребуется внимательность — система может блокировать изменения.
Работай аккуратно, проверяй содержимое `/boot/efi` и всегда имей Live-диск для восстановления.
Последний раз редактировалось root 15 мар 2026 10:11, всего редактировалось 7 раз.
Ответить