前言(不想看可直接略过):
termux-container是我写的在手机中运行chroot-unshare/proot容器的脚本,支持自动解析rootfs链接,支持跨架构(proot)运行容器,自定义程度较高。chroot-unshare容器安全性高于普通chroot容器,同时保证执行效率。它借鉴了tmoe,但是与tmoe完全不同–它让用户自定义安装过程而不是直接替用户安装容器。
知识普及(简单了解):
chroot:字面意思是改变根目录,用于把进程限制在某一目录内,可利用这一特性来运行linux容器,但是它除目录外没有其它隔离,因此相对危险。
unshare:字面意思是不共享,用于隔离进程,需要内核namespace支持,不过至少可以做到挂载点隔离(基于mount namespace)–容器外部无法访问容器内挂载的系统目录。
proot:非特权模式binfmt_misc,chroot和mount实现,用于免root运行容器,但是效率较低,且有系统文件读写限制(脚本中/proc下文件已经借鉴tmoe的文件列表修复读写)。
chroot-unshare实现原理:
chroot-unshare是一个安全的在手机中运行chroot容器的方法,通过参考网络上的文档,我写出了和tmoe不同的实现–先通过unshare运行chroot,把进程隔离,然后再在容器内部挂载系统目录(/proc,/dev,/sys),手动创建/dev下所有设备,防止手机分区暴露,最后把重要目录挂载为只读(只读目录列表参照了docker容器的挂载点)。
(水了一堆了,教程呢???)
使用教程:
打开termux,安装git,然后
安装:
git clone https://github.com/Moe-hacker/termux-container
cd termux-container/package-zh
chmod -R 755 DEBIAN
chmod 777 data/data/com.termux/files/usr/bin/container
dpkg -b . ~/termux-container.deb
apt update
apt install ~/termux-container.deb
运行:
输入container打开菜单,你将会看到如下界面:

选择2,创建一个新容器,
你将看到如下界面:

根据自己的设备情况进行选择,有root选1,没root或者你想跨架构运行容器选2。
然后根据自己的需要填写相关内容,贴出两个示例:


然后,再次输入container,选择1,即可运行容器

进阶用法参照container -h:

转载于 知乎
暂无评论内容