用了半年多 macOS,虽然不错,但工作用还是觉得 Linux 比较顺手,所以经过了半年时间还是从 macOS 切换回了 Linux。然而需要解决的一个问题便是我之前的 macOS 上使用 VMware Fusion 的个人授权安装了一个 Windows 用来进行一些调试,现在有一些配置因为需要依赖外部人员进行操作,证书之类的,只能想办法把 Fusion 上的虚拟机转移到 Linux 下的 VMware Workstation 中。

前提知识

在正式迁移之前先了解一下磁盘上的几类文件,这些文件都是和 VMware 虚拟机相关的。

VMX 文件

VMware 虚拟化软件比如 VMware Workstation 和 VMware Fusion 的配置文件。

存储使用「新建虚拟机向导」创建的虚拟机设置;包括内存、硬盘和处理器限制等。

VMX 文件使用纯文本格式保存,并包含配置 属性=值

比如,内存限制是

memsize = "2048"

表示虚拟机允许的最大内存为 2G。

Fusion 保存的 VMX 文件通常存储在 .vmwarevm 包内。

VMDK 文件

VMDK 文件表示 Virtual Machine Disk,是虚拟机的虚拟硬盘格式。通常 vmdk 文件包含这虚拟机所需要的所有文件。

导出

经过一些调研,虽然 VMware的官网 写着可以通过菜单里面的 Export 来将虚拟机导出成 OVF 格式,但是我一查发现我用的并不是 Fusion Pro 版本,也没有这一个选项。

所以只能另找办法,后来发现有人发现了 VMware 这个命令行工具可以进行转换。

cd /Applications/VMware\ Fusion.app/Contents/Library/VMware\ OVF\ Tool/

./ovftool  <PATH TO SOURCE VM's .vmx file>   <PATH TO OUTPUT ova file>

# example

./ovftool --acceptAllEulas ~/Documents/Virtual\ Machines.localized/CentOS\ 6.5.vmwarevm/CentOS\ 6.5.vmx      /tmp/CentOS6.5.ova

但还没进行尝试,就发现原来 VMware Workstation 和 Fusion 只是两个操作系统上的不同实现,其实虚拟机部分还是相同的,查看其硬盘上的文件,发现结构类似,文件类型也差不多,所以就萌生了先 scp 导过来看一下能不能直接使用的想法,经过一段时间的拷贝,发现 Linux 下的 Workstation 可以直接识别。

问题

在迁移了 Windows 第一次启动的时候,报了一个错:

was created by a VMware product that is incompatible with this version of VMware Workstation and cannot be used. Cannot open the configuration file.

这个错一看就知道可能是版本不兼容的问题,我的 Fusion 是最新的 12 版本,而 Workstation 则是很多年前安装的 15 版本。后来查到可以通过修改 vmx 配置文件解决。

修改 vmx 中的 virtualHW.version 版本到一个比较低的版本即可。

二者对应的版本可以通过如下这张表进行查看。

Virtual Hardware VersionProducts
19ESXi 7.0 U2(7.0.2)
18ESXi 7.0 U1 (7.0.1)
Fusion 12.x
Workstation Pro 16.x
Workstation Player 16.x
17ESXi 7.0  (7.0.0)
16Fusion 11.x
Workstation Pro 15.x
Workstation Player 15.x
15ESXi 6.7 U2
14ESXi 6.7
Fusion 10.x
Workstation Pro 14.x
Workstation Player 14.x
13ESXi 6.5
12Fusion 8.x
Workstation Pro 12.x
Workstation Player 12.x
11ESXi 6.0
Fusion 7.x
Workstation 11.x
Player 7.x
10ESXi 5.5
Fusion 6.x
Workstation 10.x
Player 6.x
9ESXi 5.1
Fusion 5.x
Workstation 9.x
Player 5.x
8ESXi 5.0
Fusion 4.x
Workstation 8.x
Player 4.x
7ESXi/ESX 4.x
Fusion 3.x
Fusion 2.x
Workstation 7.x
Workstation 6.5.x
Player 3.x
Server 2.x
6Workstation 6.0.x
4ESX 3.x
ACE 2.x
Fusion 1.x
Player 2.x
3 and 4ACE 1.x
Lab Manager 2.x
Player 1.x
Server 1.x
Workstation 5.x
Workstation 4.x
3ESX 2.x
GSX Server 3.x

调整 VMware 虚拟机自适应窗口

在菜单栏 View 选择 Fit Guest Now.

Other

Step 1

Copy the VMDK file from the VMware Workstation virtual machine to the Mac running VMware Fusion.

Step 2

Open VMware Fusion and create a new virtual machine.

Step 3

Click “Continue without disk.”

Step 4

Click “Use an existing virtual disk,” then double-click the VMDK file and click “Continue.”

Step 5

Choose the operating system type, if prompted, then click “Continue.”

Step 6

Select whether or not to run the virtual machine automatically.

Step 7

Click “Customize Settings” to adjust the virtual machine’s allocated resources, such as CPUs and RAM.

Close the settings window and then power on the virtual machine.