3

Как запустить 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 ответа3

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 чтобы заставить его работать.

1

IIRC, оболочка EFI не будет запускать файлы как программы, если их имена не заканчиваются на .efi . Таким образом, вы должны сначала переименовать файл ядра, чтобы его имя заканчивалось на .efi .

Если вы не можете переименовать файл ядра, вы все равно можете запустить ядро с помощью загрузчика заглушек EFI через другую программу менеджера загрузки, такую как gummiboot/systemd-boot или rEFInd. Эти инструменты не заботятся о расширении имени файла - по крайней мере, не так сильно, как оболочка. (Функция автоматического сканирования rEFInd соответствует *.efi , vmlinuz* , bzImage* и kernel* , но конфигурация загрузки вручную для обеих программ будет работать с любым именем файла.)

Также, как говорит fpmurphy1, ядро должно быть скомпилировано с поддержкой заглушек EFI. Большинство дистрибутивов включили эту поддержку в свои ядра версии 3.3.0 и новее, но это может быть не на 100% универсально, особенно если вы сами компилируете свое ядро. (Последнее, что я проверял, поддержка заглушки EFI не была частью конфигурации ядра по умолчанию для источника ядра, полученного с kernel.org .)

1

Требуется ли вам загрузчик или нет, зависит от того, поддерживает ли ваша конкретная версия ядра Linux EFI BOOT STUB.

Для получения дополнительной информации см. Следующее: https://www.kernel.org/doc/Documentation/efi-stub.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .