# SudoBox **Repository Path**: Linux-Tool/SudoBox ## Basic Information - **Project Name**: SudoBox - **Description**: SudoBox 是一款面向 Android (12+) 临时 Root 设备的移动 GNU/Linux 工作台,专门为方便用户在安卓临时Root环境下提供便携式的GNU/Linux环境,结合Termux,KernelSU模块,能够在APP+模块加持作用下,使得GNU/Linux拥有持久保活能力。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-14 - **Last Updated**: 2026-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: Android, Linux, chroot, Kotlin, container ## README
SudoBox — Tux 提权图标

SudoBox

按需提权,即用即还 · 您的 Android Linux 工作间

module v0.1.26 app v0.1.40 Android 12+ (minSdk 31) KernelSU | Magisk GPL-3.0

## 项目简介 SudoBox 是一款面向 Android (12+) 临时 Root 设备的移动 GNU/Linux 工作台。它融合 Termux 的终端体验与 Linux Deploy 的容器编排能力,为开发者提供一个“随用随开、用完即走”的纯净 Linux 环境。 - **Root 独立性**:基于 KernelSU / Magisk 模块(模块 id `chroot-mgr`,显示名 SudoBox Service),全局至多运行一个容器实例,确保系统稳定性。 - **零修改原则**:利用 `unshare -m + chroot` 技术,不篡改系统分区,卸载后无残留。 - **原生终端体验**:深度复用 Termux 的 terminal-emulator / terminal-view 组件(PTY/JNI 与渲染),保证输入法兼容与视觉效果。 - **组件化架构**:移植 Linux Deploy 的组件机制(mnt / net / profile + 部署钩子),支持按需插拔。 ## 核心特性 | 特性 | 描述 | |------|------| | **按需提权** | 通过 KernelSU 获取 Root,仅在容器启动瞬间提权,用完即还 | | **双层界面** | Jetpack Compose 控制面 + Termux 核心终端渲染 | | **多发行版** | Alpine / Ubuntu / Kali 在线安装;Debian 及任意 rootfs 压缩包导入(tar.gz / tar.xz / tar.bz2 / tar.zst) | | **双 Shell 入口** | `root` 强制 Root 进入;`enter` 按配置落到容器内非 root 用户(setpriv 直降权,不经 PAM) | | **多级保活** | App `KeepAliveService`(前台服务 + WakeLock)+ 模块 `guard` watchdog(cgroup 防冻结、崩溃自愈)+ 全局监督 `daemon` | | **自定义终端** | 内置 17 种配色方案、导入自定义字体、多会话 Tab(本地 / 容器 / Root 多开) | ## 技术栈 - **系统环境**:Android 12+(minSdk 31) - **Root 方案**:KernelSU(兼容 Magisk) - **容器引擎**:`unshare -m` + `chroot` - **终端模拟**:Termux 组件(terminal-emulator / terminal-view,JNI) - **UI 框架**:Jetpack Compose(Material 3) - **模块主控**:POSIX sh 单文件脚本 `chroot-mgr`(依赖模块自带 busybox) - **许可协议**:GPL-3.0 ## 项目结构 ``` SudoBox/ ├── module/ # 📦 KernelSU / Magisk 可刷入模块 │ ├── module.prop # 模块元数据(id=chroot-mgr, name=SudoBox Service) │ ├── customize.sh # 幂等安装脚本(PATH 注入、升级对账清理) │ ├── service.sh # 开机自启服务(boot-restore 门控,默认关闭) │ ├── action.sh # KSU 管理器“操作”按钮的免 App 控制面 │ ├── bin/ │ │ ├── chroot-mgr # 核心管理程序(POSIX sh 单文件实现,v0.1.26) │ │ ├── chroot-enter.sh # 容器进入 helper(unshare -m 私有 ns 补挂载 + exec chroot) │ │ ├── net.sh # DNS / 网络配置工具 │ │ └── busybox # 模块自带 busybox(aarch64 静态 musl) │ ├── distro/ # 发行版描述符(alpine / ubuntu / kali 在线;debian 需导入) │ ├── include/ │ │ ├── core/ # 组件:mnt(挂载/mtab)、net(网络/DNS)、profile(shell 环境/motd) │ │ └── hooks/ # 部署钩子:dns、hosts、apk-repos、seccomp-off-apt、pacman-key │ └── sepolicy.rule # SELinux 策略(最小精确规则,如 App 读 /proc/loadavg) └── app/ # 📱 Android 控制应用(v0.1.40) ├── app/ # 主应用模块 │ ├── backend/ # ChrootBackend(su 桥接 chroot-mgr,JSON 状态解析) │ ├── ui/ # Compose UI(仪表盘 / 容器 / 设置 + 终端覆盖页) │ ├── terminal/ # 终端会话管理(Tab 元数据 / Session Registry / 字体) │ ├── service/ # KeepAliveService + TerminalSessionHostService │ └── prefs/ # 偏好持久化(主题 / 保活 / 配色 / 字体) ├── terminal-emulator/ # Termux 终端模拟核心(JNI) └── terminal-view/ # Termux 终端视图组件 ``` ## 快速开始 ### 1. 准备工作 - 一台 **Android 12+** 设备,已通过 KernelSU 完成临时 Root(越狱 / GKI 内核模式) - 或一台已解锁 Bootloader、永久刷入 KernelSU 的设备(可选场景,建议搭配 DroidSpaces) - 设备已安装 KernelSU / Magisk 管理器 - PC 侧已安装 Android SDK(或 ADB) ### 2. 安装 SudoBox 模块 模块本体即 `module/` 目录:`chroot-mgr` 为 POSIX sh 脚本、`busybox` 为预编译静态二进制,无需设备端编译。将其打包为 ZIP 后在 KernelSU / Magisk 管理器中刷入并重启: ```bash cd module zip -r ../SudoBox-service-v0.1.26.zip . -x '*.git*' ``` 安装时 `customize.sh` 会自动完成全局 PATH 注入(`chroot-mgr path install`)。模块安装后可通过 `su -c chroot-mgr ` 直接调用。 ### 3. 构建控制 App ```bash cd app ./gradlew :app:assembleDebug # Windows 使用 gradlew.bat # 构建 Release 版(需配置 keystore.properties) ./gradlew :app:assembleRelease # Debug 产物: app/app/build/outputs/apk/debug/app-debug.apk # Release 产物: app/app/build/outputs/apk/release/app-release.apk # 安装到手机 ``` ### 4. 初始化容器 1. 打开 SudoBox App,进入 **Containers** 页面。 2. 点击底部 **+** 号,选择 **Online Install** 在线安装 Alpine / Ubuntu / Kali。 3. 或选择 **导入 rootfs**,导入 PC 侧预生成的 rootfs 压缩包(Debian 当前需走此路径)。 ## 命令行协议 App 通过 `su -c chroot-mgr ` 与模块通信,核心命令如下: | 命令 | 描述 | 示例 | |------|------|------| | `status [--json\|--field \|--mounts]` | 状态查询(JSON / 单字段 / 挂载残留) | `su -c chroot-mgr status --json` | | `install [suite] [--mirror]` | 在线部署发行版(alpine / ubuntu / kali) | `su -c chroot-mgr install alpine latest-stable` | | `install --list` | 列出可用发行版 | `su -c chroot-mgr install --list` | | `install --import --name ` | 导入 rootfs 压缩包(tar.gz / tar.xz / tar.bz2 / tar.zst) | `su -c chroot-mgr install --import /sdcard/rootfs.tar.gz --name myroot` | | `enable ` / `disable [--all]` | 启动 / 停止容器 | `su -c chroot-mgr enable default` | | `switch [--no-enter]` | 单实例原子切换(停旧→卸载→启用新) | `su -c chroot-mgr switch work` | | `enter [-- cmd...]` | 进入容器 Shell(配置过则落非 root 用户) | `su -c chroot-mgr enter default` | | `root [-- cmd...]` | 强制以 root 进入容器 | `su -c chroot-mgr root default` | | `exec ` | 在容器内执行命令 | `su -c chroot-mgr exec default apt update` | | `uninstall ` | 彻底卸载容器(删 rootfs,区别于 disable) | `su -c chroot-mgr uninstall work -y` | | `export ` | 导出容器备份 | `su -c chroot-mgr export /sdcard/backup.tar.gz default` | | `daemon start [--boot]\|stop\|status` | 全局监督守护进程(状态对账 + boot-restore) | `su -c chroot-mgr daemon status` | | `guard` | 进程守护 watchdog 手动控制 | `su -c chroot-mgr guard` | | `user-config [id] [--reset]` | 容器内非 root 用户配置(首次进入自动引导) | `su -c chroot-mgr user-config default --reset` | | `path install\|remove\|status` | 全局 PATH 注入(ksu/bin symlink) | `su -c chroot-mgr path install` | | `diagnose` | 内核能力诊断 | - | | `selftest` | 逻辑自检 | - | ## UI 功能模块 - **Dashboard(仪表盘)**:实时显示系统负载(CPU / 内存)、Root 状态、守护进程状态与容器运行概览。 - **Containers(容器)**:网格 / 列表视图管理容器,支持启动、停止、终端、Root 终端、在线安装、rootfs 导入、导出、卸载。 - **Settings(设置)**:个性化配置,包括: - **Theme**:浅色 / 深色 / 跟随系统,动态取色。 - **Terminal**:17 种配色方案(GitHub Dark 默认、Dracula、Nord、Gruvbox、Solarized 等)。 - **Font**:导入 JetBrains Mono 等自定义字体。 - **KeepAlive**:前台服务保活开关(含通知权限、电池优化白名单引导)。 ## 开发指南 ### 架构设计 SudoBox 采用 **Android App + KernelSU Module** 的双进程架构: 1. **App 层(Kotlin + Compose)**:负责 UI 交互、配置持久化、字体管理。每次操作经 `ChrootBackend` 临时 `su -c chroot-mgr ...`,不持有常驻 root 连接;状态经模块 `status --json` 读取并由 ViewModel 轮询刷新。 2. **Module 层(POSIX sh 脚本 + busybox)**:负责 `unshare`、`chroot`、`mount` 等核心操作与容器生命周期管理。状态写入 `/data/adb/chroot-mgr/data`(`.state`、profiles 台账),App 只读不写。 ### 本地逻辑测试 模块侧自带逻辑自检,可在任意 Root 设备上执行: ```bash su -c chroot-mgr selftest # 逻辑自检 su -c chroot-mgr diagnose # 内核能力诊断 ``` > 注:仓库暂未包含一键构建 / 冒烟测试脚本(`tools/` 目录当前为空)。 ### 设备端冒烟测试 无独立脚本,按功能顺序人工验证:`status` → `install --list` → `install alpine` → `enable` → `enter` → `exec` → `disable` → `uninstall`。 ## 实现状态 | 功能模块 | 状态 | 说明 | |----------|------|------| | R0 引擎(unshare + chroot) | ✅ 已实现 | `chroot-enter.sh` 私有 mount ns 补挂载(proc/sys/dev/pts/shm/tmp),会话结束零残留 | | 组件系统(mnt / net / profile) | ✅ 已实现 | 移植 Linux Deploy 组件机制,含部署钩子(dns / hosts / apk-repos / seccomp-off-apt / pacman-key) | | 单实例约束 | ✅ 已实现 | 全局至多一个活跃容器,`switch` 原子仲裁切换 | | 发行版在线安装 | ❌ 待修复 | 目前还在修复在线拉取镜像功能 | | rootfs 压缩包导入 | ✅ 已实现 | `install --import`,支持 tar.gz / tar.xz / tar.bz2 / tar.zst | | App 3 Tab 布局 | ✅ 已实现 | 仪表盘 / 容器 / 设置(v0.1.22 起终端改为全屏覆盖页,不再占 Tab) | | 全面屏适配 | ✅ 已实现 | `enableEdgeToEdge` + `safeDrawing`(systemBars ∪ displayCutout)+ 宽屏 NavigationRail | | Termux 终端集成 | ✅ 已实现 | 复用 terminal-emulator / terminal-view(JNI),多会话 Tab / 同容器多开 / 入口作用域 | | 容器内 Root | ✅ 已实现 | `chroot-mgr root ` 强制 Root 入口(v0.1.14);enter 支持容器内非 root 用户(setpriv 直降权,v0.1.12) | | 进程守护 / 保活 | ✅ 已实现 | App `KeepAliveService`(v0.1.16)+ 模块 `guard` watchdog(cgroup 防冻结 + 崩溃自愈,v0.1.18)+ 全局监督 `daemon`(v0.1.24) | | 容器状态对账 | ✅ 已实现 | 进程台账 + 挂载实况对账,会话退出自愈状态,防状态漂移(v0.1.16) | | 全局 PATH 注入 | ✅ 已实现 | `chroot-mgr path install`,su 会话免全路径调用(v0.1.21) | | 容器内 suid 提权 | ✅ 已实现 | rootfs 自 bind + remount 摘除 nosuid/nodev;v0.1.26 起 5 姿势逐试(busybox 4 种 + toybox)并以 `/proc/mounts` 实况验收,实测 f2fs/GKI 内核 sudo 可用 | | 设备端 debootstrap | ⚠️ 规划中 | Debian 在线安装待内置 debootstrap 资产(v0.2.x 计划) | ## 致谢 - [KernelSU](https://github.com/tiann/KernelSU):提供 Android Root 模块生命周期管理。 - [Termux](https://github.com/termux/termux-app):提供卓越的终端模拟与渲染引擎。 - [Linux Deploy](https://github.com/meefik/linuxdeploy):提供经典的容器部署与组件化架构。 ## 许可证 本项目采用 **GPL-3.0** 许可证开源。复用组件 termux-app 与 linuxdeploy 同样遵循 GPL-3.0,保留原始版权声明。