前言

除了安装黑苹果(Hackintosh)外,在Windows PC上体验黑苹果的方法还有安装Mac OS虚拟机,由于授权、软件支持等因素,VMware、Virtual Box等虚拟机软件虽能运行Apple macOS,却十分缓慢。
本文中介绍的方法使用WSL及QEMU-KVM的方案,可以较为流畅地运行macOS虚拟机。

基本系统要求

  • Windows 11
  • 已安装vGPU驱动程序。参考
  • 建议16GB RAM
  • 建议至少一块固态硬盘
  • 虚拟化已启用
  • WSL 2

本教程的电脑配置如下:

名称型号/规格
CPUIntel i7-14700KF
RAM64GB DDR5
GPUNvidia GeForce RTX 4070 Super
OSWindows 11

WSL的安装

若已安装WSL2,请跳过本部分,本篇教程中使用Ubuntu环境。
以管理员权限打开Windows Terminal或者PowerShell,运行命令安装WSL

wsl --install

如果在此之前没有安装过WSL2,请先运行以下命令将新安装的WSL默认版本设置为第二代

wsl --set-default-version 2

按照屏幕提示操作即可

WSL的配置

需要编辑WSL的配置文件,允许嵌套虚拟化。
编辑用户目录下的WSL全局配置文件.wslconfig,加入以下内容:

[wsl2]
networkingMode=bridged
vmSwitch=ex
memory=16G
processors=8
swap=16G
localhostForwarding=true
nestedVirtualization=true
pageReporting=true
kernelCommandLine=intel_iommu=on iommu=pt kvm.ignore_msrs=1 kvm-intel.nested=1 kvm-intel.ept=1 kvm-intel.emulate_invalid_guest_state=0 kvm-intel.enable_shadow_vmcs=1 kvm-intel.enable_apicv=1

其中的memory一项是设置允许的WSL内存大小,swap一项可根据需要设置。
如果你在你的用户目录找不到.wslconfig,则可以修改局部的WSL配置文件wsl.conf
首先在终端/PowerShell中输入wsl进入Ubuntu环境,接着通过你喜欢的任一编辑器修改/etc/wsl.conf,将上述内容加入到此文件即可。
wsl

接着重启wsl

wsl --shutdown

安装macOS

安装必需软件

在上面的步骤中,我们已经配置好了一个支持嵌套虚拟化的环境,因此我们可以基于QEMU-KVM安装macOS虚拟机。得益于微软及各显卡厂商对WSL2的优化,即便在WSL上运行的KVM虚拟机也能利用虚拟的GPU,从而进行一定的性能提升。

首先输入wsl进入Ubuntu,安装必需软件(依次执行以下命令):

sudo apt update

sudo apt-get install qemu uml-utilities virt-manager git wget dmg2img libguestfs-tools p7zip-full make -y

配置KVM

首先配置KVM开关

echo 1 > /sys/module/kvm/parameters/ignore_msrs

设置权限(依次执行以下命令)

sudo usermod -aG kvm $(whoami)
sudo usermod -aG libvirt $(whoami)

OSX-KVM项目

OSX-KVM项目可以使基于QEMU-KVM的macOS虚拟机配置更加容易,且无需自行下载镜像,创建磁盘,和一大堆复杂的QEMU命令打交道。配置它十分容易。
首先拉取OSX-KVM项目:

sudo git clone https://github.com/kholia/OSX-KVM.git

注意:此处的目录在接下来的步骤中将会是macOS安装镜像和硬盘文件的位置,默认在C盘的用户目录下,此处可先通过cd命令切换为其他盘符。例如切换为D盘,则先执行cd /mnt/d

切换目录:

cd OSX-KVM

下载macOS镜像

OSX-KVM项目中提供了macOS镜像下载脚本,执行:

sudo ./fetch-macOS-v2.py

选择一个系统即可,该脚本会自动从Apple CDN下载macOS镜像,如果下载缓慢,请尝试断开代理并重新运行脚本尝试。

下载完毕后的macOS镜像为dmg格式,使用命令将其转为img格式

sudo dmg2img BaseSystem.dmg BaseSystem.img

创建磁盘镜像

需要至少一个磁盘进行安装macOS,执行下列命令生成一个512GB的磁盘

sudo qemu-img create -f qcow2 mac_hdd_ng.img 512G

将虚拟机加入Virt-manager

WSL2已支持systemd,因此我们无需进行其他配置。在上文我们已经安装了Virt-manager,这个软件包可以帮助我们通过图形化的方式管理虚拟机。
如果OSX-KVM位于用户目录,依次执行:

sudo sed "s/CHANGEME/$USER/g" macOS-libvirt-Catalina.xml > macOS.xml
virt-xml-validate macOS.xml
virsh --connect qemu:///system define macOS.xml

CHANGME改为你的wsl用户名。

如果OSX-KVM位于其他目录,则用任意文本编辑软件打开macOS-libvirt-Catalina.xml文件,将所有文件的路径改为你的OSX-KVM目录路径,如果没有改完或路径错误,将无法从Virt-manager启动虚拟机
WSL2
可通过pwd命令查看OSX-KVM目录位置。
改完后,依次运行以下命令:

virt-xml-validate macOS.xml
virsh --connect qemu:///system define macOS.xml

配置虚拟机

依次执行以下命令

sudo systemctl start libvirtd
sudo virt-manager

如果配置正确,则会出现virt-manager的界面,且有一个名为macOS的虚拟机
GUI1

RAM设置

为了保证macOS的流畅,推荐使用8GB(8192MB)内存以上
GUI2
同时可以设置核心个数,根据需求设置即可,可以选择和WSL配置一致。
Screenshot 2024-07-26 191234.png

安装macOS

请在进入macOS安装界面后先选择磁盘工具,格式化虚拟机磁盘为APFS格式,再安装macOS。安装过程需要一定时间(视电脑配置及虚拟机分配到的资源为准。
在第一次重新启动及后续进入启动项选择时,选择macOS installer或类似新出现的磁盘,即便它的名字可能不是你抹掉磁盘时设置的名字。
macOS13

由于OSX-KVM使用OpenCore进行引导,因此可使用OpenCore Configurator挂载EFI分区,对设备序列号、类型进行定制,可参考其他教程。

其他

修改macOS虚拟机的分辨率

参考

https://blog.hal.wang/7afa8fc1/

文章目录