Efibootmgr
efibootmgr — это приложение для управления загрузочными записями UEFI.
Это не загрузчик. Это утилита, которая взаимодействует с прошивкой EFI в системе, которая работает в качестве менеджера загрузок. С помощью efibootmgr можно создавать, менять местами и удалять загрузочные записи.
Установка
Ядро
CONFIG_EFIVAR_FS support needs to be enabled.
Использование efivarfs невозможно без сервисов EFI, которые также могут быть включены с помощью параметров командной строки ядра efi=runtime (в случае, если они отключены по умолчанию, например
CONFIG_EFI_DISABLE_RUNTIME=y
).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.
Использование
Получение списка загрузочных записей
При использовании старой версии efibootmgr необходим параметр --verbose
или -v
:
root #
efibootmgr
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 System Partition;--disk
или-d
, за которой следует диск, на котором находится системный раздел EFI;--label
или-L
, за которой следует метка, которую необходимо использовать для загрузочной записи;--loader
или-l
, за которой следует путь к образу EFI для загрузки
Путь к образу EFI для загрузки должен в качестве разделителя в путях содержать \ (обратный слеш) вместо / (передний слеш).
Вдобавок, если ESP уже был создан другой ОС, каталог может называться иначе, чем /efi/EFI. Если ESP был создан другой ОС, начните загрузочную запись EFI с названия этого каталога, сразу после /efi.
Если структура каталога такая:
root #
tree /efi/ -L 3
/efi/ └── EFI ├── Grub │ └── grubx64.efi └── Gentoo └── bzImage.efi
...тогда путь загрузчика будет таким:
root #
efibootmgr -c -L "Grub" -l '\EFI\Grub\grubx64.efi'
root #
efibootmgr -c -L "Gentoo" -l '\EFI\Gentoo\bzImage.efi'
Например:
root #
efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l '\efi\boot\bootx64.efi'
Также можно добавить параметры — возможно, не поддерживаемые всеми реализациями UEFI[1] — в командную строку ядра:
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
Removable media
EFI bootloaders on removable media are not configured as boot entries, so efibootmgr is not required. See removable media boot path on the ESP for details.
Удаление
Unmerge
root #
emerge --ask --depclean --verbose sys-boot/efibootmgr
См. также
- Refind — a boot manager for UEFI platforms.
- EFI stub — describes EFI stub kernels, i.e. kernels directly executable from UEFI.
- Efivarfs — a filesystem in the Linux kernel that enables users to create, delete, and modify (U)EFI variables
- Альтернатива 2: efibootmgr в Руководстве Gentoo
Примечания
- ↑ По крайней мере, для прошивок Dell EFI, обходной путь был реализован в ядре 5.10: https://lkml.org/lkml/2020/9/18/228