Lazy loaded image
没有Mac也能开发调试?在 Linux 上用OSX-KVM安装macOS虚拟机
字数 1044阅读时长 3 分钟
2025-7-11
2025-7-13
type
status
date
slug
summary
tags
category
icon
password
💡
Electron 开发的应用需要调试在Mac上的效果,不过手头没有 Mac 怎么办呢?在Github 上找到一个 OSX-KVM 的项目,测试可以正常运行,在这里分享一下。

在开始前

既然是虚拟机,那么需要先安装好 QEMU 不同的发行版有所不同。建议同时安装好 virt-manager 可以参考:
或者也可以去寻找其他教程。
 

开始安装

首先找个合适的目录打开终端,因为会创建虚拟硬盘,所以建议选一个速度快且容量大的分区。
首先拉一下代码:
接下来拉取 macos 安装镜像
notion image
选择一个你想要安装的系统版本即可,此处我选择了 14
这会下载一个 BaseSystem.dmg 不过我们需要一个 BaseSystem.img 格式的文件才能引导。 需要使用 dmg2img 转换。
安装dmg2img
转换:
创建 macos 的磁盘镜像:
不建议改名字,如果要改名字,那么需要同步更新脚本中的路径。这里大小设置为 256G,不过并不会立即分配。你也可以根据需要调整大小。
接下来就可以安装 macOS 了🚀

安装 MacOS

首先我们启动系统:
notion image
启动 macos base system
notion image
首先需要格式化磁盘,进入“磁盘工具” 在左侧选择硬盘(看好大小,200多G的那个) 点击右上角“抹掉”
名称: 给你的硬盘起个名字,例如 Macintosh HD
格式: 选择 APFS
方案: 选择 GUID 分区图
notion image
之后关闭磁盘工具,选择 重新安装 Macos,按照指示继续即可。安装会耗时几十分钟到几小时不等,主要取决于你的网速。安装过程中会重启若干次。

无法启动的问题

如果遇到了到最后一步无法启动,是很正常的,通常错误为:
notion image
这是因为macOS Sonoma 要求 CPU 必须支持 AVX2 指令集。OSX-KVM 默认的 CPU 型号(如 Penryn)比较旧,不支持这个指令集,导致 Sonoma 无法解密和挂载其系统文件卷 (Cryptex),最终找不到核心库文件。
首先需要确保你的 CPU 支持 AVX2:
绝大多数 2013 年之后的 CPU 都支持~ 如果没有输出,那么有可能不支持 AVX2 建议换一个更老的 MaoOS 系统。 确认支持后,我们只需要打开 OpenCore-Boot.sh 将其中所有 Penryn 替换为 Haswell-noTSX 即可。
之后重新运行OpenCore-Boot.sh 启动即可。
这样 macos 应该就能正常启动了,进入引导页完成基础设置后就可以使用了(建议不要登帐号)
notion image

导入 virt-manager

这样每次用命令启动还是有点不爽的,我们可以直接导入到 virt-manager 内便于直接启动和管理。同样项目提供了方式:
此处需要替换路径为你的 OSX-KVM 实际项目路径,如/home/user/OSX-KVM
你也可以再打开 macOS.xml 检查一下,比如之前提到的所有 Penryn 替换为 Haswell-noTSX 问题。
确认无误后执行下面命令导入即可
之后就能在 virt-manager 内启动了。
notion image

总结

因为没有显卡驱动等,性能还是挺拉胯的,也就临时测试用吧~
如果你的电脑有多个显卡,可以试试 GPU 直通,不过应该仅限 AMD 系列。具体可以看看 https://github.com/kholia/OSX-KVM/blob/master/notes.md#gpu-passthrough-notes
 

📎 参考

  • 其他常见问题:
 
💡
遇到什么问题或需要补充,欢迎您在底部评论区留言,一起交流~
 
上一篇
在 Ubuntu/Debian 和 Arch Linux 上安装虚拟机管理软件 virt-manager
下一篇
在 Ubuntu/Debian 和 Arch Linux 上安装虚拟机管理软件 virt-manager