您可以使用 iPXE 从 HTTP 服务器引导 ESXi 安装程序。以下主题讨论支持 UEFI 引导的 ESXi 主机和仅支持旧版 BIOS 的主机适用的必备条件和步骤。

  • 对于旧版 BIOS 计算机,该过程支持引导多个不同版本的 ESXi 安装程序,方法是对所有目标计算机使用同一 pxelinux.0 初始引导加载程序,但 PXELINUX 配置文件可能不同,具体视目标计算机的 MAC 地址而定。
  • 对于 UEFI 计算机,该过程支持引导多个不同版本的 ESXi 安装程序,方法是对所有目标计算机使用同一 mboot.efi 初始引导加载程序,但 boot.cfg 文件可能不同,具体视目标计算机的 MAC 地址而定。

前提条件

确认您的环境包含以下组件:

  • 从 VMware 网站下载的 ESXi 安装程序 ISO 映像。
  • 硬件配置受 ESXi 版本支持的目标主机。请参见《VMware 兼容性指南》
  • 目标 ESXi 主机上支持 PXE 的网络适配器。
  • 可以配置以进行 PXE 引导的 DHCP 服务器。请参见示例 DHCP 配置
  • TFTP 服务器。
  • 允许 TFTP 流量的网络安全策略(UDP 端口 69)。
  • 对于旧版 BIOS,您只能使用 IPv4 网络连接。对于 UEFI PXE 引导,可以使用 IPv4 或 IPv6 网络连接。
  • (可选)安装脚本(kickstart 文件)。
  • 多数情况下使用本地 VLAN。如果要指定用于 PXE 引导的 VLAN ID,请检查您的网卡是否支持 VLAN ID 规范。
确认您的环境还满足使用 HTTP 服务器进行 PXE 引导所需的以下必备条件:
  • 确认 HTTP 服务器可供目标 ESXi 主机访问。
  • 如果 ESXi 主机仅运行旧版 BIOS 固件,请获取 3.86 版本的 SYSLINUX 软件包。有关详细信息,请参见网络引导背景信息

过程

  1. 获取并配置 iPXE。
    1. 获取 iPXE 源代码。
    2. 在 iPXE 下载页面上,按照构建说明进行操作,但要运行以下命令之一。
      • 对于仅运行旧版 BIOS 固件的 ESXi 主机,请运行 make bin/undionly.kpxe
      • 对于运行 UEFI 固件的 ESXi 主机,请运行 make bin-x86_64-efi/snponly.efi
    3. undionly.kpxesnponly.efi 文件复制到 TFTP 服务器上的 /tftpboot 目录中。
  2. 如果 ESXi 主机仅运行旧版 BIOS 固件,请获取并配置 PXELINUX。
    1. 获取 SYSLINUX 版本 3.86 并进行解压,然后将 pxelinux.0 文件复制到 TFTP 服务器的 /tftpboot 目录中。
    2. 使用以下代码模型创建 PXELINUX 配置文件。
      ESXi-7.x.x-XXXXXX 是包含 ESXi 安装程序文件的 TFTP 子目录的名称。
      DEFAULT install
      NOHALT 1
      LABEL install
        KERNEL ESXi-7.x.x-XXXXXX/mboot.c32
        APPEND -c ESXi-7.x.x-XXXXXX/boot.cfg
        IPAPPEND 2
      
    3. 将 PXELINUX 文件保存在 TFTP 服务器上的 /tftpboot/pxelinux.cfg/ 目录中。
      文件名决定了是否所有主机都默认引导此安装程序。
      选项 描述
      同一安装程序 如果希望所有主机都默认引导此 ESXi 安装程序,请将文件命名为 default
      不同安装程序 如果只有特定主机必须引导此文件,请使用目标主机的 MAC 地址 (01-mac_address_of_target_ESXi_host) 命名文件。例如,01-23-45-67-89-0a-bc
  3. 如果 ESXi 主机运行 UEFI 固件,请将 efi/boot/bootx64.efi 文件从 ESXi 安装程序 ISO 映像复制到 TFTP 服务器的 /tftpboot 文件夹中,并且将文件重命名为 mboot.efi
    注: 新版本的 mboot.efi 通常可以引导旧版本的 ESXi,但旧版本的 mboot.efi 可能无法引导新版本的 ESXi。如果您计划配置不同的主机以引导不同版本的 ESXi 安装程序,请使用最新版本中的 mboot.efi
  4. 配置 DHCP 服务器。
  5. 在 HTTP 服务器上创建一个与其将包含的 ESXi 的版本同名的目录。例如, /var/www/html/ESXi-7.x.x-XXXXXX
  6. ESXi 安装程序映像的内容复制到新创建的目录。
  7. 修改 boot.cfg 文件
    1. 添加以下行:
      prefix=http://XXX.XXX.XXX.XXX/ESXi-7.x.x-XXXXXX
      其中, http://XXX.XXX.XXX.XXX/ESXi-7.x.x-XXXXXX 是安装程序文件在 HTTP 服务器上的位置。
    2. 如果 kernel=modules= 行中的文件名以正斜杠 (/) 字符开头,请删除该字符。
    3. 如果 kernelopt= 行包含字符串 cdromBoot,请只移除该字符串。
  8. (可选) 对于脚本式安装,在 boot.cfg 文件中内核命令后的一行添加 kernelopt 选项以指定安装脚本的位置。
    将以下代码用作模型,其中 XXX.XXX.XXX.XXX 是安装脚本所在的服务器的 IP 地址, esxi_ksFiles 是包含 ks.cfg 文件的目录。
    kernelopt=ks=http://XXX.XXX.XXX.XXX/esxi_ksFiles/ks.cfg
  9. 如果您的 ESXi 主机运行 UEFI 固件,请指定是否希望所有 UEFI 主机引导同一安装程序。
    选项 描述
    同一安装程序 boot.cfg 文件复制或链接到 /tftpboot/boot.cfg
    不同安装程序
    1. 创建 /tftpboot 的子目录,并以目标主机的 MAC 地址 (01-mac_address_of_target_ESXi_host) 命名,例如 01-23-45-67-89-0a-bc
    2. 将主机 boot.cfg 文件的副本(或链接)置于此目录中,例如 /tftpboot/01-23-45-67-89-0a-bc/boot.cfg