在 VMware 中使用 iPXE¶
你可以用 iPXE ROM 替换默认的 VMware PXE ROM,这将使你能够通过 HTTP、iSCSI、AoE 或 iPXE 支持的任何其他协议启动你的虚拟机。
选择网络适配器¶
VMware 能够模拟多种网络适配器:

| 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.mrom、808610d3.mrom、10222000.rom 和 15ad07b0.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 虚拟机中使用 iPXE ROM!

高级特性¶
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 设置。