Как стать автором
Обновить
8.63

UEFI *

Unified Extensible Firmware Interface

Сначала показывать
Порог рейтинга

Загрузочное меню UEFI 101

При загрузке UEFI могут использоваться два boot-menu:

  • меню firmware, хранящееся в NVRAM. Можно вызвать при включении компьютера по hotkey (F8/Esc/etc). Отображается в настройках Gen 2 VM Hyper-V (при этом можно менять порядок загрузки, но не сами записи).

  • меню загрузчика (опционально). В Linux это меню GRUB, в Windows - bootmgr (отображается, если содержит больше одной записи). Современное ядро Linux может загружаться напрямую без GRUB.

В firmware загрузка настраивается через текстовые переменные:

Boot#### - загрузочная запись
BootOrder - упорядоченный список записей Boot####
BootCurrent - запись, с которой загружена система
BootNext - запись, с которой однократно будет загружена система после перезагрузки

Первоначально firmware добавляет записи Boot#### для подключенных поддерживающих загрузку устройств (DVD, HDD, USB, Network).

При загрузке с диска происходит поиск на нем GPT раздела типа EFI system partition (ESP), с которого запускается загрузчик EFI\Boot\bootx64.efi (имя файла зависит от аппаратной платформы). Обычно этот раздел отформатирован в FAT32, так как большинство прошивок UEFI не поддерживают чтение других файловых систем (хотя и могли бы).

Созданные Rufus загрузочные UEFI-флешки с Windows содержат основной NTFS раздел с дистрибутивом (FAT32 не поддерживает файлы размером больше 4Gb) и скрытый FAT32 ESP раздел с фирменным EFI загрузчиком, поддерживающим чтение NTFS.

Загрузчик ОС может добавить (и обычно добавляет) в firmware новую запись Boot####:
Windows: HD(1,GPT,E935CDDD-9506-45D3-A96B-9354674BA581,0x800,0x32000)/\EFI\Microsoft\Boot\bootmgfw.efi
Linux: HD(1,GPT,F3275A6A-A4B2-4AD4-A8C1-D74B9C4E9691,0x800,0x12C000)/\EFI\redos\shimx64.efi

Загрузчик shimx64.efi может быть подписан цифровой подписью для работы с Secure boot, его единственная функция - запустить grubx64.efi из текущей директории. grubx64.efi не подписан, так как его содержимое может изменяться.

В некоторых случаях при переносе диска между ПК или VM в новой системе ОС не загружается. Например, если в NVRAM старой системы была настроенная запись Boot####, а стандартный раздел EFI boot поврежден или не содержит загрузчик в стандартном расположении. В этом случае необходимо или восстановить запись утилитами bcdedit/efibootmgr, или, в случае VM, переносить ее через export/import вместе с nvram.

Посмотреть загрузочные записи firmware
Windows

bcdedit /enum firmware
bcdedit /enum "{fwbootmgr}"
###(displayorder = BootOrder)###

Linux
efibootmgr -v

Однократно загрузиться с конкретной записи
Windows

bcdedit /set {fwbootmgr} bootsequence {GUID}
bcdedit /set {fwbootmgr} bootsequence {bootmgr}
###(bootsequence = BootNext)###

Linux
efibootmgr --bootnext 0003

Изменить порядок загрузки
Windows

bcdedit /set {fwbootmgr} displayorder {98b6343e-bc5c-11ef-8148-00155d518900}
bcdedit /set {fwbootmgr} displayorder {bootmgr} /addfirst

Linux
efibootmgr --bootorder 0003,0000,0001

Почитать:
https://uefi.org/specs/UEFI/2.10/03_Boot_Manager.html
https://www.rodsbooks.com/refind/

Если в чем-то ошибаюсь, буду признателен вашим комментариям.

Теги:
Всего голосов 5: ↑5 и ↓0+6
Комментарии0

Вклад авторов