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

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

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

  • После установки Arch Linux он просто показывает текст «Нет загрузочного устройства»,
  • Откуда система определяет временное имя хоста?
  • Почему мой X-сервер не будет запускаться как обычный пользователь?
  • Используйте некоторый загрузчик EFI для загрузки MBR
  • GRUB запускается в командной строке после перезагрузки
  • Msgstr "ошибка установки gummiboot-efi" на установке Archboot 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.

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

  • Загрузка из lvm-кешированного тома
  • Как записать debian iso в usb
  • 32bit EFI с 64-битной ОС Linux. Это можно сделать?
  • Как я могу изменить и перестроить Finnix ISO, чтобы включить мои собственные скрипты?
  • Загрузка EFI и RAID6
  • / sbin / init не существует - Выпуск
  • 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 и Unix - лучшая ОС в мире.