在VMware Player中启用UEFI模式

背景

几周前用QEMU的时候,发现QEMU user manual上面有这么一行,有uefi这一选项:

1
2
3
-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d][,uefi=on|off]

Specify SMBIOS type 0 fields

昨晚,打算给别人展示使用UEFI磁盘的分区情况,发现VMware Player中的VM并非UEFI方式启动的,于是打算找找有没有相关的资料展示怎么在VMware Player中使用UEFI。

可行性

VMware Player相比于VMware Workstation,功能实在是少得可怜,但毕竟Management tools与Hypervisor相互分离,猜测作为Non-commercial的Player与Workstation不大可能在Hypervisor上有所区别,只是一些Management tools的区别。

举个例子:libvirt作为QEMU的管理工具,为了方便地给QEMU创建的VM分配IP,会在创建的网桥中开启一个小型的DHCP。而VMware Player的网络配置中有NAT模式,它的VM的IP等也是自动配置的,猜测也会有DHCP服务存在。果然在C:\ProgramDataVMware\下发现了vmnetdhcp.conf,添加了下面的配置,便成功为MAC地址为00:50:56:C0:00:08的网络接口分配固定的IP。

1
2
3
4
5
6
7
host VMnet8 {
hardware ethernet 00:50:56:C0:00:08;
fixed-address 192.168.80.1;
option domain-name-servers 0.0.0.0;
option domain-name "";
option routers 0.0.0.0;
}

搜到的资料提示修改*.vmx,打开后发现是配置信息,类似于libvirt的*.xml。但仅仅添加firmware = "efi"还是不够的,因为默认的BIOS版本太老了,还得修改BIOS版本。

方法

在安装目录下找到x64文件夹(比如我的是:C:\Program Files (x86)\VMware\VMware Player\x64),ROM名称有BIOS.440.ROM, EFI32.ROM, EFI64.ROM。在*.vmx文件中添加如下信息:

1
2
3
bios440.filename = "BIOS.440.ROM"
firmware = "efi"
efi32.filename = "EFI64.ROM"

如果是32-bit UEFI,需要把EFI64.ROM变成EFI32.ROM

参考资料