要以 PXE 方式引导 ESXi 安装程序,DHCP 服务器必须将 TFTP 服务器的地址以及初始引导加载程序的文件名发送到 ESXi 主机。

目标计算机首次引导时,它会通过网络广播数据包,请求信息以便自行引导。DHCP 服务器将响应此请求。DHCP 服务器必须能够确定目标计算机是否允许引导以及初始引导加载程序二进制文件的位置(通常是位于 TFTP 服务器上的文件)。

警告:

如果网络中已有一个 DHCP 服务器,则不要设置第二个 DHCP 服务器。如果有多个 DHCP 服务器响应 DHCP 请求,计算机可能会获得错误或存在冲突的 IP 地址,或者可能接收不到正确的引导信息。在设置 DHCP 服务器之前,请与网络管理员联系。有关配置 DHCP 的支持,请与 DHCP 服务器供应商联系。

许多 DHCP 服务器可以以 PXE 方式引导主机。如果使用的是适用于 Microsoft Windows 的某个 DHCP 版本,请参见 DHCP 服务器文档以确定如何将 next-serverfilename 参数传递到目标计算机。

使用 TFTP (IPv4) 引导的示例

此示例显示如何配置 ISC DHCP 服务器以使用 IPv4 地址 xxx.xxx.xxx.xxx 处的 TFTP 服务器引导 ESXi

#
# ISC DHCP server configuration file snippet.  This is not a complete
# configuration file; see the ISC server documentation for details on
# how to configure the DHCP server.
#
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 xxx.xxx.xxx.xxx;
   if option client-system-arch = 00:07 or option client-system-arch = 00:09 {
      filename = "mboot.efi";
   } else {
      filename = "pxelinux.0";
   }
}

在计算机尝试以 PXE 方式引导时,DHCP 服务器会提供 IP 地址和 TFTP 服务器上 pxelinux.0mboot.efi 二进制文件的位置。

使用 TFTP (IPv6) 引导的示例

此示例显示如何配置 ISC DHCPv6 服务器以通过 IPv6 地址 xxxx:xxxx:xxxx:xxxx::xxxx 处的 TFTP 服务器引导 ESXi

#
# ISC DHCPv6 server configuration file snippet.  This is not a complete
# configuration file; see the ISC server documentation for details on
# how to configure the DHCP server.
#
allow booting;
allow bootp;
option dhcp6.bootfile-url code 59 = string;
option dhcp6.bootfile-url "tftp://[xxxx:xxxx:xxxx:xxxx::xxxx]/mboot.efi";

在计算机尝试以 PXE 方式引导时,DHCP 服务器会提供 IP 地址和 TFTP 服务器上 mboot.efi 二进制文件的位置。

使用 HTTP (IPv4) 引导的示例

此示例显示如何配置 ISC DHCP 服务器以通过 IPv4 地址 xxx.xxx.xxx.xxx 处的 Web 服务器引导 ESXi。对旧版 BIOS 主机使用 gPXELINUX 和对 UEFI 主机使用 iPXE 的示例。

#
# ISC DHCPv6 server configuration file snippet.  This is not a complete
# configuration file; see the ISC server documentation for details on
# how to configure the DHCP server.
#
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 xxx.xxx.xxx.xxx;
   if option client-system-arch = 00:07 or option client-system-arch = 00:09 {
      if exists user-class and option user-class = "iPXE" {
         # Instruct iPXE to load mboot.efi as secondary bootloader
         filename = "mboot.efi";
      } else {
         # Load the snponly.efi configuration of iPXE as initial bootloader
         filename = "snponly.efi";
      }
   } else {
      filename "gpxelinux.0";
   }
}

在计算机尝试以 PXE 方式引导时,DHCP 服务器会提供 IP 地址和 TFTP 服务器上 gpxelinux.0snponly.efi 二进制文件的位置。在 UEFI 情况下,iPXE 随即向 DHCP 服务器询问下一个要加载的文件,而此时该服务器返回 mboot.efi 作为文件名。

使用 HTTP (IPv6) 引导的示例

此示例显示如何配置 ISC DHCPv6 服务器以通过 IPv6 地址 xxxx:xxxx:xxxx:xxxx::xxxx 处的 TFTP 服务器引导 ESXi。

#
# ISC DHCPv6 server configuration file snippet.  This is not a complete
# configuration file; see the ISC server documentation for details on
# how to configure the DHCP server.
#
allow booting;
allow bootp;

option dhcp6.bootfile-url code 59 = string;
if exists user-class and option user-class = "iPXE" {
   # Instruct iPXE to load mboot.efi as secondary bootloader
   option dhcp6.bootfile-url "tftp://[xxxx:xxxx:xxxx:xxxx::xxxx]/mboot.efi";
} else {
   # Load the snponly.efi configuration of iPXE as initial bootloader
   option dhcp6.bootfile-url "tftp://[xxxx:xxxx:xxxx:xxxx::xxxx]/snponly.efi";
}

在计算机尝试以 PXE 方式引导时,DHCP 服务器会提供 IP 地址和 TFTP 服务器上 snponly.efi (iPXE) 二进制文件的位置。iPXE 随即向 DHCP 服务器询问下一个要加载的文件,而此时该服务器返回 mboot.efi 作为文件名。