ネットワークブートを設定し、あるマザーボードで機能しようとしていますが、他のマザーボードでは正しく機能しないようです。理由がわかるのに十分な出力は表示されません。
したがって、「PXEサーバ」の設定は、DHCPとTFTPが同じサーバに常駐し、DHCPは次のように構成されます。
root@vogon:/etc/dhcp# cat dhcpd.conf
option domain-name "somewhere.com";
option domain-name-servers 192.168.50.9, 8.8.8.8;
allow booting;
allow bootp;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
subnet 192.168.50.0 netmask 255.255.255.0 {
range 192.168.50.10 192.168.50.190;
option routers 192.168.50.1;
option broadcast-address 192.168.50.255;
next-server 192.168.50.9;
#filename "debian-installer/amd64/bootnetx64.efi";
filename "grubx64.efi";
}
/srv/tftp
TFTPはルートディレクトリとして使用され、Debian 11ディストリビューションのブートローダを使用しているため、grubx64.efi
次の内容をお読みください。/debian-installer/amd64/grub/grub.cfg
root@vogon:/srv/tftp# cat debian-installer/amd64/grub/grub.cfg
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
set gfxpayload=text
set timeout=-1
menuentry 'Debian 11'{
set background_color=black
linux /debian/11/amd64/linux priority=low vga=788 ---
initrd /debian/11/amd64/initrd.gz
}
menuentry "Ubuntu 20.04" {
linux /ubuntu/20.04/amd64/linux only-ubiquity ip=dhcp ---
initrd /ubuntu/20.04/amd64/initrd.gz
}
AMD Ryzen 9 5950X CPUを搭載したROG Strix X570-Fゲーミングマザーボードにこの設定を使用して、Debian 11とUbuntu 20.04を正常にインストールしました。/var/log/syslog
TFTPサーバーには次のものがあります。
Jul 8 13:33:33 vogon in.tftpd[45602]: RRQ from 192.168.50.161 filename grubx64.efi
Jul 8 13:33:33 vogon in.tftpd[45602]: tftp: client does not accept options
Jul 8 13:33:33 vogon in.tftpd[45603]: RRQ from 192.168.50.161 filename grubx64.efi
Jul 8 13:33:34 vogon in.tftpd[45604]: RRQ from 192.168.50.161 filename /debian-installer/amd64/grub/x86_64-efi/command.lst
Jul 8 13:33:34 vogon in.tftpd[45605]: RRQ from 192.168.50.161 filename /debian-installer/amd64/grub/x86_64-efi/fs.lst
Jul 8 13:33:34 vogon in.tftpd[45606]: RRQ from 192.168.50.161 filename /debian-installer/amd64/grub/x86_64-efi/crypto.lst
Jul 8 13:33:34 vogon in.tftpd[45607]: RRQ from 192.168.50.161 filename /debian-installer/amd64/grub/x86_64-efi/terminal.lst
Jul 8 13:33:34 vogon in.tftpd[45608]: RRQ from 192.168.50.161 filename /debian-installer/amd64/grub/grub.cfg
Jul 8 13:33:37 vogon in.tftpd[45609]: RRQ from 192.168.50.161 filename /ubuntu/20.04/amd64/linux
Jul 8 13:33:40 vogon in.tftpd[45610]: RRQ from 192.168.50.161 filename /ubuntu/20.04/amd64/initrd.gz
ただし、他のマザーボードであるASUS ProArt Z690-CREATOR WIFI Intel Z690 PCIe 5.0 ATXおよびIntel Core i9 12900KS Special Edition 16コアAlder Lakeのロック解除CPUを使用すると、ログに次のもののみが表示されます。
Jul 12 10:49:00 vogon in.tftpd[58652]: RRQ from 192.168.50.136 filename grubx64.efi
Jul 12 10:49:00 vogon in.tftpd[58652]: tftp: client does not accept options
Jul 12 10:49:00 vogon in.tftpd[58653]: RRQ from 192.168.50.136 filename grubx64.efi
クライアント画面に「GRUBへようこそ!」というテキストが表示されます。このテキストはブートローダでのみ見つかるので、grubx64.efi
実際に実行を開始しているように見えますが、他のファイルを探し続けることはありません。
この問題をさらに解決するために私ができることについての提案はありますか?
ベストアンサー1
option boot-size
dhcpd構成には対応する行がないようです。一部のUEFI実装では、UEFIファームウェアが事前に正しい量のメモリを割り当てることができるように、UEFI PXEブートローダファイルのサイズを表示するためにこのオプションが必要です。
オプションを追加(正しいサイズ指定)しても害はなく、一部のUEFI実装に役立ちます。したがって、実行して512バイトのチャンクでdu -B 512 /srv/tftp/grubx64.efi
ファイルサイズを決定してから追加します。grub64.efi
option boot-size <size in blocks>;
subnet
文書宣言にdhcpd.conf
。
このboot-size
オプションの定義は、以前のバージョンの UEFI 仕様で PXE ブートの要件であったように見えますが、後続のバージョンでこれをオプションにするか、一部のファームウェア作成者が TFTPtsize
オプションを使用して PXE ブートファイルダウンロードルーチンを作成することを選択した場合でも驚かないでしょう。始める前に、着信ファイル転送の合計サイズを確認するようにTFTPサーバーに要求します(このオプションが利用可能な場合)。
そのoption boot-size
行を追加しても役に立たず、ファームウェアが有用な診断情報を提供しない場合は、TFTPトラフィックをダンプして分析する必要があるかもしれません(たとえば、次のようにwireshark
)、PXEブートサーバーでは次のことができます。
tcpdump -i eno1 -Knpvv -s0 -w pxe-tftp.cap udp
次に、tcpdumpの実行中にPXEブートを試み、Ctrl+を押してCtcpdumpを停止します。 TFTPサーバーはクライアントにデータを送信するために別のポートを割り当てることができ、そのポートがどのポートであるかを事前に知ることができないため、tcpdumpはTFTPパケットのみをフィルタリングできません。
Wiresharkでダンプを開いてtftp
フィルタ式バーに入力すると、目的のTFTPパケットのみが表示されます。次に、[パケットリスト]ウィンドウに表示されているTFTPパケットを右クリックし、Protocol Preferences
-> Trivial File Transfer Protocol
->Reassemble fragmented TFTP files
が選択されていることを確認します。これで、各TFTPファイル転送の最後のパケット(有効に表示する必要があります)を見つけ、[パケット分析]ウィンドウでブランチを開き、次のような行を表示できます(last)
。Trivial File Transfer Protocol
[nn TFTP Fragments (nnnnn bytes): ...]
この(nnnnn bytes)
セクションでは、ファイル転送の合計サイズについて説明します。転送されたファイルの実際のサイズと一致しない場合は、理由を見つけた可能性があります。ただし、問題を解決するにはファームウェアのアップデートが必要な場合があります。