首先,建议不要作死,还是去买mac吧,太折腾人了!!然后进入正题,如何在Ubuntu 17.10上利用virtualbox 5.1安装MacOS 10.9虚拟机。涉及CPUID问题、vdmk转vdi,vdi的resize,以及EFI的问题。好几点都不太懂,慢慢摸索吧。

再吐个槽,不要随意自己更新virtualbox,因为如果是UEFI安装的ubuntu,是没法将Virtualbox的modprov部署进系统image的,然后virtualbox就彻底挂了。。。解决方法是升级系统或者重装。

镜像去哪里找

安装

具体的配置参考文献里有很多,我就不赘述了。。。这里主要说明一下CPUID的问题。。。我的CPU是i3 7100,按道理说其架构不适合装黑苹果,不过可以通过修改虚拟机的cpuid来解决这个问题。。。网上的方法太坑爹了,固定了cpuid,其实这个要自己去查的,每一代intel架构不太一样。查询方法如下,

1
2
3
4
5
6
7
8
9
10
11
12
VBoxManage list hostcpuids
# It will print
Host CPUIDs:
Leaf no. EAX EBX ECX EDX
00000000 00000016 756e6547 6c65746e 49656e69
00000001 000906e9 00100800 7ffafbbf bfebfbff
00000002 76036301 00f0b5ff 00000000 00c30000
00000003 00000000 00000000 00000000 00000000
00000004 1c004121 01c0003f 0000003f 00000000
# 找到00000001这一行,
替换到xxx.vbox中

1
2
3
4
5
6
VBoxManage modifyvm "macOS" --cpuidset 00000001 000306a9 00100800 3d9ae3bf bfebfbff
VBoxManage setextradata "macOS" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
VBoxManage setextradata "macOS" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "macOS" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
VBoxManage setextradata "macOS" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "macOS" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

更新以后如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" value="Iloveapple"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" value="iMac11,3"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" value="1.0"/>
<ExtraDataItem name="VBoxInternal/Devices/smc/0/Config/DeviceKey" value="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"/>
<ExtraDataItem name="VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" value="1"/>
<CPU>
<PAE enabled="true"/>
<LongMode enabled="true"/>
<HardwareVirtExLargePages enabled="false"/>
<CpuIdTree>
<CpuIdLeaf id="1" eax="591593" ebx="34605056" ecx="2147154879" edx="3219913727"/>
</CpuIdTree>
</CPU>

resize

VBoxManage clonehd “MavericksInstaller.vmdk” “MavericksInstaller.vdi” —format vdi
VBoxManage list hdds

1
2
3
4
5
6
7
8
UUID: 501b0eed-167e-4b38-96ff-93efa707b5fc
Parent UUID: base
State: created
Type: normal (base)
Location: xxx/macOS/MavericksInstaller.vdi
Storage format: vdi
Capacity: 10240 MBytes
Encryption: disabled

VBoxManage modifyhd 501b0eed-167e-4b38-96ff-93efa707b5fc —resize 40960

1
2
3
4
5
6
7
8
UUID: 501b0eed-167e-4b38-96ff-93efa707b5fc
Parent UUID: base
State: created
Type: normal (base)
Location: xxx/macOS/MavericksInstaller.vdi
Storage format: vdi
Capacity: 40960 MBytes
Encryption: disabled

解决mediakit 报告设备上的空间不足以执行

最简单粗暴的方法,重新挂载一个vdi,利用磁盘工具,抹掉,然后就行了。。。

分辨率调整

VBoxManage setextradata “macOS” VBoxInternal2/EfiGopMode 3

References