Skip to content

PRoot Binaries

AceGuru-mjh edited this page Oct 1, 2026 · 4 revisions

PRoot 预编译二进制溯源(P71)

🖥️ 终端 & Linux · 🏠 首页 › PRoot-Binaries

Home Version Kotlin Modules Tools License

PRoot-Binaries

📑 本页目录

platform/terminal/src/main/jniLibs/ 里的每个二进制都登记了来源、版本、许可与 SHA-256。 来源 docs/proot-binary-provenance.md。

1. 为什么用预置二进制

nativeLibraryDir 是 Android 上唯一保证可执行的 app 可控目录(SELinux 对 apk-lib 文件授予 execute)。 这是 Termux / UserLAnd / Andronix 分发 PRoot 的标准模型。

2. 文件 / 来源 / 版本

jniLibs 文件 Termux 包 版本 源
libproot.so proot 5.1.107.92 packages.termux.dev/apt/termux-main/pool/main/p/proot/
libproot-loader.so proot(libexec/proot/loader) 5.1.107.92 同上
libproot-loader32.so proot(libexec/proot/loader32) 5.1.107.92 同上(仅 64-bit ABI,用于运行 32-bit guest)
libtalloc.so libtalloc 2.4.3 pool/main/libt/libtalloc/
libandroid-shmem.so libandroid-shmem 0.7 pool/main/liba/libandroid-shmem/

打包 ABI:arm64-v8a / armeabi-v7a / x86_64(与模块 ndk.abiFilters 一致)。 构建方:Termux 用 NDK r29、minSdk 24 构建(兼容本 App 的 minSdk 26),动态链接 Android bionic libc.so 及上述两个自带库。

3. 完整性校验

  • 清单:platform/terminal/proot-binaries.sha256(14 项);
  • CI 的 static-analysis job 每次构建复核全部摘要(P71);
  • 实际指纹(节选):
ABI 文件 SHA-256 前 16 位
arm64-v8a libproot.so ea47e17da8e6ff48…
arm64-v8a libproot-loader.so 44ef39c1e1a18c09…
arm64-v8a libproot-loader32.so 25f6bd90bc5a3d30…
arm64-v8a libtalloc.so 3c9b207c0a6ea289…
arm64-v8a libandroid-shmem.so 84475798e07c8174…
armeabi-v7a libproot.so efb41b19b15aaa13…
x86_64 libproot.so 5c6b99c48ebb8758…

(armeabi-v7a 下没有 loader32,与"仅 64-bit ABI 提供"一致。)

4. 运行时库解析(为什么需要符号链接)

libproot.so 的 DT_NEEDED 声明的是 libtalloc.so.2 与 libandroid-shmem.so, 但 Android 打包要求 jniLibs 条目命名为 lib*.so:

打包名:libtalloc.so
首次使用时:PRootHostEnvironment 在 app 自有 staging 目录创建符号链接
            libtalloc.so.2 -> <nativeLibraryDir>/libtalloc.so
PRoot 进程的 LD_LIBRARY_PATH 指向该 staging 目录

guest loader 通过环境变量 PROOT_LOADER / PROOT_LOADER_32 显式传入, 因此其在磁盘上的文件名无关紧要。

5. 许可

组件 许可 义务
proot GPLv2+ 分发二进制需提供对应源码(本 app README 链接 proot-me 与 termux/proot;二进制与官方构建字节一致,可用校验和验证)
talloc LGPL-3.0 动态链接,要求库源码可得且可重链接
libandroid-shmem MIT —

6. 升级策略

Caution

二进制只能通过同一 commit 内同时更新 docs/proot-binary-provenance.md + 校验和清单来替换; 禁止原地修改二进制。

v2 计划:在 CI 中从源码静态构建 proot + talloc,去掉 Termux 运行时依赖集并收缩为单个自包含二进制。 v1 仍发 Termux 构建,因为它在目标 ABI 矩阵上久经考验。

7. 相关页面

footer

🏠 返回首页 · 📚 文档索引 · ❓ FAQ · 🔧 故障排查 · 🗺️ 路线图 · 🐛 提 Issue

Android Guru Agent · v1.4.4 · Kotlin 2.0.21 · Compose · PRoot · Room

Clone this wiki locally