Hacker News 中文摘要

RSS订阅

Show HN: Kakehashi – 在Linux ARM上运行macOS二进制文件的实验性用户空间 -- Show HN: Kakehashi – Experimental userspace to run macOS binaries on Linux ARM

文章摘要

该项目是一个面向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 程序所需的库、工具和配置文件(如 7zzcurllibSystem.B.dylib、SSL 证书)映射到 Linux 主机文件系统的特定路径下。同时,通过 /Volumes/linux/... 路径桥接,让客户程序可以访问宿主的文件系统。

许可证:

该项目采用 Apache License 2.0 许可证。

评论总结

以下是对评论内容的总结,涵盖主要观点、论据及认可度(评分均为None,表示无明确评分),并保持不同观点的平衡性:

主要观点与论据

  1. 项目潜力与长期愿景

    • 评论者认为该项目有长期可行性,类比WINE/Proton在Windows应用上的成功(评论2)。
    • 关键引用:
      • "A long term vision for MacOS applications is feasible given the success of WINE/Proton with Windows applications."
      • "Interesting project!"
  2. 技术实现与现有项目关联

    • 评论者询问是否了解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."
  3. 用户期待与具体应用场景

    • 评论者表达长期等待,希望未来能运行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."
  4. 版权与合规性疑虑

    • 评论者质疑项目是否为“净室实现”,避免从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. 项目成熟度与挑战

    • 评论者认为问题较大、解决方案仍早期,但表示关注进展(评论5)。
    • 关键引用:
      • "the problem is bigger and solution still seems to be early."
      • "I am curious how you gonna take further, will be watching it."
  6. 替代技术路径探讨

    • 评论者提出一种更简单的方案:不重写库,而是直接使用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?"
  7. 其他反馈

    • 评论者表示虽不使用macOS二进制,但认为项目有前景(评论6)。
    • 评论者希望能在Linux ARM上构建iOS应用(评论8)。

平衡性总结

  • 支持与期待:多数评论者认可项目潜力,类比WINE/Proton,并期待未来应用(如AU插件、iOS构建)。
  • 质疑与建议:部分评论者关注版权合规性(净室实现)、项目成熟度(早期阶段),并建议参考Darling项目或采用更简单的虚拟化路径。
  • 技术讨论:评论者提出不同实现思路(如直接使用macOS rootfs),但未形成共识。