Как запустить vmlinuz-linux из оболочки efi? Я прыгаю в ESP и vmlinuz-linux
(vmlinuz-linux находится в ESP), но он говорит, что vmlinuz-linux isn't recognized as an internal or external command, operable program, or batch file
Почему я должен запустить сначала загрузчик я не понимаю.
3 ответа
Просто нужно было набрать /vmlinuz-linux root=PARTUUID=3518bb68-d01e-45c9-b973-0b5d918aae96 initrd=/initramfs-linux.img
с этого https://wiki.archlinux.org/index.php/EFISTUB#Booting_EFISTUB, но убрать косую черту /
перед vmlinuz-linux
чтобы заставить его работать.
IIRC, оболочка EFI не будет запускать файлы как программы, если их имена не заканчиваются на .efi
. Таким образом, вы должны сначала переименовать файл ядра, чтобы его имя заканчивалось на .efi
.
Если вы не можете переименовать файл ядра, вы все равно можете запустить ядро с помощью загрузчика заглушек EFI через другую программу менеджера загрузки, такую как gummiboot/systemd-boot или rEFInd. Эти инструменты не заботятся о расширении имени файла - по крайней мере, не так сильно, как оболочка. (Функция автоматического сканирования rEFInd соответствует *.efi
, vmlinuz*
, bzImage*
и kernel*
, но конфигурация загрузки вручную для обеих программ будет работать с любым именем файла.)
Также, как говорит fpmurphy1, ядро должно быть скомпилировано с поддержкой заглушек EFI. Большинство дистрибутивов включили эту поддержку в свои ядра версии 3.3.0 и новее, но это может быть не на 100% универсально, особенно если вы сами компилируете свое ядро. (Последнее, что я проверял, поддержка заглушки EFI не была частью конфигурации ядра по умолчанию для источника ядра, полученного с kernel.org
.)
Требуется ли вам загрузчик или нет, зависит от того, поддерживает ли ваша конкретная версия ядра Linux EFI BOOT STUB.
Для получения дополнительной информации см. Следующее: https://www.kernel.org/doc/Documentation/efi-stub.txt