使用Apple Virtualization Framework运行Linux
苹果macOS内建的 Virtualization Framework 可以运行原生硬件加速虚拟机,支持Apple Silicon和Intel架构,Guest操作系统可以是Linux或macOS。简单来说,通过苹果官方提供的样例代码,可以在 Xcode 中运行起Linux或macOS虚拟机,如果要更为方便的运行方式,则可以使用基于Virtualization Framework的 Tart - 虚拟化工具集 虚拟机软件。
备注
安装的Linux ISO镜像必须选择匹配自己主机CPU架构,对于Apple silicon,需要使用ARM架构Linux ISO镜像;对于Intel Mac,则下载amd64的Linux ISO镜像。
如果在Apple silicon架构主机上的ARM Linux中运行Intel Linux二进制程序,Virtualization framework可以通过Rosetta translation环境来支持这个功能 - Running Intel Binaries in Linux VMs with Rosetta
准备工作
操作系统必须是 macOS 13.0+ ,并安装好 Xcode 14.0+
按照 Running GUI Linux in a virtual machine on a Mac 下载
RunningGUILinuxInAVirtualMachineOnAMac.zip
,解压缩按照Host主机macOS的架构,下载一个Linux安装ISO镜像,我在 MacBook Pro 2018 (Intel架构)上实践,下载的是 Debian 最新发行的
debian-12.9.0-amd64-DVD-1.iso
配置案例代码项目
备注
Running GUI Linux in a virtual machine on a Mac 苹果官方提供的样例代码是默认部署在 macOS 14上的,如果要在其他macOS版本上部署,需要调整对应的 deployment target
我的实践是在 macOS 15.2 上完成, Xcode 16.2
使用Xcode打开下载的源代码
GUILinuxVirtualMachineSampleApp.xcodeproj
项目点击左方
Project Navigator
中项目名称GUILinuxVirtualMachineSampleApp
,然后在Signing & Capabilities
面板中,将Team
修改为你的账号Team
,例如我的设置是Huatai Huang(Personal Team)

修订 Signing & Capabilities
点击
Build Setting
面板,将Deployment Target
修订成你实际需要运行的Host主机操作系统,例如我这里修订为macOS 15

另外,Xcode提示做修订
Enable hardened runtime


点击
Build and run
,完成编译后运行,此时会在用户目录下创建一个GUI Linux VM.bundle
目录存储虚拟机,并弹出一个对话框让你选择安装Linux的ISO镜像。选择已经下载好的debian-cd_current_amd64_iso-dvd_debian-12.9.0-amd64-DVD-1.iso
,此时虚拟机就进入了Linux图形安装界面

和常规debian安装相同,最后完成安装后点击安装界面最后的完成按钮,重启debian,就能在虚拟机环境中看到一个运行的debian。安装过程非常丝滑。
安装以后可以执行 Debian精简系统初始化 构建一个可用开发工作环境
在debian guest虚拟机中 shutdown
之后,就可以将我们前面步骤编译好的 GUILinuxVirtualMachineSampleApp.app
复制到 /Applications
目录下进行安装:
Xcode项目导航栏中的
Products >> GUILinuxVirtualMachineSampleApp.app
图标,选择Show in Finder
,这样打开Finder文件管理器,可以看到目录下有一个非常小巧的文件GUILinuxVirtualMachineSampleApp.app
,复制到/Applications
目录下就完成了安装。这样后续就像启动一个应用程序一样,点击一下鼠标启动debian
虚拟机

备注
这是一个非常简单的部署过程,借此机会能够一窥 macOS 内置的Virtualization能力。
如果需要更为方便完美的部署运行方式,建议使用 Lima: Linux Machines ,同样支持 Apple Virtualization Framework ,所以能够得到相同的性能,但是更为便捷。
参考
Running GUI Linux in a virtual machine on a Mac 苹果官方提供的样例代码,可以运行起Linux虚拟机
Install Linux On MacOS using Apple Virtualization Framework 使用苹果官方样例代码运行Ubuntu安装过程的一步步指南
Create macOS or Linux virtual machines 苹果WWDC2022视频讲座,包含演示和代码片段