几个前置条件:
至少macOS 13(目前还是RC,过两天就该发布了)
使用苹果的虚拟化平台且虚拟机软件支持启用rosetta(utm v4已经支持,或者有个专门的独立项目也可以看看https://github.com/diddledani/macOS-Linux-VM-with-Rosetta)
*如果使用UTM,记得选择虚拟化模式,且勾选使用Apple虚拟化和rosetta支持,否则默认启用的QEMU的虚拟化功能。这也意味着没有QEMU试验性的GPU加速功能(所以我干脆装了LXDE)
基于arm64的Linux系统(没错虚拟机内运行的还是arm64的系统,只是上面运行的软件可以靠rosetta翻译)
支持virtiofs共享,以访问macOS提供的rosetta相关文件
苹果官方文档使用的是binfmt-support包里的update-binfmts脚本来设置x86架构如何交由rosetta处理。这个包在Debian/Ubuntu系发行版中较容易安装,apt直接装就好。但其他很多发行版已删除此包,arch则曾经在aur提供,4年前也给删了,因为相关功能被systemd内集成的binfmt相关功能给替代了。但我还没搞清楚怎么用这个替代苹果给出的方案,所以直接从源码编译安装了binfmt-support。
关于在虚拟机里安装arm linux:
因为虚拟机是UEFI启动的,所以需要arm UEFI的ISO镜像(utm也可以用Linux内核镜像,但在Apple虚拟化框架下我没成功,不知道是不是哪里搞错了),这个倒是挺难找的,不少发行版只提供x86版本,很多则是有arm版但是针对各种开发板定制,直接给个tar让用户解压到SD卡之类的上面用。Fedora官方是少数直接提供arm UEFI ISO启动镜像的,是liveCD而且安装体验跟x86的也差不多。Ubuntu只有server版提供官方arm UEFI ISO启动镜像,不过可以装完之后再安装桌面环境,非常简单(比如apt install kubuntu-desktop或者什么别的桌面,一句命令全搞定),也可以用非正式的arm标准版的镜像,不过只有gnome的版本。archLinux官方没有提供启动镜像,但archBoot项目提供了arm启动盘,可以通过它像往常一样安装arch到虚拟机硬盘。
驱动什么的不用太在意,utm下需要安装一个spice-vdagent可以共享剪贴板