web-dev-qa-db-ja.com

UEFI syslinuxは、PXEブートでHTTPを介してinitrdをロードしません

GParted Live PXEブート をセットアップしようとしています。そして [〜#〜] pxelinux [〜#〜] の指示に従ってブートをセットアップします。

TFTPで動作しますが、vmzlinuzinitrd、およびその他の「大きな」ファイルの読み込みが遅いため、HTTPに切り替えたいと思います。

ただし、pxe設定でinitrd=/gparted/initrd(TFTP)をhttp://192.168.0.1/gparted/initrdに変更すると、ロード画面が無期限にハングします。

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転送をネイティブにサポートします。

ただし、 EFIセクション は次のように述べています。

「(l)pxelinux.0」ブートローダーは、BIOSベースのクライアントをネットブートすることができます。 UEFIを使用するハードウェアは、「(l)pxelinux.0」を使用する代わりに、適切な「syslinux.efi」(それぞれEFIIA32またはEFIX64)を使用する必要があります。

TFTPでロードされたファイルのリストからわかるように、 以前のPXEの質問 での経験の後、UEFIローダーを使用しました。

HTTPサポートを提供するUEFIブートローダーの追加の「l」バージョンもありますか?さらに診断するにはどうすればよいですか?

2
Nobody

このメッセージ によると、syslinux.efiはHTTPをサポートすることになっています。これを行うには、一部のUEFI機能/サービスに依存する場合があります。その点で、ボードの特定のUEFI実装が壊れている可能性があります。

そこで、既存のPXELINUX構成を使用して、PCとOVMFファームウェアを備えたQEMUを使用していくつかのテストを実行しました。私は次の効果を観察しました:

  • デフォルトとしてローカルブートを設定し、タイムアウトを設定すると、すぐに終了し、ブート選択メニュー(PC)または再起動(QEMU)に戻ります。
  • UIがあったとき(テスト済み:vesamenu.c32menu.c32)有効にすると、ハング(PC)または再起動(QEMU)します。
  • UIDEFAULT、およびTIMEOUTを削除すると、通常のテキストモードのプロンプトが表示されます。何も起動しませんでしたが、UIDEFAULTも設定されていないことについてのみ不平を言いました。

この経験と、GRUB2がPCとQEMUの両方でグラフィックモードを含めて問題なく動作したという事実と相まって、SYSLINUX 6.03は(まだ)UEFIネットブートには適していないという結論に至りました。

残念ながら、GRUB2は「手動」でセットアップするようには作成されていません。また、非常に重く、PXEを介してロードするのに数秒かかります(通常のモジュラーバージョンを使用)。しかし、これ以上の選択肢はわかりません。

2
Daniel B