Каков правильный способ использования ISOLINUX с UEFI?

Я пытался добавить поддержку UEFI в 64-битную версию Minimal Linux Live довольно долго, к сожалению, без особого успеха. Как видно из приведенного ниже изображения, я получаю критическую ошибку каждый раз, когда я пытаюсь загрузиться через UEFI.

Минимальный Linux Live - UEFI

Это то, что я сделал, чтобы дойти до этого:

  1. Я загрузил syslinux-6.0.3 .
  2. Я выполнил инструкции здесь и скопировал efi64/efi/syslinux.efi в \EFI\BOOT\BOOTX64.EFI .
  3. Я также скопировал efi64/com32/elflink/ldlinux/ldlinux.e64 в \EFI\BOOT\LDLINUX.E64 .
  4. Я создал виртуальную машину в VirtualBox (версия 5.0.20) и включил UEFI.
  5. Я создал новый ISO-образ (все файлы конфигурации ISOLINUX находятся в корневой папке, см. Скриншот) и помещают его в качестве основного загрузочного носителя на виртуальной машине.
  6. После загрузки я сразу получил ошибку, которую вы видите на скриншоте.
  7. В этот момент мне пришлось переименовать \EFI\BOOT\BOOTX64.EFI в \EFI\BOOT\BOOTX641.EFI , чтобы «сломать» процесс загрузки и вернуться в оболочку UEFI.
  8. В UEFI-оболочке я использовал команду edit а затем \EFI\BOOT папку \EFI\BOOT .
  9. Я вручную вызвал BOOTX641.EFI и я закончил с той же ошибкой, которую вы можете видеть.

Итак, я могу заключить, что мой EFI-заглушка выполняется, но что-то ломается во время процесса выполнения, и на данный момент я не знаю, что случилось.

Я проверил структуру ISO-образа компакт-диска System Rescue, который, как я знаю, поддерживает UEFI, и я заметил следующее:

  1. Структура EFI содержит только один файл: \efi\boot\bootx64.efi .
  2. Размер \efi\boot\bootx64.efi составляет 724 КБ, а соответствующий файл в Syslinux 6.03 efi64/efi/syslinux.efi – ~ efi64/efi/syslinux.efi поэтому это определенно не тот же файл.
  3. Когда я скопировал \efi\boot\bootx64.efi с «System Rescue CD» и использовал его в структуре EFI в «Минимальном Linux Live», процесс загрузки UEFI был прекрасен до такой степени, что мне была представлена ​​оболочка GRUB 2.

Вот как я узнал, что файл \efi\boot\bootx64.efi на «System Rescue CD» имеет встроенную поддержку GRUB 2, поэтому это должно быть специально построенное решение.

Итак, проблема всего в нескольких словах – я использую пакет Vanilla Syslinux, и я хотел бы создать совместимую с UEFI конфигурацию, которая загружает простой образ ISO. После официальных инструкций, похоже, не работает для меня.

Все предложения высоко оценены! Спасибо!


Примечание 1: образ ISO загружается в режиме BIOS. Там нет проблем.

Примечание 2: Скорее всего, это не ошибка в VirtualBox, потому что другие операционные системы (например, Ubuntu и Linux Mint) загружаются очень хорошо в режиме UEFI.


EDIT (январь-2016):

Прошло очень много времени без ответа, поэтому я внедрил свое решение совершенно по-другому:

  • Я не использую Syslinux в режиме загрузки UEFI.
  • Я скомпилировал мое ядро ​​Linux с заглушкой EFI.
  • Я создал простой скрипт startup.nsh который запускается автоматически после загрузки UEFI.
  • Тот же скрипт загружает ядро ​​и initramfs.

Таким образом, я теряю некоторые функции загрузки, например, vga=ask который отлично работает в Syslinux но он не работает в режиме UEFI, так как для этой конкретной опции загрузки требуется надлежащий загрузчик Linux.

Несмотря на то, что у меня есть решение, которое отлично работает, вопрос все еще открыт!

One Solution collect form web for “Каков правильный способ использования ISOLINUX с UEFI?”

Это больше похоже на System Rescue CD, использующий GRUB, а не syslinux. Мой grub64.efi составляет около 1 МБ, но я думаю, вы можете его построить с меньшим количеством модулей.

Скопированное изображение называется syslinux.efi, поэтому я бы не назвал его isolinux. Я ожидаю, что он ищет файл syslinux.cfg , а не isolinux.cfg . (isolinux вернется к syslinux.cfg хотя).

Я также замечаю, что вы говорите: «все файлы конфигурации ISOLINUX находятся в корневой папке». Я не могу сказать, как вы создали ISO. Помните, что загрузчик должен иметь особый образ загрузки , а не дерево каталогов, которое вы видите, если вы монтируете файловую систему iso9660. Очевидно, что VirtualBox загружает что-то, поэтому проблема здесь не проблема, но если это более разрешительно, чем другие системы, вы все равно можете делать «неправильную» вещь.

Гибридные загрузочные образы, созданные «несколькими популярными дистрибутивами Linux», очень интересны для чтения, но последнее, что я прочитал, оказалось невозможным иметь одно изображение, поддерживающее все 32-битные EFI Mac, есть по крайней мере прошивки, которые видят несколько загрузочных образов и запрашивают у пользователя выбор между «1» и «2». Просто заметьте, прежде чем кто-либо попытается спуститься по кроличьей дыре, по крайней мере, с помощью поддержки Mac, может быть безопаснее только выполнять те части, которые вы можете проверить.

  • Есть ли способ включить безопасную загрузку в Linux?
  • Установщик Fedora 25 не обнаружит SSD в UEFI. Клавиатура / трекпад не работает в LEGACY
  • LiveSub / installer от Debian 8 Jessie не загружается в режиме UEFI с 32-разрядной прошивкой UEFI
  • Черный экран после GRUB
  • Восстановление загрузочного раздела EFI
  • Неверный файл iso, предотвращающий загрузку Debian dvd с помощью uefi
  • как установить GRUB в ESP с помощью efibootmgr?
  • Как загрузить изображение UEFI из PXE?
  • Не удается загрузить Live USB Linux Mint DE на моем компьютере UEFI
  • как добиться оптимального выравнивания для раздела emmc?
  • Проблема с запуском: неверная таблица разделов или использование UEFI BOOT
  • Проблема с двойной загрузкой EFI на HP Pavilion 15 с Windows 8 и Debian 8
  • Interesting Posts

    Найдите файл в папке1 и выполните сценарий, если этот файл не находится в папке2

    Raspbian / Debian Jessie: обновление ядра в автономном режиме

    Сообщения широковещания не отображаются на gnome-terminal, но отображаются на xterm

    Ошибка при создании ядра Linux для универсальной платы

    Шифровать слово X для шифрования / etc / shadow

    Выключить и перезапустить контрольный код?

    Синхронизация локального каталога с удаленным каталогом в Linux

    Как сделать окно отображения Openbox только в определенной области

    Новый компьютер продолжает сбой при новой установке

    Как распечатать информацию о беспроводной точке доступа в диапазоне?

    Как распределять общие библиотеки, как?

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

    sshfs и Emacs: файл изменен на диске

    Как вы работаете со старыми серверами?

    Почему этот скрипт запрашивает пароль?

    Linux и Unix - лучшая ОС в мире.