跳转至

在 VMware 中使用 iPXE

你可以用 iPXE ROM 替换默认的 VMware PXE ROM,这将使你能够通过 HTTP、iSCSI、AoE 或 iPXE 支持的任何其他协议启动你的虚拟机。

选择网络适配器

VMware 能够模拟多种网络适配器:

A network card

VMware 名称 iPXE 驱动程序名称 PCI vendor:device ID iPXE ROM 镜像
e1000 intel 8086:100f 8086100f.mrom
e1000e intel 8086:10d3 808610d3.mrom
vlance pcnet32 1022:2000 10222000.rom
vmxnet (不支持) 15ad:0720
vmxnet3 vmxnet3 15ad:07b0 15ad07b0.rom

选择一种受支持的网络适配器,并确保你的虚拟机配置为使用此适配器。你可以通过编辑定义你的虚拟机的 .vmx 文件,并更改以下设置来做到这一点:

  ethernet0.virtualDev

例如,选择 e1000 网络适配器:

  ethernet0.virtualDev = "e1000"

构建 ROM 镜像

下载 iPXE,然后使用以下命令为所有受支持的网络适配器构建 ROM 镜像:

  make bin/8086100f.mrom bin/808610d3.mrom bin/10222000.rom bin/15ad07b0.rom

把 iPXE ROM 镜像 8086100f.mrom808610d3.mrom10222000.rom15ad07b0.rom 复制到合适的位置(例如目录 /usr/lib/vmware/resources/)。

配置虚拟机

编辑定义你的虚拟机的 .vmx 文件,并添加以下行:

  ethernet0.opromsize = 262144
  e1000bios.filename = "/usr/lib/vmware/resources/8086100f.mrom"
  e1000ebios.filename = "/usr/lib/vmware/resources/808610d3.mrom"
  nbios.filename = "/usr/lib/vmware/resources/10222000.rom"
  # nxbios.filename = ""
  nx3bios.filename = "/usr/lib/vmware/resources/15ad07b0.rom"

(把 /usr/lib/vmware/resources/ 替换为你复制 iPXE ROM 镜像的目录名称)。

启动虚拟机

以通常的方式启动你的虚拟机。你应该会看到 VMware 检测并使用 iPXE ROM:

VMware using an iPXE ROM

恭喜你成功在你的 VMware 虚拟机中使用 iPXE ROM!

Success

高级特性

VMware 日志文件控制台

VMware 为每个虚拟机创建一个日志文件,通常是与虚拟机的 ''.vmx'' 文件位于同一目录的 vmware.log 文件。你可以在此日志中记录 iPXE 的输出。例如:

  2012-02-28T23:23:58.016Z| vmx| I120: Ethernet0 MAC Address: 00:0c:29:3a:7d:f2
  2012-02-28T23:23:59.145Z| vmx| I120: VMX_PowerOn: ModuleTable_PowerOn = 1
  2012-02-28T23:23:59.356Z| vcpu-0| I120: Intel VT enabled.
  2012-02-28T23:23:59.359Z| vcpu-0| I120: VMM initialized.
  2012-02-28T23:23:59.362Z| vcpu-0| I120: Monitor has started
  2012-02-28T23:24:02.775Z| vcpu-0| I120: Guest:
  2012-02-28T23:24:02.778Z| vcpu-0| I120: Guest: iPXE 1.0.0+ --  http://ipxe.org
  2012-02-28T23:24:02.781Z| vcpu-0| I120: Guest: Features: iSCSI HTTP DNS bzImage PXE PXEXT

你可以通过启用构建选项 CONSOLE_VMWARE,在 VMware 日志文件中记录 iPXE 的输出。

VMware GuestInfo 设置

你可以使用 VMware 的 GuestInfo 特性,直接在虚拟机的 ''.vmx'' 文件中配置 iPXE 设置。例如,配置静态 IP 地址、默认网关、DNS 服务器和启动文件名:

  guestinfo.ipxe.net0.ip = "192.168.0.15"
  guestinfo.ipxe.net0.netmask = "255.255.255.0"
  guestinfo.ipxe.net0.gateway = "192.168.0.1"
  guestinfo.ipxe.dns = "192.168.0.1"
  guestinfo.ipxe.filename = "http://boot.ipxe.org/demo/boot.php"

这可以与嵌入式脚本结合使用,以在不使用 DHCP 的情况下启动。例如:

  #!ipxe

  ifopen net0
  chain ${filename}

你可以使用构建选项 VMWARE_SETTINGS 启用 VMware GuestInfo 设置。