在手机中运行chroot容器

前言(不想看可直接略过):

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 github.com/Moe-hacker/t
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打开菜单,你将会看到如下界面:

v2-fc1425767bb4860680923e1e795753a1_720w.webp

选择2,创建一个新容器,

你将看到如下界面:

v2-a1f2795052220af337a4b1324fde31f1_720w.webp

根据自己的设备情况进行选择,有root选1,没root或者你想跨架构运行容器选2。

然后根据自己的需要填写相关内容,贴出两个示例:

v2-845f0500f21a713eb54b93e9f5f4e3ec_720w.webp
v2-a9592d864c0b8db67300e93595c81daf_720w.webp

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

v2-7a37f99ea67468e6f0e972c1a78f0783_720w.webp

进阶用法参照container -h:

v2-2880308c48497ac19a3775b864a2c2fa_720w.webp

转载于 知乎

© 版权声明
THE END
喜欢就支持一下吧
点赞6.5W+打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容