文章摘要
该项目是一个面向Linux ARM64的用户态macOS翻译层,无需JIT即可加载Darwin Mach-O二进制文件,映射独立libSystem并转换BSD系统调用。已验证可运行7-Zip、curl等程序,支持Docker/Colima和UTM环境。
文章总结
好的,这是根据您的要求,对原文进行的中文重述,保留了核心细节,并删减了与主题无关的安装、构建、测试等具体操作指令。
项目概述:Kakehashi —— macOS ARM64 到 Linux aarch64 的用户态翻译层
Kakehashi 是一个运行在 Linux aArch64 系统上的用户态翻译层,它能够加载并运行原生的 macOS ARM64 (Darwin Mach-O) 可执行文件。其核心机制包括:映射一个独立的 libSystem 库,并翻译 BSD 系统调用,从而让 macOS 的 CLI 程序(如 clang、7-Zip 的 7zz、curl 等)能在 Linux 上运行。
核心功能与验证状态:
- 已验证的兼容性:已在 Docker/Colima 和 UTM 虚拟机(Linux aarch64)上验证通过。
- 7-Zip (
7zz):支持创建、测试和列出归档文件,包括多线程压缩(-mmt=4)。 - curl:支持 HTTP/HTTPS 的 GET 请求,包括文件下载和标准输出。HTTPS 功能通过集成的 CA 证书包实现。
- 其他:通过了 Clang 探针测试、多线程测试以及单元测试。
性能说明:
- 运行机制:Kakehashi 直接在 CPU 上原生运行客户代码,性能损耗主要来自系统调用边界(如 TLS 切换、NEON 寄存器保存/恢复等),而非指令模拟。
- 实测差距:在压缩大量小文件的场景下,性能约为原生 Linux 的 1/5(例如,原生 22.5 秒的任务,在 Kakehashi 下需要 118 秒)。但在压缩少量大文件时,差距会显著缩小(约 1.1-1.2 倍)。
- CI 场景价值:尽管有性能损耗,但在 CI/CD 场景下,使用 Kakehashi 在廉价的 Linux ARM64 运行器上运行 macOS CLI 工具,其成本效益远高于使用昂贵的 macOS 运行器。例如,即使任务运行慢 5 倍,Linux 运行器的每分钟成本仅为 macOS 的 1/10 到 1/12,总成本仍然更低。
项目定位与限制:
- 当前状态:该项目尚处于早期阶段,并非成熟产品。
- 不支持的功能:目前不支持完整的 curl 功能集(如 POST 请求、代理、HTTP/3)、Apple Security.framework、
git等命令行工具、GUI 程序以及代码签名。未来的开发重点包括支持git。
项目结构:
项目由多个 Rust crate 组成,核心包括:
* kakehashi:用户最终安装的二进制程序 kh。
* kh-loader:负责解析和加载 Mach-O 文件。
* kh-runtime:处理内存、陷阱、BSD 系统调用和“瓶子”(bottle)机制,并内嵌了独立的 libSystem.B.dylib 库。
* kh-libsystem:该独立 libSystem 库的源代码。
“瓶子”(Bottle)机制:
Kakehashi 使用一个名为“瓶子”的目录结构来模拟 macOS 的文件系统布局。它将 macOS 程序所需的库、工具和配置文件(如 7zz、curl、libSystem.B.dylib、SSL 证书)映射到 Linux 主机文件系统的特定路径下。同时,通过 /Volumes/linux/... 路径桥接,让客户程序可以访问宿主的文件系统。
许可证:
该项目采用 Apache License 2.0 许可证。
评论总结
以下是对评论内容的总结,涵盖主要观点、论据及认可度(评分均为None,表示无明确评分),并保持不同观点的平衡性:
主要观点与论据
项目潜力与长期愿景
- 评论者认为该项目有长期可行性,类比WINE/Proton在Windows应用上的成功(评论2)。
- 关键引用:
- "A long term vision for MacOS applications is feasible given the success of WINE/Proton with Windows applications."
- "Interesting project!"
技术实现与现有项目关联
- 评论者询问是否了解Darling项目(macOS兼容层),并建议合并努力或明确差异(评论2)。
- 关键引用:
- "Are you familiar with the Darling project? ... Could you combine efforts or do your goals differ too much?"
- "There's an open PR for ARM64 support."
用户期待与具体应用场景
- 评论者表达长期等待,希望未来能运行macOS AU插件(如通过yabridge)(评论3)。
- 关键引用:
- "this is something I've been waiting for a long time."
- "I would love to see something similar to yabridge implemented ... run AU binaries on linux."
版权与合规性疑虑
- 评论者质疑项目是否为“净室实现”,避免从Darling项目衍生代码(评论4)。
- 关键引用:
- "How can we tell that this is truly a clean room project and that there is no code ... derived from the Darling project?"
- "Otherwise great project."
项目成熟度与挑战
- 评论者认为问题较大、解决方案仍早期,但表示关注进展(评论5)。
- 关键引用:
- "the problem is bigger and solution still seems to be early."
- "I am curious how you gonna take further, will be watching it."
替代技术路径探讨
- 评论者提出一种更简单的方案:不重写库,而是直接使用macOS完整rootfs执行二进制(评论7)。
- 关键引用:
- "would a project like this be more trivial? ... design a virtualization framework that ... expects to execute the binary in the context of a full rootfs copied over from a 'real' macOS install."
- "how hard would it be, comparatively?"
其他反馈
- 评论者表示虽不使用macOS二进制,但认为项目有前景(评论6)。
- 评论者希望能在Linux ARM上构建iOS应用(评论8)。
平衡性总结
- 支持与期待:多数评论者认可项目潜力,类比WINE/Proton,并期待未来应用(如AU插件、iOS构建)。
- 质疑与建议:部分评论者关注版权合规性(净室实现)、项目成熟度(早期阶段),并建议参考Darling项目或采用更简单的虚拟化路径。
- 技术讨论:评论者提出不同实现思路(如直接使用macOS rootfs),但未形成共识。