Прошло некоторое время с тех пор, как я читал о UEFI, и я забыл, как некоторые части соединяются. Я забыл, как работают вместе UEFI и загрузчик Grub. Я скажу то, что я помню, пожалуйста, поправьте меня, если я ошибаюсь:
- UEFI не зависит от ОС и работает по принципу единого раздела ESP независимо от количества дисков.
- Раздел ESP — это то место, где новые операционные системы будут «подписываться» на процесс UEFI, добавляя свои загрузчики и ссылки на разделы в свои собственные папки. По сути, для каждой установленной ОС есть одна папка в /boot/efi.
- Загрузчики хранятся в NVRAM в виде последовательности.
Сейчас я использую машину с Ubuntu, Windows и Arch. У каждой ОС есть свой загрузчик, но всякий раз, когда моя машина показывает мне "загрузочные записи", я на самом деле смотрю на конфигурацию Grub Ubuntu. Это как если бы я использовал grub Ubuntu для загрузки любой из операционных систем на моей машине.
Итак, вопрос: как UEFI узнает, что Ubuntu — мой «главный» загрузчик? Почему мне не показываются загрузчики Windows или Arch всякий раз, когда я запускаю свою машину?
решение1
UEFI — это системная прошивка, а GRUB — это загрузчик, созданный для соответствия прошивке.
GRUB с BIOS принимает форму загрузочного кода внутри MBR и перед первым разделом. С UEFI GRUB может принимать форму одного grubx64.efi
файла внутри раздела ESP. Идентификаторы архитектуры GRUB предназначены для BIOS i386-pc
и для UEFI на 64-битном оборудовании x86 x86_64-efi
.
UEFI ничего не знает - он обычно просто представляет меню для загрузчиков, которые он находит. Он не представляет меню, если находит только один загрузчик, и затем загружает его, не задавая вопросов.
В вашем случае Grub, очевидно, является единственным присутствующим загрузчиком, поэтому он запускается сразу при загрузке.
Существует два способа выбора Grub для загрузки прошивкой EFI:
Переменные загрузки UEFI хранятся в системной памяти NVRAM. В Linux их можно редактировать с помощью
efibootmgr
; в Windowsbcdedit /enum FIRMWARE
можно вывести их список и затем редактировать.Если переменные загрузки UEFI не определены, прошивка UEFI ищет загрузчики внутри раздела ESP. В вашем случае она может найти
\EFI\boot\bootx64.efi
64-битное оборудование.