Efibootmgr

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Efibootmgr and the translation is 96% complete.

efibootmgr — это приложение для управления загрузочными записями UEFI.

Это не загрузчик. Это утилита, которая взаимодействует с прошивкой EFI в системе, которая работает в качестве загрузчика. С помощью efibootmgr можно создавать, менять местами и удалять загрузочные записи.

Установка

Ядро

Необходимо включить поддержку CONFIG_EFIVAR_FS:

Ядро Включение поддержки файловой системы EFI Variable
File systems  --->
   Pseudo filesystems  --->
       <*> EFI Variable filesystem

Emerge

У пакета sys-boot/efibootmgr нет каких-либо USE-флагов. Все что нужно сделать - это установить его:

root #emerge --ask sys-boot/efibootmgr

Конфигурация

EFI vars

Для того, чтобы успешно использовать efibootmgr, должна быть доступна файловая система переменных EFI. Следовательно система должна быть уже загружена в режиме EFI (а не через BIOS в режиме MBR), так как иначе переменные EFI сами по себе не будут доступны. Если система загружена в режиме MBR, перезагрузитесь и настройте все необходимое для загрузки EFI режиме. Обычно, для этого нужно, либо настроить встроенное ПО (BIOS), либо выбор в меню загрузки запись содержащую EFI.

Когда система загружена в EFI режиме запустите следующую команду, чтобы проверить доступность efivarfs:

root #mount | grep efivars
efivarfs on /sys/firmware/efi/efivars type efivarfs (ro,relatime)

Данная файловая система смонтирована в режиме "только чтение" (ro) через скрипт инициализации sysfs, поэтому необходимо смонтировать её вручную в режиме "чтение и запись" (rw) следующей командой:

root #mount -o remount,rw -t efivarfs efivarfs /sys/firmware/efi/efivars

Предварительные условия =

Если системный раздел EFI (ESP) не существует, он должен быть создан, см. EFI System Partition

Использование

Получение списка загрузочных записей

Чтобы получить список текущих загрузочных записей, используйте опцию --verbose или -v:

root #efibootmgr -v
BootCurrent: 0002
Timeout: 3 seconds
BootOrder: 0003,0003,0002,0000,0004
Boot0000* CD/DVD Drive  BIOS(3,0,00)
Boot0001* Hard Drive    BIOS(2,0,00)
Boot0002* Gentoo        HD(1,800,61800,6d98f360-cb3e-4727-8fed-5ce0c040365d)File(\EFI\boot\bootx64.efi)
Boot0003* Hard Drive    BIOS(2,0,00)P0: ST1500DM003-9YN16G

Создание загрузочной записи

Чтобы создать загрузочную запись EFI, нужно передать несколько аргументов программе efibootmgr:

  • --create или -c, чтобы создать новую запись;
  • --part или -p, за которой следует номер раздела, на котором находится системный раздел EFI;
  • --disk или -d, за которой следует диск, на котором находится системный раздел EFI;
  • --label или -L, за которой следует метка, которую необходимо использовать для загрузочной записи;
  • --loader или -l, за которой следует путь к образу EFI для загрузки
Важно
Путь к образу EFI для загрузки должен в качестве разделителя в путях содержать \ (обратный слеш) вместо / (передний слеш).
Важно
Вдобавок, если ESP уже был создан другой ОС, каталог может называться иначе, чем /boot/efi. Если ESP был создан другой ОС, начните загрузочную запись EFI с названия этого каталога, сразу после /boot.


Если структура каталога такая:

root #tree /boot/ -L 3
/boot/
└── EFI
    ├── Grub
    │   └── grubx64.efi
    └── Gentoo
        └── bzImage-4.14.83.efi

...тогда путь загрузчика будет таким:

root #efibootmgr -c -L "Grub" -l '\EFI\Grub\grubx64.efi'
root #efibootmgr -c -L "Gentoo" -l '\EFI\Gentoo\bzImage-4.14.83.efi'

Например:

root #efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l '\efi\boot\bootx64.efi'

It is also possible to add parameters - maybe not supported by all UEFI implementations[1] - to the kernel's command line:

root #efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l '\efi\boot\bootx64.efi' -u 'root=/dev/sda3 initrd=\efi\boot\initramfs.img quiet'

Опционально, дополнительные ядра могут быть установлены и определены прошивкой UEFI. Это особенно полезно когда вы хотите протестировать больше ядер или сделать дуалбут с другой операционной системой. Они будут показаны в окне выбора загрузки, обычно после нажатия правильной комбинации клавиш во время инициализации системы. Последний добавленный вариант загрузки всегда имеет наибольший приоритет, так что он будет по умолчанию. Если правильная комбинация клавиш неизвестна, обратитесь к официальной документации производителя вашего компьютера. Обычно эту информацию несложно найти.

Удаление загрузочной записи

Перед удалением записи, сначала определите, какой ID был у записи.

Чтобы удалить запись Gentoo, которая была показана выше (и имеет идентификатор Boot0002), попросите efibootmgr удалить запись с идентификатором 2, передав в качестве аргументов следующие значения: --bootnum или -b с идентификатором, и --delete-bootnum или -B, означающая, что нужно удалить запись:

root #efibootmgr -b 2 -B

Удаление

Unmerge

root #emerge --ask --depclean --verbose sys-boot/efibootmgr

Смотрите также

Примечания

  1. At least for Dell EFI firmwares, a workaround was implemented in kernel 5.10: https://lkml.org/lkml/2020/9/18/228