Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

termux-debian-chroot — Debian Chroot 全家桶(KernelSU/Magisk 模块)

在 Android 上跑一个完整的 Debian(真 chroot,非 proot):开机自动挂载、sshd 局域网可达、通知直通 Android 通知栏。合并自两个成熟模块 (debian-sshd-autostart v2.2 + chroot-android-bridge v1.0)并附自动化 bootstrap。

开机 (KernelSU service.sh, root)
 │ 等待 sys.boot_completed + Termux 数据目录
 ├─ 挂载: proc sys dev/pts dev/shm run tmp
 │        + /storage/emulated/0 → /mnt/android_raw (bind)
 │        + bindfs uid 重映射 → /mnt/android      ← 普通用户也能读写 sdcard
 ├─ DNS: getprop net.dns* + 公共 DNS → /etc/resolv.conf
 ├─ aid_inet/aid_net_raw 组(chroot 内联网需要)
 ├─ sshd :8022(仅密钥,iptables 仅放行局域网+loopback)
 └─ /etc/service.d/*.sh 按序执行 chroot 内自定义服务
      └─ 40-android-bridge.sh: dbus 会话总线 + 通知转发 daemon
                              │
 chroot 内 libnotify 调用 ────┤ D-Bus org.freedesktop.Notifications
                              ▼
              TCP 127.0.0.1:9870 (JSON 协议)
                              ▼
        Termux ~/android-bridge/bridge.py (Termux:Boot 常驻)
                              ▼
                termux-api → Android 通知/Toast/振动

组件

组件 位置 职责
module/service.sh KSU 模块 开机编排:挂载/DNS/sshd/防火墙/service.d
debian-sshd Termux $PREFIX/bin 控制台:start/stop/restart/status/shell
module/chroot/* 装进 chroot D-Bus 通知转发 daemon + profile + service.d 钩子
module/termux/bridge.py ~/android-bridge/ 通知桥 Termux 侧(TCP 9870 → termux-api)
bootstrap.sh 本仓库 自动下载 LXC rootfs 并安装依赖(原手工手册的自动化)

环境要求

  • arm64 设备 + root(KernelSU / Magisk)
  • Termux + Termux:API、Termux:Boot 插件(F-Droid 同源签名)
  • chroot 内(bootstrap 自动装):openssh-server dbus python3-dbus python3-gi libnotify-bin bindfs
  • 约 2GB+ 空闲空间(最小 rootfs ~120MB,装完依赖 ~400MB)

安装

# 1. rootfs(可指定 trixie/bookworm,默认 trixie)
bash bootstrap.sh

# 2. 公钥(密码登录已禁用!)
su -c 'cp your_key.pub /data/local/debian/root/.ssh/authorized_keys'

# 3. 模块(二选一)
bash install.sh                     # 仓库内直装,立即生效
# 或 ./build.sh 出 zip → 管理器刷入 → 重启

# 4. 连接
ssh root@<平板局域网IP> -p 8022

日常使用

debian-sshd status        # 挂载/sshd/连接信息
debian-sshd shell         # 免密进入 chroot 交互 shell
debian-sshd restart       # 重启 sshd

chroot 内自定义开机服务:往 /etc/service.d/ 放可执行 .sh(数字前缀排序, 脚本需自行后台化,支持 set -e)。

通知桥(chroot 内任何 libnotify 程序零改动):

notify-send "编译完成" "gradle build ✓"        # → Android 通知栏
# 协议(直连 TCP 9870 亦可):
#  {"cmd":"notify","title":"..","content":"..","id":1,"sound":false,"vibrate":[300,100],"buttons":["A"]}
#  {"cmd":"toast","content":"hi","short":true}
#  {"cmd":"vibrate","duration":1000}
#  {"cmd":"notify-cancel","id":1} / {"cmd":"ping"}

安全模型

  • sshd:PermitRootLogin prohibit-password,全部密码类认证关闭,强加密套件
  • 防火墙:iptables/ip6tables 仅放行 127/8 · 10/8 · 172.16/12 · 192.168/16 · ::1 · fc00::/7,其余 DROP
  • 通知桥只监听 127.0.0.1,不暴露局域网

文件布局

  • /data/local/debian — rootfs(卸载模块不删除,手动删需谨慎先 umount)
  • /data/local/tmp/debian-sshd-boot.log、android-bridge-boot.log — 启动日志
  • 原始手工安装手册见 docs/manual-install.txt

卸载

管理器卸载模块(自动 umount,rootfs 保留);彻底删除:

su -c 'sh /data/adb/modules/debian-chroot/uninstall.sh
       rm -rf /data/adb/modules/debian-chroot /data/local/debian'

License

MIT — 见 LICENSE

About

Debian chroot 全家桶:KernelSU/Magisk 模块,开机自动挂载 + sshd(仅密钥·仅局域网) + Android 通知桥(D-Bus→termux-api) + rootfs 自动 bootstrap

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages