UEFI HTTPBootの詳細を学び、LANでネットワークブートオプションとして設定したいのですが、詳細は非常に不足しています。私が見つけた最高の文書は次のとおりです。スース文書HTTP Bootサーバーを構成するために必要な情報がありません。
私はPFSenseをDHCP / DNSサーバーとして使用します。 ~によるとこのブログ、PFSenseのHTTP起動オプションは、かなり新しいバージョンの2.6で利用可能です。ブログ投稿によると、PFSenseが正しく機能するために特別なオプションを使用して設定する必要があります。
vendor-class-identifier “HTTPClient”
「数量」は60です。
(NBP)の起動プロセスや要件、Network Boot Program
またはネットワーク起動用のペイロードを準備するプロセスに関する情報はほとんどありません。
いくつかの質問があります:
*.efi
HTTPブートのためにUEFIをサポートし、ファイルを含むLinuxディストリビューションを指すことはできますか?- NBPを準備するプロセスは何ですか?特定の展開のISOコンテンツをHTTP静的サーバーに抽出し、
*.efi
URLのファイルをポイントしますか? - EFIファイルがロードされるとブートローダが起動するようです。どのブートでも動作しますか?それとも特別にHTTPBootをサポートする必要がありますか?このプロセス
*.efi
や他のプロセスが特定のブートローダを実行していることを理解できるように、ブートローダをどのように設定しますか? - ルートファイルシステムは、URIファイルのホストへの相対パスとしてのみ指定されますか?
- ブートローダの設定後に複数の異なるディストリビューションを使用するには、ブートローダの設定に合わせて設定し、起動するファイルの
*.efi
いずれかを選択できますか? vendor-class-identifier
このオプションとそれに関連する「番号」とは何ですか?
答え1
HTTP起動のためにUEFIをサポートし、* .efiファイルを含むLinuxディストリビューションを指すことはできますか?
UEFIブートローダやHTTPを使用した起動を妨げるその他の動作に問題がないと仮定すると、なぜそうでないのかわかりません。
NBPを準備するプロセスは何ですか?特定の展開のISOコンテンツをHTTP静的サーバーに抽出し、
*.efi
URLのファイルをポイントしますか?
はい、これが最初のステップになります。ディストリビューションに応じて、いくつかのカーネルブートオプションを追加して、インストール環境に a) オペレーティングシステムドライバがネットワークインタフェース制御を引き継いだ後、ネットワークを(再)設定し、b) initramfs のインストール場所を通知するようにすることもできます.追加のインストーラコンポーネント(squashfsファイルシステムイメージなど)を見つけます(該当する場合)。これはディストリビューションによって異なります。
EFIファイルがロードされるとブートローダが起動するようです。どのブートでも動作しますか?それとも特別にHTTPBootをサポートする必要がありますか?このプロセス
*.efi
や他のプロセスが特定のブートローダを実行していることを理解できるように、ブートローダをどのように設定しますか?
UEFIブートローダは、LoadFile
UEFIファームウェアプロトコルを使用してディスクからファイルをロードできます。 UEFI実装がHTTPBootをサポートしている場合、同じファームウェアプロトコルはHTTP URLも受け入れることができます。ファームウェアには、ロードする最初のファイルのURLを知らせるためにDHCPサーバーが必要です。これは*.efi
ブートローダ実行可能ファイルであり、明らかに、完全なUEFI起動可能なISOイメージもあります。(13ページ参照)
おそらく、ブートローダは、ディスクメディアからの起動時に初期ブートローダファイルと同じディレクトリにある別のファイルを参照しているかのように、同じURIディレクトリパス内の他のファイルを参照できます。スラッシュまたはバックスラッシュで始まるすべてのファイルパスを参照します。できます。最初に引用されます。 DHCPサーバーによって提供された元のフルURLを使用して、指定されたホスト名へのフルURIパスとして解釈されます。
ルートファイルシステムは、URIファイルのホストへの相対パスとしてのみ指定されますか?
落ち着いて緊急にしないでください。 HTTPBootの唯一の使命は、ブートローダを操作してHTTPサーバーから他のファイルを簡単にロードできるようにすることです。 Linuxブートの場合、通常、これらのファイルは次のようになります。
- ロードする追加ファイルのパス(またはURI)とデフォルトのカーネルブートオプションを指定するGRUB構成ファイル
- カーネルファイル
- initramfsファイル(該当する場合)
ルートファイルシステムの選択はカーネルまたはinitramfsの操作であり、これが起こります。後ろにカーネルはUEFIファームウェアからシステム制御を取得しました。だからHTTPBootはまったく何もルートファイルシステムの指定に関連しています。
ルートファイルシステムに関しては、HTTPBootは本質的に古いスタイルのPXEブートと変わりません。 Linuxネットワークドライバを起動して設定するにはinitramfsが必要になり、ルートファイルシステムにアクセスするにはどの方法でも使用できます。 initramfsはこれをサポートできます。インストーラの場合、これは他の目的のためにHTTP URLからローカルRAMディスクにダウンロードされたsquashfsイメージであり、そうする必要がある場合はNFSrootかもしれません。構成方法は、完全に使用しているディストリビューションによって異なります。
ブートローダを設定した後に複数の異なるディストリビューションを使用するには、ブートローダの設定で適切に設定し、* .efiファイルを選択して起動できますか?
はい、しかし、セキュアブートは状況を複雑にします。セキュアブートサポートが必要な場合、シングルシムは通常、付属の展開shimx64.efi
の署名キーとオプションでマシン所有者キー(MOK)のみをサポートできます。ブートメニューリンクで他のディストリビューションにshimをロードできない場合は、「メイン」ディストリビューションを選択し、メジャーディストリビューションではなく、すべてのディストリビューションのカーネルとカーネルモジュールを手動で手動で再署名し、MOKを交換する必要があります。システムNVRAMに登録されています。または、システムがファームウェアのセキュアブートキー操作を許可している場合は、各リリースのセキュアブート証明書をファームウェアセキュアブートホワイトリスト(UEFI NVRAM変数db
)に追加できます。
vendor-class-identifier
このオプションとそれに関連する「番号」とは何ですか?
option vendor-class-identifier
ISC DHCP サーバーの構成構文は次のとおりです。DHCPオプション#60。
HTTPBootをサポートするUEFIファームウェアは、DHCP要求にDHCPオプション#60を含め、オプション値をstringに設定する必要がありますHTTPClient
。これは、一般的なPXEブートクライアントがこのオプションをstring PXEClient
+一部のハードウェア/ファームウェアアーキテクチャ識別子に設定するのと同じです。
これは、DHCPサーバーでHTTPBoot対応クライアントを検出するために使用でき、これらのクライアントに対するDHCP応答に同じオプションを含める必要があります。
接続した SuSE ドキュメントの DHCP 構成フラグメント:
class "httpclients" {
match if substring (option vendor-class-identifier, 0, 10) = "HTTPClient";
option vendor-class-identifier "HTTPClient";
filename "http://www.httpboot.local/sle/EFI/BOOT/bootx64.efi";
}
基本的には次のようになります。 「DHCP要求にDHCPオプション60が含まれていて、その値の最初の10バイトが文字列を形成している場合は、HTTPClient
応答で同じオプションを繰り返し、bootx64.efi
レガシーBOOTPブートファイル名パラメータにURLを指定してください。
理論的には、DHCPオプション#67(「ブートファイル名」)を使用してブートURLを指定することもできますが、実際にDHCPオプションRLで指定されている場合は、ファイル名/ uを破損するいくつかのファームウェア実装を見たことがありますが、許可するファームウェア実装はありません。 BOOTP形式が使用されます。他の実装には反対のバグがあるかもしれません。したがって、1つの方法でURLを指定してみてください。すぐに機能せず、HTTPサーバーのログまたはネットワークトラフィックダンプにファームウェアが破損したHTTP要求を生成していることが表示された場合は、逆の方法を試してください。