Как UEFI узнает, какую конфигурацию загрузчика использовать?

Как UEFI узнает, какую конфигурацию загрузчика использовать?

Прошло некоторое время с тех пор, как я читал о 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:

  1. Переменные загрузки UEFI хранятся в системной памяти NVRAM. В Linux их можно редактировать с помощью efibootmgr; в Windows bcdedit /enum FIRMWAREможно вывести их список и затем редактировать.

  2. Если переменные загрузки UEFI не определены, прошивка UEFI ищет загрузчики внутри раздела ESP. В вашем случае она может найти \EFI\boot\bootx64.efi64-битное оборудование.

Связанный контент