使用 WSL2、KVM 和 QEMU 在 Windows 10 上运行 MacOS
注意:很遗憾,由于 WSL 版本在 Windows 11 Dev Channel 上的变动,此功能已不再有效。我保留此信息,希望以下一些问题的解决方法能够帮助其他人完成他们的项目!
我需要在 Mac 上录制一个演示,我没有 Mac,所以正在考虑从朋友那里借一台。然后我意识到,我终于有借口尝试一下了!自从我读了@unixterminal写的一篇关于如何在 WSL2 上运行加速 KVM 客户端的精彩文章《WSL 2 上的加速KVM客户端》之后,我就一直渴望尝试。
这篇教程讲解了我如何利用@unixterminal和@FoxletFox的出色工作,让我那台用了三年的XPS Intel i7电脑在Windows 10上运行MacOS!如果没有他们的文档和脚本,这篇文章可能就不存在了。
运行这个程序后,我仍然对它的性能之好感到震惊!我也尝试了其他几个Linux发行版,它们真的非常流畅。
开始之前,请查看“WSL2 上的加速 KVM 客户端”文章开头的要求。有一点不太明显,那就是你的 CPU 需要支持虚拟化。除非你运行的是 2000 年代初期甚至更早的 Intel CPU,否则应该没问题。如果你的 CPU 支持虚拟化,但你的 BIOS 中可能没有启用,所以在开始之前最好检查一下。如果你已经在运行虚拟机管理程序,那么这很可能没问题。
您还需要运行Windows 10 的Windows Insider版本。先决条件中提到的 Insider Fast 通道现在是 Dev 通道。其中一个必需的功能直到版本 19619 才加入 Windows 10,而对 AMD 的嵌套虚拟化支持直到版本 19636 才加入,因此如果您也使用 AMD 处理器,那么嵌套虚拟化支持是必不可少的。Windows Insider页面目前将 19042.423 列为 Beta 版中可用的最高版本,将 19041.423 列为 Release Preview 版本,因此目前如果不使用 Dev 通道,此功能将无法正常运行。
内部人员通道重命名的详情请见此处。Dev 通道被描述为“适合技术含量高的用户”。Dev 通道的内部人员将收到开发周期中最早的版本,其中包含我们工程师开发的最新代码。这些版本可能存在一些缺陷和不稳定性,可能会阻碍关键活动或需要采取变通措施。
考虑到这一点,如果你不认为自己是一个技术含量高的用户,那么在主机上运行 Dev 通道之前,请三思!如果你觉得可以,那就直接开始吧:
- 按照“WSL2 上的加速 KVM 客户机”中的步骤操作,直到到达标题为“关于在 WSL 中构建模块的重要说明”的部分:启动和运行它的时间相当紧张,我不会调整性能,也不想继续手动加载英特尔模块的 KVM,因此:
上面选择了适用于 Intel 处理器的 KVM,请注意其下方是 AMD 的选择。
- 从“退出虚拟化”段落继续,直到到达此命令:
kvm-ok
如果您仔细遵循了这些步骤,并在执行 kvm-ok 时满足了所有先决条件,您应该会看到:
INFO: /dev/kvm exists
KVM acceleration can be used
如果没有的话,您可能会看到:
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
如果您看到上述内容,则您肯定正在运行 Windows 10 Dev 频道,请再次执行这些步骤,您可能错过了一些东西。
- 检查嵌套 KVM 是否正常
如果您收到“可以使用 KVM 加速”的提示,您可以继续执行帖子中的步骤。
接下来的步骤是:
cat /sys/module/kvm_intel/parameters/nested
执行此命令时返回 N。回溯到步骤后,需要进行搜索,结果在 WSL GitHub 仓库中发现了一个问题。因此,回到步骤“在 WSL 2 中安装内核并启用嵌套 KVM”, .wslconfig 更改为:
nestedVirtualization=true
kernel=C:\\Users\\<username>\\bzImage
debugConsole=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
您需要再次重新启动 WSL 并再次检查命令。
请注意,命令行参数几乎与添加到 kvm_intel.conf 的参数相同,我还没有调查为什么没有从 conf 文件中提取嵌套设置。
另请注意,设置 debugConsole 会打开 WSL 调试控制台,您可以稍后通过从 .wslconfig 文件中删除它们并重新启动 WSL 来关闭它和 pageReporting。我把它保留了一段时间,以便以后需要进一步排除故障。
嵌套 KVM 检查现在按要求返回 Y:
cat /sys/module/kvm_intel/parameters/nested
Y
- 为 WSL2 配置 X。
过去我运行过不少 X 服务器,现在只想找个无需大量设置就能运行的。因此,我选择了微软商店里售价 9 英镑左右的 X410,不过我打算一直用到今年晚些时候 GUI 支持发布,所以考虑到它易于设置,这个价格还是很值得的。
在商店中正常安装,然后将步骤中的环境变量添加到您的 .bashrc 中:
cd ~
nano .bashrc
一旦嵌套的 KVM 启动并运行,并且您已配置 WSL 将 X 输出发送到 Windows,您就可以尝试发行版了。如果您继续关注这篇文章,您将设置一个 Ubuntu 20.10 每日构建版本。我运行了此操作是为了检查一切是否正常,具体步骤与文章中完全相同。
- MacOS VM 的设置
MacOS -Simple-KVM GitHub repo 链接来自原帖。它被描述为“在 QEMU 中设置一个简单的 macOS 虚拟机,并由 KVM 加速”。如果您已经完成了第 4 步中 Ubuntu 20.10 每日构建版的设置,那么您已经看到QEMU被提及了。您可能会想,为什么会有两种虚拟化技术?关键在于 KVM 和 QEMU 的区别,这篇文章很好地总结了这一点。KVM 使用 Intel 和 AMD 的 CPU 虚拟化扩展,而 QEMU 执行虚拟硬件模拟,或者换句话说,KVM 是 QEMU 的“加速条带”!
步骤按列表所示进行,但做了以下调整。首先克隆 git 仓库,确保使用 Linux 文件系统,因为目前在 wsl2 上 Linux 文件系统比 Windows (/mnt)更快。
本演练使用 Ubuntu,因此如果您尚未安装 QEMU、Python 和 Pip,则首先安装它们:
sudo apt-get install qemu-system qemu-utils python3 python3-pip
运行 jumpstart.sh 来获取您选择的 MacOS 媒体:
./jumpstart.sh --mojave
我也去了 Mojave。
现在创建一个硬盘,我选择了 32GB,我想尝试降低一点,但经过调查,我发现记录了一些问题,其中小于 32GB 似乎会给其他用户带来问题:
qemu-img create -f qcow2 MacOS.qcow2 32G
注意我已经更改了磁盘的名称,此时我已经设置了几个 VM,因此想让它更加明显!
编辑 basic.sh 将 VM 磁盘添加到 VM 中:
-drive id=SystemDisk,if=none,file=MacOS.qcow2 \
-device ide-hd,bus=sata.4,drive=SystemDisk \
现在,请确保步骤 4 中的 X 服务器正在运行,因为 QEMU 默认会尝试使用图形模式。如果在下一步运行 basic.sh 时 X 服务器尚未运行,则运行大约一分钟后会失败:
./basic.sh
VM 启动但出现一些错误:
顶部红色方框部分是由basic.sh文件中的 -cpu 行引起的。basic.sh 文件中的标准设置会向主机 CPU 发送有关性能增强功能的指令,而主机 CPU无法理解这些指令。绿色方框是与声音相关的错误,我不太担心这些,这解释了我上面使用 Ubuntu 时遇到的声音相关问题。您可以进一步编辑 basic.sh 来纠正这些问题,但虚拟机启动时仍然出现这些错误。
VM 启动到 Clover 启动管理器,您可以在其中使用键盘按回车键(此时不能使用鼠标),然后开始“从 macOS 基本系统启动 macOS 安装”:
现在将显示 macOS 实用程序屏幕,并且应该支持鼠标。如果您的鼠标指针与虚拟机上的鼠标指针不同步,则需要调整 basic.sh 文件中的设置。使用左上角的苹果图标关闭虚拟机,然后再次在 nano 中编辑 basic.sh:
USB 设备行需要从 usb-mouse 更改为 usb-tablet。再次运行 basic.sh,你的鼠标现在应该对齐了。
按照macOS-Simple-KVM说明中的步骤操作,您需要先对磁盘进行分区。进入“磁盘工具”后,在左侧菜单中找到您的 QEMU 硬盘,然后将其“擦除”并进行分区。
现在,您可以返回 macOS 实用程序菜单并选择“重新安装 macOS”。从这里开始,操作与标准重新安装相同,只是需要一段时间!从现在开始,无需进行任何调整:
您可以使用 ctrl+alt+backspace 进入和退出全屏,并使用 ctrl+alt+F 删除顶部带有“机器视图”的 VM 横幅。
如果您现在保持原样设置而不进行进一步的调整,则每次重新启动或运行 VM 时都会进入 Clover 引导加载程序:
我提供的选项比你们的要多一些,因为我在拍摄之前就一直在尝试各种方法。关键是,你需要使用箭头键选择“从 macOS 启动 macOS”,这样就能启动你的系统了,然后就可以开始使用了!
鏂囩珷鏉ユ簮锛�https://dev.to/nicole/running-macos-on-windows-10-with-wsl2-kvm-and-qemu-21e1