【问题标题】:HyperV Gen2 VM not booting over PXEHyperV Gen2 VM 未通过 PXE 引导
【发布时间】:2023-04-08 14:06:01
【问题描述】:

我在 HyperV 中有两个虚拟机,它们都在同一个虚拟交换机(内部)上,在同一个子网上。我正在尝试将其设置为 DHCP 和 TFTP 服务器以进行 PXE 引导。使用 Gen1 机器,它在 pxelinux 上运行良好。不幸的是,带有 UEFI 的 Gen2 无法正常工作。

DHCP 和 TFTP 服务器

  • IP 192.168.1.2
  • VLAN 识别已禁用

DHCP - ISC DHCP 服务器在具有“主机”网络类型的 docker 容器中运行,配置如下:

set vendorclass = option vendor-class-identifier;
option pxe-system-type code 93 = unsigned integer 16;
set pxetype = option pxe-system-type;

authoritative;

default-lease-time 7200;
max-lease-time 7200;

option tftp-server-name "192.168.1.2";
option bootfile-name "efi/core.efi";

subnet 192.168.1.0 netmask 255.255.255.0 {
    interface "eth0:0";
    option routers 192.168.1.1;
    option subnet-mask 255.255.255.0;
    range 192.168.1.100 192.168.1.150;
    option broadcast-address 192.168.1.255;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    option domain-name   "ad.lholota.net";
    option domain-search "ad.lholota.net";

    if substring(vendorclass, 0, 9)="PXEClient" {
        if pxetype=00:06 or pxetype=00:07 {
            filename "efi/core.efi";
        } else {
            filename "pxelinux/pxelinux.0";
        }
    }
    next-server 192.168.1.2;
}

TFTP - tftp-hpa 在“主机”类型网络上的 docker 容器中运行。我可以通过标准的 tftp 客户端手动下载 efi 文件。

开机

  • HyperV Gen2
  • 没有虚拟 HDD 或 DVD
  • 固件选项卡在启动顺序中只有一项 - 网络
  • 安全启动已禁用
  • VLAN 识别已禁用
  • 网络适配器指向与第一个 VM 相同的内部交换机
    • 启用虚拟机队列 - 选中
    • 启用 IPsec 任务卸载 - 选中,最大数量:512
    • MAC 地址动态
    • 启用 DHCP 保护 - 未选中
    • 启用路由器广告防护 - 未选中
    • 受保护的网络 - 未选中
    • 镜像模式 - 无
    • 启用设备命名 - 未选中

问题在于机器甚至无法访问 TFTP 服务器,因为它没有完成 DHCP Discover-Offer-Request-Ack 流程。它卡在 offer 上,如下面的 dhcpdump 所示。引导机器从不发送请求消息。有趣的是,基于 BIOS 的 Gen1 HyperV 机器启动时没有任何问题,因此 DHCP 流程在那里工作。

你能告诉我可能出了什么问题吗?

  TIME: 2018-07-11 19:49:37.641
    IP: 0.0.0.0 (0:15:5d:0:50:d0) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: 8bf1c250
  SECS: 0
 FLAGS: 7f80
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:15:5d:00:50:d0:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         1 (DHCPDISCOVER)
OPTION:  57 (  2) Maximum DHCP message size 1472
OPTION:  55 ( 35) Parameter Request List      1 (Subnet mask)
                          2 (Time offset)
                          3 (Routers)
                          4 (Time server)
                          5 (Name server)
                          6 (DNS server)
                         12 (Host name)
                         13 (Boot file size)
                         15 (Domainname)
                         17 (Root path)
                         18 (Extensions path)
                         22 (Maximum datagram reassembly size)
                         23 (Default IP TTL)
                         28 (Broadcast address)
                         40 (NIS domain)
                         41 (NIS servers)
                         42 (NTP servers)
                         43 (Vendor specific info)
                         50 (Request IP address)
                         51 (IP address leasetime)
                         54 (Server identifier)
                         58 (T1)
                         59 (T2)
                         60 (Vendor class identifier)
                         66 (TFTP server name)
                         67 (Bootfile name)
                         97 (UUID/GUID)
                        128 (???)
                        129 (???)
                        130 (???)
                        131 (???)
                        132 (???)
                        133 (???)
                        134 (???)
                        135 (???)

OPTION:  97 ( 17) UUID/GUID                 008c0c7ab81331a0 ...z..1.
                        4297445b2e41610e B.D[.Aa.
                        a8               .
OPTION:  94 (  3) Client NDI                010300           ...
OPTION:  93 (  2) Client System             0007             ..
OPTION:  60 ( 32) Vendor class identifier   PXEClient:Arch:00007:UNDI:003000
---------------------------------------------------------------------------

  TIME: 2018-07-11 19:49:37.641
    IP: 0.0.0.0 (0:15:5d:0:50:12) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 2 (BOOTPREPLY)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: 8bf1c250
  SECS: 0
 FLAGS: 7f80
CIADDR: 0.0.0.0
YIADDR: 192.168.1.105
SIADDR: 192.168.1.2
GIADDR: 0.0.0.0
CHADDR: 00:15:5d:00:50:d0:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: efi/core.efi.
OPTION:  53 (  1) DHCP message type         2 (DHCPOFFER)
OPTION:  51 (  4) IP address leasetime      7200 (2h)
OPTION:   1 (  4) Subnet mask               255.255.255.0
OPTION:   3 (  4) Routers                   192.168.1.1
OPTION:   6 (  8) DNS server                8.8.8.8,8.8.4.4
OPTION:  15 ( 14) Domainname                ad.lholota.net
OPTION:  28 (  4) Broadcast address         192.168.1.255

【问题讨论】:

    标签: hyper-v dhcp pxe


    【解决方案1】:

    在 win10 2004(19041.685) 上启动 HyperV 虚拟机时,我遇到了我认为相同的问题:第 1 代有效,第 2 代超时,无需询问启动文件。

    我强烈怀疑这是 GEN2 UEFI PXE 实施的问题。因为只要我在 pxe 启动菜单中有至少两个条目可供选择,它就会按预期请求文件和下载。

    我为 tftp 和 DHCP 运行 dnsmasq,当且仅当最后两行中的至少一个未注释时,我的下面的配置文件才有效。 (pxe-service=x86-64_EFI 和 pxe-service=7 相等)

    配置上下文:https://linuxconfig.org/how-to-configure-a-raspberry-pi-as-a-pxe-boot-server

    # /etc/dnsmasq.d/03-tftpboot.conf
    enable-tftp
    tftp-lowercase
    tftp-root=/mnt/data/netboot
    pxe-prompt="Choose:"
    pxe-service=x86PC,"PXELINUX (BIOS)",bios/pxelinux.0
    pxe-service=x86PC,"WinPE (BIOS)",boot/pxeboot.n12
    pxe-service=x86-64_EFI,"PXELINUX (EFI)",efi64/syslinux.efi
    pxe-service=x86-64_EFI,"winpe (EFI)",boot/wdsmgfw.efi
    #pxe-service=7,"PXELINUX (EFI-7)",efi64/syslinux.efi  
    

    【讨论】:

      【解决方案2】:

      我想我在使用数字钢筋供应器时遇到了同样的问题。在第 1 代上效果很好,但在第 2 代上效果不佳。也遵循了相同的配置。

      查看数字钢筋代码,它似乎应该可以工作,但不能:https://github.com/digitalrebar/provision/blob/8269e1c7ff12a82854c19eccd114d064e2278211/midlayer/pxe.go#L252

      我认为这可能是相关的:

      https://wiki.fogproject.org/wiki/index.php/BIOS_and_UEFI_Co-Existence

      https://serverfault.com/questions/739138/hyper-v-2016-gen2-vm-pxe-dhcp-timeout-wireshark-dhcp-discover-offer

      【讨论】:

      • 我通过明确设置“下一个服务器”解决了我的问题,现在它可以工作了。
      猜你喜欢
      • 2020-03-14
      • 2021-07-16
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      相关资源
      最近更新 更多