- #1
感觉很奇妙[tieba=huaji]
使用时需要时刻把rosetta相关文件作为共享挂载,然后利用内核的binfmt功能把x86可执行文件扔给rosetta[tieba=huaji]
先跑个x86汇编用的ide看看
目前还在研究怎么让arm版gcc跨平台编译出x86的来
感觉很奇妙[tieba=huaji]
使用时需要时刻把rosetta相关文件作为共享挂载,然后利用内核的binfmt功能把x86可执行文件扔给rosetta[tieba=huaji]
先跑个x86汇编用的ide看看
目前还在研究怎么让arm版gcc跨平台编译出x86的来
前排支持
几个前置条件:
至少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可以共享剪贴板
运行基于x86-64的CPU烤鸡软件CPU burn。
刚开机是没有rosetta支持的,可以看到第一次运行失败了。之后执行了启用rosetta的命令,就可以运行了
奇怪的是,不知道是UTM还是苹果的虚拟框架的问题,怎么默认让虚拟机用4个小核跑[tieba=huaji]
指令:
我不禁想到了 Windows ARM64 with Rosetta
显然并不是什么都能跑(
gcc装上了x86版但是rosetta报错了
我从 Intel 的Linux 上 cp 来一份 ld-linux 就可以跑了.. 但是不知道其他大的程序会不会有问题
删封申诉 | 知乎专栏 | 状态监控 | 用户协议(EULA) | 隐私政策
本站文章除其作者特殊声明外,一律采用CC BY-NC-SA 4.0许可协议进行授权,进行转载或二次创作时务必以相同协议进行共享,严禁用于商业用途。