非 M 系列的 ARM 芯片能否创建 ARM 架构的 macos 系统,能的话性能怎么样

122 天前
 baiyekaslana

程序需要使用 matlabruntime 运行库,但是生产环境采购的 arm 架构的服务器,但是 matlabruntime 没有 arm 架构的包,只有 macos 系统提供了 arm 架构的包。 现在想的几种解决方法 1 ,arm 架构上模拟 x86 架构的虚拟机 这种方法试过了,由于服务器也不支持硬件虚拟化,这个虚拟机运行特别慢,没办法用 2 ,arm 架构上模拟 arm 架构的 macos 虚拟机 这个正打算尝试,但是浏览器搜索几乎没有方法,找到的都是 x86 上模拟 x86 的 macos 系统。问 chatgpt 和 deepseek 都说 macOS ARM 版本(如 macOS Sonoma )依赖于 Apple M 系列芯片的专有硬件特性,如 Secure Enclave 、APFS 加密、SIP (系统完整性保护)和特定的设备树结构。 这种方法好像也不行。 问下大佬是不是现在也是不行,还有 matlab 有没有 linux 的 arm 版本的包。

3147 次点击
所在节点    Linux
19 条回复
Aboceder
122 天前
应该不行,M 系列的 mac 使用 pd 装 windos 都只能装 arm 架构的,反之亦是同理
xclimbing
122 天前
我觉得运行不起来,专有硬件。应该问 matlab 有没有软件解决方案。
MacsedProtoss
122 天前
目前没有办法模拟 arm macOS
macOS 的 M 系魔改 arm 魔改到妈都不认识了 qemu 目前完全搞不定
HojiOShi
122 天前
翻翻 GNU Octave 的源码,迁移一下算了。话说 arm 架构的服务器应该是飞腾之类的吧。
424778940
122 天前
简单翻了一下官方文档和论坛 runtime 应该也就一堆 so/dll 动态库 没有 linux 的 aarch64 版本 但好像可以直接交叉编译 aarch64 的程序出来 也许可以直接静态连接?
yinmin
122 天前
你试一下 matlabruntime 的 docker 镜像是否有 arm64 版本(貌似有的),如果有的话,直接部署在 Docker 容器里。
mxT52CRuqR6o5
122 天前
box86/box64 ,不需要完全虚拟一个新系统
mayli
121 天前
生产环境弄点正常的吧,都用 matlab 了,为啥不用普通的 x86.
flyqie
121 天前
chatgpt 说的对。

apple 的那个 soc 改了太多了,很难去模拟,目前也没有类似方案。
seancullen
121 天前
在 docker 里跑 macos
seancullen
121 天前
flyqie
121 天前
@seancullen #11

这是 x86 的,跟楼主要求不符
ranaanna
121 天前
@seancullen 完全没有可能在 generic aarch64 上运行 macos 的,包括 docker 镜像。给的链接,即使能成功运行也只适用于 x86-64 架构的苹果和黑苹果硬件
ranaanna
121 天前
matlab (包括其运行库)只支持运行于 x86-64 上的 windows, linux 和 macos (及之前的 os x),从 r2023b 开始支持运行于 apple silicon 上的 macos ,其他一概不行

如果想在其他硬件上运行 matlab 代码,可以用 matlab coder 将代码翻译成适用于其他硬件的 C/C++源码,再编译为可在其他硬件执行的可执行文件、静态/动态链接库等,集成到项目中。所以 OP 需要的可能是这个
legendBro
120 天前
非 M 系列的 ARM 芯片能创建 ARM 架构的 macos 系统,字节内部就有,具体怎么实现的不知道。
还有 macOS12 以上系统自带虚拟化接口,UTM 这个开源免费软件可以在 m 系列实体机上创建虚拟机。
YsHaNg
120 天前
@yinmin 只有 armv7 的 matlab-rasbian 镜像
flyqie
119 天前
@legendBro #15

2022 年字节的技术文章确实提到了他们在做 macos arm 虚拟化方面的工作。

但当时的文章还是在 mac mini 硬件上进行工作,三年过去了,不知道字节已经搞成什么样了,请问方便进一步分享下使用体验吗?
focalfossa
101 天前
或许你可以试试 https://www.darlinghq.org/ 。不确定支持不支持 aarch64 就是。darling 的做法和 wine 一样,本质上是做了 macho loader ,然后翻译 Apple 的 API ,会比较干净、性能损失很小。

而且由于 macOS 的基础系统 Darwin 是开源的,darling 直接复用了 Darwin 的代码库。据我所知命令行程序一般不会有兼容性问题( darling 可以跑 Xcode cmdline tool ),GUI 程序如果是 OpenGL 写的感觉也可以跑,但是用了 AppKit 的(这个不在 Darwin 开源代码中)的目前兼容性还有很多问题。
focalfossa
101 天前
#18 所以你需要将你的程序构建为 aarch64-apple-darwin-macosx 目标,不要依赖 Cocoa ,AppKit 等东西。然后将其放到服务器上的 darling 环境中运行。

你可以借助 LLVM 和 https://github.com/tpoechtrager/cctools-port 直接在 *nix 系统上构建 darwin/macOS 程序,无需使用 mac 电脑

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1130361

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX