DHCP 伺服器必須將 TFTP 或 HTTP 伺服器的位址以及初始開機載入器的檔案名傳送至 ESXi 主機。
目標機器首次開機時,會在網路中廣播封包,要求取得自行開機所需的資訊。DHCP 伺服器會進行回應。DHCP 伺服器必須能夠判斷目標機器是否獲准開機,還有初始開機載入器二進位檔案的位置。對於 PXE 開機,位置是 TFTP 伺服器上的檔案。對於 UEFI HTTP 開機,位置是 URL。
有許多 DHCP 伺服器可供使用。下列範例適用於 ISC DHCP 伺服器。如果使用適用於 Microsoft Windows 的 DHCP 版本,請參閱 DHCP 伺服器說明文件來判定如何將 next-server 和 filename 引數傳遞到目標機器。
使用具有 IPv4 的 PXE 和 TFTP 進行開機的範例
此範例顯示如何將 ISC DHCP 伺服器設定為使用 IPv4 位址為 xxx.xxx.xxx.xxx 的 TFTP 伺服器對 ESXi 進行 PXE 開機。
# # 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.0 或 mboot.efi 二進位檔案的位置。
使用具有 IPv6 的 PXE 和 TFTP 進行開機的範例
此範例顯示如何將 ISC DHCPv6 伺服器設定為使用 IPv6 位址為 xxxx:xxxx:xxxx:xxxx::xxxx 的 TFTP 伺服器對 ESXi 進行 PXE 開機。
# # 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 二進位檔案的位置。
使用具有 IPv4 的 iPXE 和 HTTP 進行開機的範例
此範例顯示如何將 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.kpxe 或 snponly.efi 二進位檔案的位置。在舊版 BIOS 案例中,iPXE 接著會向 DHCP 伺服器詢問下一個要載入的檔案,而這次伺服器會傳回 pxelinux.0 作為檔案名稱。在 UEFI 案例中,iPXE 接著會向 DHCP 伺服器詢問下一個要載入的檔案,而這次伺服器會傳回 mboot.efi 做為檔案名稱。在這兩種情況下,iPXE 是常駐的,且系統具有 HTTP 功能。因此,系統可以從 HTTP 伺服器載入其他檔案。
使用具有 IPv6 的 iPXE 和 HTTP 進行開機的範例
此範例顯示如何將 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 伺服器載入其他檔案。
使用具有 IPv4 的 UEFI HTTP 進行開機的範例
此範例顯示如何將 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; } }
使用具有 IPv6 的 UEFI HTTP 進行開機的範例
此範例顯示如何將 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"; }