首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

Show HN:Kakehashi – 在 Linux ARM 上运行 macOS 二进制文件的实验用户空间

2026-08-02 1 阅读 约10分钟阅读 vlad_kalinkin
分享:
字号:
Kakehashi 用户空间 macOS ARM64 → Linux aarch64 翻译层(CLI 优先,无 JIT)。在 Linux aarch64 上加载 Darwin Mach-O,映射独立的 libSystem ,翻译 BSD 系统调用,并运行真实的来宾(clang 探针、7-Zip 7zz 、curl 、线程)。实时执行 Linux aarch64(裸机、VM、Colima/Docker) 干加载/检查任何主机(包括 macOS) 设计参考文档/什么有效 在 Docker/Colima 和 UTM (Linux aarch64) 上进行验证。安装一次: Cargo install kakehashi # 或从结账中安装: Cargo install --path crates/kh-cli --force kh Bottle Ensure kh install 7zip # Darwin 7zz → guest /usr/local/bin/7zz kh install curl # Darwin curl → guest /usr/local/bin/curl 相对 -o / 归档路径根据 kh 进程的主机 CWD 进行解析(自己创建父目录,或依赖 auto-mkdir 进行 O_CREAT )。通过 Bottle,/Volumes/linux/... 桥接到主机根目录 ( / → host / )。 7-Zip ( 7zz ) # 版本/帮助 kh run 7zz -- kh run 7zz -- --help # 创建存档(cwd-relative) kh run 7zz -- a demo.7z README.md kh run 7zz -- t demo.7z kh run 7zz -- l demo.7z kh run 7zz -- x -o./out demo.7z # 多线程压缩(正确性门) kh run 7zz -- a -t7z -m0=lzma2 -mx=5 -mmt=4 mt.7z README.md kh run 7zz -- t mt.7z # 期望:一切正常,退出 0 Docker 助手(主机 .tmp/kh-out/ 下的工件): ./scripts/docker-7zz.sh --help ./scripts/docker-7zz.sh a /Volumes/linux/out/demo.7z /Volumes/linux/src/README.md ls -lh .tmp/kh-out/demo.7z KAKEHASHI_HYPERCALL=1 ./scripts/docker-7zz.sh a -t7z -m0=lzma2 -mx=5 -mmt=4 \ /Volumes/linux/out/mt.7z /Volumes/linux/src/README.md ./scripts/docker-7zz.sh t /Volumes/linux/out/mt.7z curl # 横幅 (G1) kh run curl -- --version # HTTP GET → 文件 (G3 / G5)。 -o 的父项在缺失时创建。 kh run curl -- -sS -o .tmp/kh-out/body http://example.com/ # 期望:退出 0,~559 字节,HTML 包含“示例域” wc -c .tmp/kh-out/body head -c 80 .tmp/kh-out/body ; echo # HTTP 到标准输出 kh run curl -- -sS http://example.com/ |头-c 80 ; echo # HTTPS GET (G4) — OpenSSL + Bottle CA(从主机或curl.se下载) kh run curl -- -sS -o .tmp/kh-out/https-body https://example.com/ wc -c .tmp/kh-out/https-body # 负数:错误/自签名证书必须失败(rc ≠ 0) kh run curl -- -sS -o /dev/null https://self-signed.badssl.com/ ;回显退出:$? Docker 助手: ./scripts/docker-curl.sh --version ./scripts/docker-curl.sh -sS -o /Volumes/linux/out/body http://example.com/ ./scripts/docker-curl.sh -sS -o /Volumes/linux/out/https-body https://example.com/ ls -lh .tmp/kh-out/body .tmp/kh-out/https-body # Trace-first探测日志 → .tmp/kh-curl-probe/ ./scripts/docker-curl-probe.sh --version # 选项矩阵(大层) → .tmp/kh-curl-options/ ./scripts/docker-curl-options.sh tier1 ./scripts/docker-curl-options.sh tier9-10 ./scripts/docker-curl-options.sh all # tier1..10 多次运行时无害噪音:kh: open failed ENOENT(openat) path=/etc/ssl/openssl.cnf — OpenSSL 可选配置; HTTP/HTTPS 仍然通过种子 CA 捆绑包工作。警告…跳过 dylib…Security/CoreFoundation — Apple 框架不在瓶中;软存根覆盖负载路径。未解决的强符号;绑定到名为“缺失蹦床”的符号——未在幸福路径上击中的符号。详细信息和大门:docs/curl.md。也是绿色 Surface Notes Clang / 固定探针测试 / clang-probe / ,测试 / 固定装置 / 多线程 7zz -mmt = 4 Docker + UTM Bottle + 独立 libSystem kh Bottle 确保嵌入 dylib 单元测试 + Clippy 货物测试 / Clippy 工作空间(不包括 kh-libsystem ) 不是产品声明(尚未) 完整的卷曲功能集(POST 主体,代理,HTTP/3 端到端,每个方案),真正的 Apple Security.framework、git / CLT、GUI、协同设计。下一个产品片段:git via kh install xcode-tools — 请参阅 docs/git.md 。 Crates Crate Role kakehashi Binary kh(安装此) kh-loader Mach-O 解析、映射、执行 kh-runtime 内存、陷阱、BSD 系统调用、bottle;嵌入独立的 l
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱