UEFI syslinux не загружает initrd через HTTP при загрузке PXE

2663
Nobody

Я пытаюсь настроить загрузку GParted Live PXE и следую инструкциям PXELINUX, чтобы настроить загрузку.

У меня он работает с TFTP - сервера, но теперь я хочу, чтобы переключить загрузку vmzlinuz, initrdи других «больших» файлов для HTTP, так как это очень медленный процесс .

Однако, когда я изменяю initrd=/gparted/initrd(TFTP) на http://192.168.0.1/gparted/initrdв конфигурации pxe, экран загрузки зависает бесконечно

Getting cached packet My IP is 192.168.0.97 Loading vmlinuz... ok <-- that is still loadedvia TFTP) Loading http://192.168.0.1/gparted/initrd... 

Глядя на сетевой трафик с помощью Wireshark я могу видеть соответствующие передачи для /gparted/syslinux.efi, /gparted/ldlinux.e64, /gparted/pxelinux.cfg/default, /gparted/vmlinuz. После этого наступает мертвая пауза, поэтому я предполагаю, что стек HTTP не работает должным образом.

На странице PXELINUX написано:

Начиная с версии 5.10, специальный двоичный файл PXELINUX, lpxelinux.0, изначально поддерживает передачу по HTTP и FTP.

Однако в разделе UEFI говорится:

Загрузчики "(l) pxelinux.0" могут загружать клиенты на основе BIOS. Аппаратное обеспечение, использующее UEFI, должно использовать адекватный «syslinux.efi» (для EFI IA32 или EFI X64 соответственно) вместо использования «(l) pxelinux.0».

Как вы можете видеть из списка загруженных файлов TFTP, после моего опыта в моем предыдущем вопросе PXE я перешел с загрузчиком UEFI.

Существует ли также дополнительная «l» -версия загрузчиков UEFI, которая предлагает поддержку HTTP? Что я могу сделать для дальнейшей диагностики?

1
Согласно [этому сообщению] (http://www.syslinux.org/archives/2014-August/022549.html), он должен поддерживать HTTP. Это может зависеть от функций UEFI, которые могут быть нарушены в вашей конкретной реализации. Daniel B 7 лет назад 0
Немного поэкспериментировав, я обнаружил, что Syslinux непригоден для сетевой загрузки UEFI. Я предлагаю вам перейти на что-то еще, как Grub2. Daniel B 7 лет назад 0
@DanielB: Спасибо за исследования. Я собирался проверить некоторые другие реализации UEFI, но у меня было очень ограниченное время. Превратите этот комментарий в ответ с небольшим объяснением того, что вы пытались сделать, и я приму это. Nobody 7 лет назад 0

1 ответ на вопрос

2
Daniel B

Согласно этому сообщению, syslinux.efiпредполагается поддержка HTTP. Это может зависеть от некоторых функций / сервисов UEFI. В этом отношении конкретная реализация UEFI вашей доски может быть нарушена.

Поэтому я провел несколько тестов, используя мой компьютер и QEMU с прошивкой OVMF, используя мою существующую конфигурацию PXELINUX. Я заметил следующие эффекты:

  • Когда у меня была локальная загрузка по умолчанию и установлен тайм-аут, он сразу же завершал работу, возвращая меня в меню выбора загрузки (ПК) или перезагрузки (QEMU).
  • Когда у меня был какой - либо пользовательский интерфейс (проверено: vesamenu.c32, menu.c32) включен, он будет висеть (PC) или перезагрузка (QEMU).
  • Когда я удалил UI, DEFAULTи TIMEOUTя прибыл в обычном текстовом режиме подсказки. Ничто не загрузилось бы, хотя, это только жаловалось ни на то, UIни DEFAULTна установку.

Этот опыт в сочетании с тем фактом, что GRUB2 работал безупречно, включая графический режим на моем ПК и QEMU, приводит меня к выводу, что SYSLINUX 6.03 (пока) не подходит для сетевой загрузки UEFI.

К сожалению, GRUB2 не был создан для установки «вручную». Он также очень тяжелый, он загружается через PXE в течение нескольких секунд (в обычной модульной версии). Хотя я не знаю лучшей альтернативы.