PXEとGRUB - トラブルシューティング方法

PXEとGRUB - トラブルシューティング方法

ネットワークブートを設定し、あるマザーボードで機能しようとしていますが、他のマザーボードでは正しく機能しないようです。理由がわかるのに十分な出力は表示されません。

したがって、「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/tftpTFTPはルートディレクトリとして使用され、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/syslogTFTPサーバーには次のものがあります。

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-sizedhcpd構成には対応する行がないようです。一部の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)セクションでは、ファイル転送の合計サイズについて説明します。転送されたファイルの実際のサイズと一致しない場合は、理由を見つけた可能性があります。ただし、問題を解決するにはファームウェアのアップデートが必要な場合があります。

おすすめ記事