要通过网络引导 ESXi 安装程序,DHCP 服务器必须将 TFTP 或 HTTP 服务器的地址以及初始引导加载程序的文件名发送到 ESXi 主机。

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

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

可以使用许多 DHCP 服务器。以下示例针对的是 ISC DHCP 服务器。如果使用的是适用于 Microsoft Windows 的某个 DHCP 版本,请参见 DHCP 服务器文档以确定如何将 next-serverfilename 参数传递到目标计算机。

使用 PXE 和 TFTP (IPv4) 引导的示例

此示例显示如何配置 ISC DHCP 服务器以使用 IPv4 地址为 xxx.xxx.xxx.xxx 的 TFTP 服务器来以 PXE 方式引导 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 二进制文件的位置。

使用 PXE 和 TFTP (IPv6) 引导的示例

此示例显示如何配置 ISC DHCPv6 服务器以使用 IPv6 地址为 xxxx:xxxx:xxxx:xxxx::xxxx 的 TFTP 服务器来以 PXE 方式引导 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 二进制文件的位置。

使用 iPXE 和 HTTP (IPv4) 引导的示例

此示例显示如何配置 ISC DHCP 服务器以通过从 IPv4 地址为 xxx.xxx.xxx.xxx 的 TFTP 服务器加载 iPXE 来引导 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 {
      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 {
      if exists user-class and option user-class = "iPXE" {
         # Instruct iPXE to load pxelinux as secondary bootloader
         filename = "pxelinux.0";
      } else {
         # Load the undionly configuration of iPXE as initial bootloader
         filename = "undionly.kpxe";
   }
}

在计算机尝试以 PXE 方式引导时,DHCP 服务器会提供 IP 地址和 TFTP 服务器上 undionly.kpxesnponly.efi 二进制文件的位置。在旧版 BIOS 情况下,iPXE 随即向 DHCP 服务器询问下一个要加载的文件,而此时该服务器返回 pxelinux.0 作为文件名。在 UEFI 情况下,iPXE 随即向 DHCP 服务器询问下一个要加载的文件,而此时该服务器返回 mboot.efi 作为文件名。在这两种情况下,iPXE 是常驻项,并且系统具有 HTTP 功能。因此,系统可以从 HTTP 服务器加载其他文件。

使用 iPXE 和 HTTP (IPv6) 引导的示例

此示例显示如何配置 ISC DHCPv6 服务器以通过从 IPv6 地址为 xxxx:xxxx:xxxx:xxxx::xxxx 的 TFTP 服务器加载 iPXE 来引导 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 作为文件名。iPXE 是常驻项,并且系统具有 HTTP 功能。因此,系统可以从 HTTP 服务器加载其他文件。

使用 UEFI HTTP (IPv4) 引导的示例

此示例显示如何配置 ISC DHCP 服务器以从 Web 服务器 www.example.com 通过 IPv4 使用本机 UEFI HTTP 引导 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 "httpclients" {
   match if substring(option vendor-class-identifier, 0, 10) = "HTTPClient";
   option vendor-class-identifier "HTTPClient";

   if option client-system-arch = 00:10 {
      # x86_64 UEFI HTTP client
      filename = http://www.example.com/esxi/mboot.efi;
   }
}

使用 UEFI HTTP (IPv6) 引导的示例

此示例显示如何配置 ISC DHCPv6 服务器以从 Web 服务器 www.example.com 通过 IPv6 使用本机 UEFI HTTP 引导 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.user-class code 15 = { integer 16, string };
option dhcp6.vendor-class code 16 = { integer 32, integer 16, string };

if option dhcp6.client-arch-type = 00:10 {
      # x86_64 HTTP clients
      option dhcp6.vendor-class 0 10 "HTTPClient";
      option dhcp6.bootfile-url "http://www.example.com/esxi/mboot.efi";
}