Каков правильный способ использования 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.

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

  • Как настроить efibootmgr, когда root / является зашифрованным разделом?
  • grub: система загрузки на диске без GPT в режиме UEFI
  • Переключитесь на макет dvorak при загрузке. (дешифрование и sddm)
  • Установка Debian с зашифрованным root: установщик не видит EFI / загрузочный раздел
  • Не удалось установить UEFI Fedora 21
  • как создать загрузочную флешку, которая может загружаться как BIOS, так и UEFI?
  • Что я должен сделать перед двойной загрузкой Windows 7 и Debian в EFI?
  • Предустановленные окна 8.1 не загружаются после установки Linux mint 17.1
  • 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, может быть безопаснее только выполнять те части, которые вы можете проверить.

    Interesting Posts

    Могу ли я получить полные возможности видео в гостевой книге Arch Linux в Virtual Box?

    root для новых chromeos lenovo n21 для python dev

    Linux: что такое испорченное ядро?

    (test -n $ st)! = (test -z $ st) право?

    Как перенести файлы с полного раздела на один с большим количеством комнат?

    Разрешение Virt-manager Отказано при доступе к пулу NFS

    Записи Crontab в Linux Server автоматически удаляются автоматически

    Исправлены ли сломанные пакеты на debian?

    Могу ли я использовать Unix для балансировки нагрузки на два сервера Linux?

    Как сохранить «отступ» от перемещения фигурных скобок до следующей строки?

    Как предотвратить расширение, когда я использую шаблон в качестве аргумента для скрипта?

    Сообщение об ошибке сценария копирования CSV в bash

    Могут ли Linux-системы на нескольких виртуальных машинах совместно использовать один и тот же раздел подкачки?

    Как создать начальный скрипт LSB Header для этого скрипта в Debian?

    Не удается получить меню grub2 для отображения

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