web-dev-qa-db-ja.com

UEFIのpxelinux.0とpxelinux.cfg / default構成の同等性は何ですか?

BIOS(レガシーモード)を備えたサーバーにPxeを使用していますが、これは完全に機能します。

レガシーモードを設定し、PXEからサーバーを起動すると、pxelinux.0が読み込まれ、/ var/lib/tftpboot/pxelinux.cfg/defaultからTFTP経由で構成メニューが読み取られます。

これがレガシーのもののtcpdumpです

            Vendor-Class Option 60, length 32: "PXEClient:Arch:00000:UNDI:002001"
            END Option 255, length 0
            PAD Option 0, length 0, occurs 188
18:38:42.626709 00:0c:29:c6:72:77 > Broadcast, ethertype IPv4 (0x0800), length 342: (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
    172.16.234.112.bootps > 255.255.255.255.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0x90d61ab8, secs 6, Flags [Broadcast] (0x8000)
          Your-IP 172.16.235.94
          Server-IP 172.16.234.112
          Client-Ethernet-Address 00:25:90:d6:1a:b8
          file "/pxelinux.0"[|bootp]

18:38:42.628329 00:25:90:d6:1a:b8 > 00:0c:29:c6:72:77, ethertype IPv4 (0x0800), length 70: (tos 0x0, ttl 20, id 3, offset 0, flags [none], proto UDP (17), length 56)

    172.16.235.94.ah-esp-encap > 172.16.234.112.tftp: [udp sum ok]  28 RRQ "/pxelinux.0" octet tsize 0

    172.16.235.94.49152 > 172.16.234.112.tftp: [udp sum ok]  80 RRQ "/pxelinux.cfg/002590d6-1ab8-0607-0025-90d61ab80e0f" octet tsize 0 blksize 1408

DHCPがIPを提供し、tftpがpxelinux.0とファイルを/pxelinux.cfg/から取得したことがわかります。

defaultでブートメニューを設定し、Centosなどをインストールできます。

しかし最近、UEFIを備えた新しいサーバーという問題に直面しました。 dhcpd.confによって、レガシーなのかUEFIなのかがわかると思います。

ddns-update-style none;
default-lease-time 3600;
max-lease-time 3600;
ignore client-updates;
allow booting;
allow bootp;


option client-system-Arch code 93 = unsigned integer 16;

class "pxeclients" {

        match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";

        next-server 172.16.234.112;


        if option client-system-Arch = 00:00 {


                filename = "/pxelinux.0";

        }

        if option client-system-Arch = 00:07 or option client-system-Arch = 00:09{

                filename = "/BOOTX64.EFI";

        }

}

subnet 172.16.232.0 netmask 255.255.248.0 {

        option routers                  172.17.232.1;
        option subnet-mask              255.255.248.0;
        option domain-name-servers      202.106.0.20;
        range dynamic-bootp 172.16.235.2 172.16.239.253;

}

BOOTX64.EFIはCentos7.5ISOからのものです。

レガシーなら大丈夫ですが、しがみつきます

start PXE Over IPV4

画面が点滅し、別のウィンドウから切り替わります(それが何であるかがわかりません、信じられないほど高速です)。

messagesから見て、DHCP要求とオファーを保持しました。

Mar  8 19:32:36 ks dhcpd: DHCPREQUEST for 172.16.235.95 (172.16.234.112) from 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:36 ks dhcpd: DHCPACK on 172.16.235.95 to 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:36 ks dhcpd: DHCPDISCOVER from 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:36 ks dhcpd: DHCPOFFER on 172.16.235.95 to 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:40 ks dhcpd: DHCPREQUEST for 172.16.235.95 (172.16.234.112) from 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:40 ks dhcpd: DHCPACK on 172.16.235.95 to 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:40 ks dhcpd: DHCPDISCOVER from 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:40 ks dhcpd: DHCPOFFER on 172.16.235.95 to 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:44 ks dhcpd: DHCPREQUEST for 172.16.235.95 (172.16.234.112) from 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:44 ks dhcpd: DHCPACK on 172.16.235.95 to 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:44 ks dhcpd: DHCPDISCOVER from 5c:b9:01:92:f6:34 via ens192
Mar  8 19:32:44 ks dhcpd: DHCPOFFER on 172.16.235.95 to 5c:b9:01:92:f6:34 via ens192

......

これがDHCPサーバーからのtcpdumpport 67です。

   0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, Request from 5c:b9:01:92:f6:34, length 359, xid 0xe8ffad6f, Flags [Broadcast] (0x8000)
          Client-Ethernet-Address 5c:b9:01:92:f6:34
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Request
            Server-ID Option 54, length 4: 172.16.234.112
            Requested-IP Option 50, length 4: 172.16.235.95

     ......

            GUID Option 97, length 17: 0.55.53.53.50.53.56.54.67.85.53.52.49.88.52.75.88
            NDI Option 94, length 3: 1.3.16
            Arch Option 93, length 2: 7
            Vendor-Class Option 60, length 32: "PXEClient:Arch:00007:UNDI:003016"
            END Option 255, length 0

19:32:28.031210 00:0c:29:c6:72:77 > Broadcast, ethertype IPv4 (0x0800), length 342: (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
    172.16.234.112.bootps > 255.255.255.255.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0xe8ffad6f, Flags [Broadcast] (0x8000)
          Your-IP 172.16.235.95
          Server-IP 172.16.234.112
          Client-Ethernet-Address 5c:b9:01:92:f6:34
          file "BOOTX64.EFI"[|bootp]

サーバーがBOOTX64.EFIを提供したようですが、tcpdump 'ポート69`が何も返さなかったため、クライアントは受け入れませんでした。

レガシーモードのtcpdumpポート69では、ファイルはクライアントによってダウンロードされます。

上記のメッセージからわかるように、サーバーのIDは

PXEClient:Arch:00007:UNDI:003016

これはelseと一致し、BOOTX64.EFIをロードする必要があります

だから私はかなり混乱しています、何が問題なのですか?

UEFI構成と同等のものは、クライアントと一致する必要があり(UEFIまたはレガシーであることを検出するため)、ブートローダーとしてpxelinux.0と同じファイルと、ブートメニューを読み取るファイルが必要です。どんな提案も歓迎します。

私は一日中グーグルで検索しましたが、RedhatDocsを含めて有用なものは何も見つかりませんでした。

Explore1、これから見ると pagesyslinux.efipxelinux.0と同じもので、dhcpd.confを変更して再起動すると、どちらも機能しません。

1
newbie
  • pxelinux.0は、レガシーターゲットを起動するためのPXEメニューを提供します
  • BOOTX64.EFIは、特定のLinuxディストリビューションを起動するのに役立ちますが、さまざまなPXE起動アセットのメニューはありません。
  • pxelinux.efisyslinux.efi起動用のPXEメニューを提供します[〜#〜] uefi [〜#〜]ターゲット
1
Pat

言うことは私が間違ったIPアドレスを入力したということですoption routers 172.17.232.1;は172.17ではなく172.16である必要があります

みんな、ありがとう。

0
newbie