Skip to content

About

ProOT container engine — Rust ptrace core, Go installer, Python runtime, Lua hooks & C JNI bridge; rootless Linux containers for the moxsh family

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

58 Commits

Folders and files

Repository files navigation

🌐 主仓库在 GitHub — codecloud-dev/moxsh-proot 是唯一主源:Issue、Pull Request、功能讨论请统一提交到 GitHub。Gitee 镜像 仅供国内高速只读访问,每小时从 GitHub 自动同步。

mox-proot 液态玻璃标志

mox-proot

CI Build Latest GitHub Stars version license Rust 内核 Go 安装器 钩子脚本 C 桥 桌面 Linux / Termux(Android)

不 root、不装特权、不动系统分区——在 Termux / Linux 里跑一整个 Linux 发行版。Rust 自研 ptrace 路径翻译引擎,对齐上游 PRoot 常用命令面,一键安装,开箱即用。

中文 · English

⭐ 如果 mox-proot 对你有用,欢迎点个 Star —— 它能让更多人在手机上、在容器里用上顺滑的 Linux!

品牌字标

_  _ ____ _  _
|\/| |  |  \/
|  | |__| _/\_
  mox-proot — 多架构容器引擎

进入即见:容器内控制台 mox 无参进入时打印品牌标识;源码见 src/proot/brand.rs(BANNER / TAGLINE)。

🎁 惊喜体验三件套(时间上下文 / 古诗 / 彩蛋)

无参进入 mox(或 TUI 启动欢迎屏)时,会按本机真实时区把一天分成 晨 / 午 / 晚 / 夜 四相,送一句应景问候 + 一句古诗;另外还藏了彩蛋暗号。 纯本地、零依赖、零网络,源码单一来源在 src/proot/delight.rs。

时相 时段 问候 古诗
晨 05–10 早安,新的一天从容器里开始 ☀ 晨起开门雪满山,雪晴云淡日光寒。——郑燮《山中雪后》
午 11–16 午安,喝口水再战 ☕ 锄禾日当午,汗滴禾下土。——李绅《悯农》
晚 17–22 晚安,夜色正好适合折腾 🌙 夕阳无限好,只是近黄昏。——李商隐《登乐游原》
夜 23–04 夜深了,注意身体,别熬太晚 🌃 春眠不觉晓,处处闻啼鸟。——孟浩然《春晓》
mox                       # 无参:品牌字标 + 时相问候 + 古诗
mox egg                   # 彩蛋暗号:egg / 彩蛋 / konami / 蛋
mox-proot-distro time     # 单独打印时相 + 问候 + 古诗
MOX_EGG=1 mox-proot-tui   # 环境变量亦可显式点名彩蛋

🖥️ TUI 控制台与版本选择

mox-proot-tui                              # 六标签 TUI(欢迎屏 / Gauge 进度 / 二维码)
mox-proot-distro versions ubuntu           # 列出可选版本:24.04 LTS / 22.04 LTS / 20.04 LTS
mox-proot-distro install alpine --version "3.19 (minirootfs)"   # 选版本号安装

TUI 六个标签:发行版 / 短链 / 配方 / 日志 / 向导 / 账号。启动先出欢迎屏 (品牌字标 + 时相问候 + 古诗),任意键进入;安装改为后台线程,界面上跑 实时 Gauge + Spinner,列表带滚动条,账号页内嵌登录入口二维码。各面板的 简笔画示意图见 docs/tui-showcase.md。

🐛 欢迎来“批斗”我

这是个刚起步的项目,bug 肯定有,而且不少。我不装完美—— 你踩到的每一个坑、每一个槽点,都是帮我把它养好的机会。

  • 💥 遇到崩溃 / 跑不起来 / 结果不对?→ 提个 Bug 报告
  • 💡 有想要的功能?→ 开个需求
  • 🗯️ 单纯想吐槽、挑刺?→ 也欢迎开 issue,标签随便打 😄

每个 issue 我都会看,能修的尽快修。一起把它从“能跑”养到“好用” 💪

💛 觉得好用?欢迎到 爱发电 请作者喝杯咖啡 —— 国内可直接微信 / 支付宝收款,是独立开发最大的鼓励。

目录

🌟 MoX 系列

mox-proot 是 MoX 工具系列的基础设施组件:mox-proot 终端里的「PRoot 发行版」能力,引擎本体就住在这个仓库。一套审美,把桌面级工具搬进掌心。

产品 状态 一句话定位
mox-proot 已上线 本仓库:Rust 自研 PRoot 容器引擎(Android 液态玻璃终端 / Termux 生态的发行版内核,也可独立使用)
mox-site 已上线 本系列官方门户(官网)

🗺️ 路线图(0.2.0 进行中)

里程碑 内容 状态
0.2.0 mx: 短链系统(mx:alpine 即装即进)、落盘启动器(装了 kali 输 kali 就进)、容器内中文环境(locale/字体/输入法)、容器内控制台、base64 短命令 + 国内外自动分流 进行中
0.3.0 配方系统(mx:xfce 一键桌面,XFCE/LXQt/KDE/MATE + VNC 双通道) 规划中
0.4.0 TUI 控制台(ratatui 全功能面板) 已实现(0.9.0 随 mox-proot-tui 交付)
1.0.0 短链/配方/TUI 全齐的首个正式版 规划中

完整决策记录见 docs/roadmap.md。


⚙️ 核心特性

维度 说明
Rust ptrace 引擎 路径翻译、多进程树跟踪、fake root 全部 Rust,内存安全、无外部运行时
对齐上游命令面 -r/-0/-b/-w/-R/-e 与 -- 切分照旧,老用户零迁移;不支持的选项明确报错,不假装
三二进制 mox-proot(单命令容器)+ mox-proot-distro(四大发行版安装/登录/备份/恢复)+ mox-proot-tui(ratatui TUI 控制台)
显式解释器调用 动态 ELF 自动走 guest 自带 loader(qemu-user 同款方案),初始 exec 与运行时 execve 双覆盖
符号链接全链路 绝对 target 链接(Alpine applet 形态)在 exec / stat / openat 自动解析,tar 裸解包的 rootfs 也能跑
fake root uid/gid 显示为 0、chown/setuid 系伪装成功——不需要真 root,不碰系统分区
网络栈 DNS 统一 + IPv6 双栈探测 + 出网边界报告(mox-proot-distro net)
钩子运行时 post-install / pre-login 生命周期,Python / Lua 双解释器,容器内脚本即插即用
一键配方 声明式 TOML + shell 逃生舱,recipe list/show/apply 一键装桌面/VNC
一键安装 bash 探测层(curl | bash 零依赖)+ Go 安装器(install/update/probe),双层同源

🔧 它是怎么工作的

mox-proot 不是虚拟机,也不是模拟器——和上游 PRoot 一样,它做的是 ptrace 路径翻译:子进程的每个文件系统调用都被拦截,guest 视角的 路径在寄存器层改写为宿主 rootfs 内的真实路径,chroot、mount --bind、 binfmt_misc 的效果由此实现,而不需要任何特权。

引擎由 Rust 从零重写(非上游 C 版的封装),在此之上补齐了移动端现实 问题的解法:

  • 显式解释器调用:内核 exec 带 PT_INTERP 的 ELF 时会按 ELF 头里的 解释器路径在宿主命名空间查找,必然 ENOENT。引擎在 exec 停把命令 改写为 execve(loader, [loader, prog, args...])(与 qemu-user 同款), guest 自带 musl/glibc loader 直接上场,其后的 openat 全部落在翻译链上;
  • 绝对符号链接:rootfs 内 /bin/ls -> /bin/busybox 这类绝对 target 的链接,其 target 由内核在宿主空间按字面解析。引擎在 exec / stat / openat 全链路做组件级走查,把链接解析成 rootfs 内真实路径——tar 直接 解包、未规范化的 rootfs 也能跑;
  • 多进程树:TRACEFORK/VFORK/CLONE 全收,apt/dpkg 这类 fork 密集型 负载不挂死;长路径经 tracee 自有 scratch 区重指(loader-mem 等效机制)。

🚀 快速上手

🔹 一键安装(桌面 Linux / Termux(Android) 全适配)

方式一:短命令(推荐)——整条安装引导压成一段 base64 内嵌,复制即跑, 不挑域名;GitHub raw 不通自动回退 Gitee(国内免折腾镜像):

展开短命令(约 1.5 KB,点开复制整段粘贴执行)
echo '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' | base64 -d | gzip -d | sh

方式二:标准命令:

curl -fsSL https://raw.githubusercontent.com/codecloud-dev/moxsh-proot/main/scripts/install-mox-proot.sh | bash

国内备援(Gitee raw,直连):

curl -fsSL https://gitee.com/thousand-code-crafts/moxsh-proot/raw/main/scripts/install-mox-proot.sh | bash

零依赖(只要 curl + coreutils)。脚本全平台自适应:桌面 Linux (x86_64/arm64)与 Termux(Android)自动识别安装目录与架构(glibc / musl 自动选静态版), 不再只绑 Termux。二进制按国内/国外自动探测选源下载,逐文件 sha256 校验,自动落盘 mox-proot 与 mox-proot-distro 两个命令。

国内/国外都稳:二进制已同步到 Gitee 发布(与 GitHub 同源),GitHub 直连 超时自动回退 Gitee 源;若两端皆不通,再经 ghproxy 镜像兜底,最后可走 官网静态通道(MOX_PROOT_WEBSITE_DL)。无需手动折腾。

装完就能用:

mox-proot -R ~/ubuntu -0 -- bash        # 推荐绑定集 + fake root 进发行版
mox-proot --help                        # 完整用法

更丰富的安装/更新体验走 Go 安装器(Release 资产 mox-proot-installer-<goos>-<arch>,子命令 install / update / probe):

mox-proot-installer install
mox-proot-installer update

🔹 装个发行版玩玩

mox-proot-distro install alpine     # Ubuntu / Debian / Kali / Alpine
mox-proot-distro login alpine       # 进登录 shell

也可以直接短链启动(未装自动装,装完直接进):

mox-proot-distro launch mx:alpine

一条命令初始化(数据根 + 发行版 + 启动器 + 教学提示,重复跑只补缺的):

mox-proot-distro wizard                    # 默认 ~/.mox-proot + alpine
mox-proot-distro wizard --root /sd/data --distro ubuntu   # 自定义

中文环境开箱即用:登录时引擎自动注入 LANG/TERM(宿主中文环境会 透传进容器;兜底 C.UTF-8,不乱码)。想要完整中文显示:容器内装 locales 包并 locale-gen zh_CN.UTF-8,然后编辑 rootfs 里的 etc/mox-proot/env 把 LANG 改成 zh_CN.UTF-8。随时可查当前生效环境:

mox-proot-distro env alpine

🔹 容器内控制台

进任意容器后,固定命令 mox(不开放自定义)直接拉起管理控制台—— bind-mount 反穿透到宿主,装新发行版、查网络、看环境都不用退出容器:

# 容器内(任意发行版里):
mox                 # 管理控制台(list / install / remove / net / env)
mox install kali    # 在容器里再装一个发行版(落到宿主 MOX_ROOT)
mox net             # 网络边界报告

容器内不能再嵌套进其他容器(ptrace 不支持套娃),mox login/shell/launch 会提示你先退出。MOX_PROOT_CONSOLE=0 可关闭整套控制台注入。

🔹 系统要求

  • 桌面 Linux(x86_64 / arm64),或 Termux(Android 9+,aarch64 / x86_64;32 位 ARM 需源码构建)
  • 约 50 MB 可用空间(引擎 + 一个 minirootfs)

平台说明:mox-proot 是 Linux / Android(Termux)的 ptrace 路径翻译引擎, 仅在 Linux 内核上运行容器(macOS / Windows 无 ptrace 等价能力,无法跑容器)。 设备码扫码登录(mox-proot login)这类纯网络客户端在任意带 curl 的系统都可跑, 但容器引擎本身不支持 macOS / Windows。

🔹 从源码构建

git clone https://github.com/codecloud-dev/moxsh-proot.git
cd mox-proot
cargo build --release

完整构建/测试/验证命令见 docs/usage.md。


📦 仓库结构

一个引擎,五种语言,各守其位:

目录 语言 职责
src/proot/ Rust 引擎核心:ptrace 翻译、ELF/exec 链、发行版、网络栈、钩子发现
src/bin/ Rust mox-proot / mox-proot-distro / mox-proot-tui 三个独立二进制
go/ Go 安装器 + 下载器(install/update/probe),Linux / Termux 两靶
py/runtime/ Python 容器内钩子(供给检查 / 登录快照),宿主侧可直跑自证
py/verify/ Python 三层验证脚本(单测 + 钩子直跑 + 真实 rootfs e2e)
lua/ Lua 声明式配置(proot.lua)+ 钩子
c/ C Android JNI 桥(proot_bridge.c)
scripts/ bash 一键安装脚本(探测层)

🔗 和上游 PRoot 的关系

  • 行为层面:对齐。常用选项(-r/-0/-b/-w/-R/-S/-e、-- 切分)与 proot-distro 子命令面(list/install/login/backup/restore)保持一致, 老用户零迁移;
  • 代码层面:AI 辅助生成、clean-room 重写。引擎全部用 Rust 重新实现 (ptrace 停止机、路径翻译、ELF 解析、发行版管理);开发过程研读上游 公开文档与源码以对齐行为契约,但未复制其代码,也不依赖修改上游;
  • 生态层面:兼容。跑的还是官方 rootfs 镜像(Alpine minirootfs 等), 安装方式照旧;本仓库额外提供 Rust 引擎 + 一键安装 + 五语言钩子体系。

📖 文档


🤝 参与进来

发现 bug 或想要新功能,欢迎提 Issue;想贡献代码直接提 Pull Request。


💖 支持我们

如果这个项目对你有用,求一个 Star、点个关注、顺手转发——这对一个独立小项目来说,是天大的鼓励,也能让更多人在容器里用上 Linux。

  • 在 GitHub 上点 ⭐ Star:点开仓库右上角的 Star
  • 关注仓库,第一时间收到更新
  • 转发给你的朋友、群里、或任何被 root 权限折磨过的开发者

也欢迎任何形式的共建:报 bug、提建议、交代码、写文档、做翻译。独立开发者 + AI 协作,但每一个方向都由人拍板。


📜 许可证

GPL-3.0

🤖 AI 辅助声明

本项目(含全部代码、文档与官网页面)由开发者 codecloud-dev 主导设计,AI 辅助生成代码:架构决策、需求定义与验收由人完成,代码实现与文档撰写由 AI 协作完成并经人工审核修订。

About

ProOT container engine — Rust ptrace core, Go installer, Python runtime, Lua hooks & C JNI bridge; rootless Linux containers for the moxsh family

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages