HyperV Gen2 VM无法通过PXE启动

问题描述 投票:0回答:1

我在HyperV中有两个虚拟机,它们位于同一个子网上的同一虚拟交换机(内部)上。我正在尝试将其中一个设置为用于PXE引导的DHCP和TFTP服务器。使用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
  • 没有虚拟硬盘或DVD
  • “固件”选项卡在引导顺序中只有一个项目 - 网络
  • 安全启动已禁用
  • VLAN标识已禁用
  • 网络适​​配器指向与第一个VM相同的内部交换机 启用虚拟机队列 - 已选中 启用IPsec任务卸载 - 已选中,最大数量:512 MAC地址动态 启用DHCP保护 - 未选中 启用路由器广告防护 - 未选中 发布网络 - 未选中 镜像模式 - 无 启用设备命名 - 未选中

问题是机器甚至没有到达TFTP服务器,因为它没有完成DHCP Discover-Offer-Request-Ack流程。如下面的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 ipxe
1个回答
0
投票

我认为在使用数字钢筋配置器时我遇到了同样的问题。在Gen 1上工作得很好,但在Gen 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

© www.soinside.com 2019 - 2024. All rights reserved.