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

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

  • Установка Linux без UEFI
  • Загрузите Linux Mint с USB в режиме устаревания
  • Как я могу загрузить Debian с USB-накопителя из Windows 10?
  • Я думаю, Ubuntu испортил мою EFI. Я нахожусь над моей головой
  • USB-клавиатура работает с перебоями в GRUB 2 при перезагрузках - как заставить ее работать последовательно?
  • Переключить debian из наследия в UEFI
  • Система не загружается после исчерпания батареи в соответствии с политикой запуска «Все UEFI»
  • Как написать / отредактировать / обновить переменную eIi OsIndications из командной строки?
  • 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

    Улимит неограниченное поведение поведения стека

    Как установить разные обои для каждого экрана из командной строки в Gnome3?

    Логотип входа в систему Solaris 11

    Выборочно пересылать электронную почту на основе домена?

    Переименование нескольких каталогов

    как найти файл с именем, не указанным в bash?

    Форматировать вывод на определенную длину строки

    Копирование всех файлов из одного каталога во все каталоги в том же родительском каталоге

    Команда Sed запускается с жестко заданным значением в регулярном выражении, но с ошибкой с переменной в сценарии

    Как переместить несколько файлов и добавить расширение .pgp?

    Что происходит с приостановленными заданиями в unix?

    Когда / bin / sync когда-либо полезен в современном Linux?

    Есть ли инструмент командной строки для анализа частоты звука

    Перезапустить вентилятор вручную в Linux

    Uboot передает аргументы в ядро!

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