Вы здесь

Загрузка через EFI

Для загрузки через EFI к ядру Linux добавляется заголовок исполняемого файла в формате PE/COFF, что позволяет использовать EFI для загрузки. Часть ядра, связанная с этим заголовком и кодом, на который передаётся управление называется EFI Stub — заглушка для EFI. Исходный код заглушки для архитектуры x86 находится в файлах arch/x86/boot/header.S и arch/x86/boot/compressed/eboot.c.

В x86 используется bzImage, в armzImage в arm64 — неупакованное ядро.

Для загрузки ядра файл bzImage, расположенный в arch/x86/boot/bzImage, необходимо скопировать в системный раздел EFI (ESP) на диске и переименовать с расширением .efi. Без расширения загрузчик EFI откажется его выполнить. Запуск bzImage.efi из файловых систем Linux загрузчиком EFI не поддерживается. Для архитектур arm и arm64 ядро также нужно скопировать в системный раздел, но можно не переименовывать.

Аргументы ядра в командной строке EFI указываются после bzImage.efi, например:

fs0:\Linux> bzImage.efi console=ttyS0 root=/dev/sda4 initrd=\Kernels\initrd-large.img

Параметр initrd= обрабатывается в заглушке, остальные передаются в ядро. Путь к initrd записывается как абсолютный путь от корня ESP. В качестве разделителя каталогов используется обратный слеш.

Для записи строки загрузки Linux в меню EFI можно воспользоваться efibootmgr:

efibootmgr --create \
--disk /dev/sda1 \
--label 'Linux 5.9.1 i915' \ # Строка в меню загрузки
--loader '\EFI\Boot\5.9.1.efi' \ # Образ для загрузки
'initrd=\EFI\gentoo\initramfs.img' \
'root=/dev/sda1 pcie_aspm=off'
Яндекс.Метрика