文章代号:androidinstallchroot
本教程部分内容来自[Root] 手機Termux建立chroot Ubuntu 22.04環境,免Linux Deploy | Ivon的部落格
前言
相信大家都知道Android是基于Linux内核的,那么可以用来跑Linux环境吗?
答案是可以的,我们所熟悉的Termux
就是利用了这点实现的。
但Termux
提供的类Ubuntu环境是十分残缺的,甚至可以说是残废的,只能运行一些简单的软件,相较于复杂的软件都无法运行,它的软件源也是缺斤少两。
于是,有人在Termux
中使用了软件包proot-distro
来勉强地运行原始Linux发行版,可是这个软件包也并不是原生地让容器中的Linux直接操纵根目录的文件,如/dev
和/proc
,并且它也是寄生于Termux
中,在用户空间内运行,效率就十分的低下,它唯一的好处可能就是可以免Root运行和输入exit
就能一键关闭容器内跑的所有软件了。
那么,有什么东西可以解决proot-distro
的缺点呢,有!就是Chroot
。在Root环境下,我们可以原生地在系统空间内运行Chroot
,而不寄生于Termux
,这就是为什么Chroot
可以提高运行效率,也不会被轻易地杀后台(因为Chroot
容器内运行的的每个软件的进程是分开的,你甚至可以在Scene
的进程管理中直接搜到这个软件,如nginx
、xmrig
)
这个教程我将教大家如何运行。
前提条件
手机需要Root
系统版本大于等于Android6.0
配置不能太烂,否则很容易黑屏死机(我的山寨平板就这样)
Linux内核版本最好大于等于3.x
有一个GitHub账号
有魔法上网能力(可选)
正式部分
安装并配置Termux
下载安装Termux
点击这里进入Termux
的官方开源地址
从Releases
中下载apk包,这里要根据你手机的架构选择apk包,如何你不清楚就下载带有universal
字样的全架构apk包
安装之后,弹窗授权框全允许,你将看到这个界面:
更换软件源
输入并回车:
1 | termux-change-repo |
然后你就会看到一个窗口,因为Termux是终端纯文本输出,所以我可以直接用把窗口放上来:
┌───────────termux-change-repo─────────────┐
│ Which repositories do you want to edit? │
│ Select with space. │
│ ┌──────────────────────────────────────┐ │
│ │ [*] Main repository termux-packages │ │
│ │ │ │
│ │ │ │
│ └──────────────────────────────────────┘ │
├──────────────────────────────────────────┤
│ < OK > <Cancel> │
└──────────────────────────────────────────┘
直接点击回车,然后你会看到下一个窗口:
┌─────────────────termux-change-repo────────────────────┐
│ Which mirror do you want to use? │
│ ┌───────────────────────────────────────────────────┐ │
│ │(*) Default repositories Default host │ │
│ │( ) Default repositories Default host with CloudFla│ │
│ │( ) GH Mirrors by KcubeteHosted on Github Release │ │
│ │( ) Mirrors by A1batross Hosted on termux.mentality│ │
│ │( ) Mirrors by Astra ISP Hosted on termux.astra.in.│ │
│ │( ) Mirrors by Bardia MosHosted on mirror.bardia.te│ │
│ │( ) Mirrors by Grimler Hosted on grimler.se │ │
│ │( ) Mirrors by Librehat Hosted on termux.librehat.│ │
│ │( ) Mirrors by Tsinghua UHosted on mirrors.tuna.tsi│ │
│ │( ) Mirrors by BFSU Hosted on mirrors.bfsu.edu│ │
│ │( ) Mirrors by NJU Hosted on mirror.nju.edu.c│ │
│ │( ) Mirrors by USTC Hosted on mirrors.ustc.edu│ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └───────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────┤
│ < OK > <Cancel> │
└───────────────────────────────────────────────────────┘
使用底部小键盘的↑
和↓
按键,将光标移到
│( ) Mirrors by BFSU Hosted on mirrors.bfsu.edu│
这个是北外源,如果你想要用清华源就移到
│( ) Mirrors by Tsinghua UHosted on mirrors.tuna.tsi│
将光标移到你想要的软件源,点击一下空格,*
就会移到你选中的软件源上:
┌─────────────────termux-change-repo────────────────────┐
│ Which mirror do you want to use? │
│ ┌───────────────────────────────────────────────────┐ │
│ │( ) Default repositories Default host │ │
│ │( ) Default repositories Default host with CloudFla│ │
│ │( ) GH Mirrors by KcubeteHosted on Github Release │ │
│ │( ) Mirrors by A1batross Hosted on termux.mentality│ │
│ │( ) Mirrors by Astra ISP Hosted on termux.astra.in.│ │
│ │( ) Mirrors by Bardia MosHosted on mirror.bardia.te│ │
│ │( ) Mirrors by Grimler Hosted on grimler.se │ │
│ │( ) Mirrors by Librehat Hosted on termux.librehat.│ │
│ │( ) Mirrors by Tsinghua UHosted on mirrors.tuna.tsi│ │
│ │(*) Mirrors by BFSU Hosted on mirrors.bfsu.edu│ │
│ │( ) Mirrors by NJU Hosted on mirror.nju.edu.c│ │
│ │( ) Mirrors by USTC Hosted on mirrors.ustc.edu│ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └───────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────┤
│ < OK > <Cancel> │
└───────────────────────────────────────────────────────┘
然后点击回车,代其跑完命令就代表成功换源。
更新全部软件包:
1 | pkg upgrade -y |
中间如果有什么要让你选的直接回车不用管
更新完之后要再换一次软件源,输入termux-change-repo
后界面变成这个样子:
┌─────────────────termux-change-repo────────────────────┐
│ Do you want to choose a mirror group or a single │
│ mirror? Select with space. │
│ ┌───────────────────────────────────────────────────┐ │
│ │(*) Mirror group Rotate between several mirrors (re│ │
│ │( ) Single mirrorChoose a single mirror to use │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └───────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────┤
│ < OK > <Cancel> │
└───────────────────────────────────────────────────────┘
选择第二项Single mirror
,还是一样用空格选中,然后回车
┌─────────────────termux-change-repo────────────────────┐
│ Which mirror do you want to use? Select with space. │
│ ┌───────────────────────────────────────────────────┐ │
│ │(*) default Cached (by cloudflare) variant of│ │
│ │( ) packages.termuTermux's origin repo, hosted in F│ │
│ │( ) mirror.bardia.Mirror by Bardia Moshiri, hosted │ │
│ │( ) mirrors.cbrx.iMirror by cyberrex0, hosted in Ja│ │
│ │( ) mirror.textcorMirror by Dev-Nergis, hosted in R│ │
│ │( ) mirror.albony.Mirror by Albonycal, hosted in In│ │
│ │( ) mirror.nevacloMirror by Nevacloud, hosted in In│ │
│ │( ) linux.domainesMirror by DomaiNesia, hosted in I│ │
│ │( ) mirror.sjtu.edMirror by SJTUG, Shanghai Jiao To│ │
│ │( ) mirrors.bfsu.eMirror by Beijing Foreign Studies│ │
│ │( ) mirrors.njupt.Mirror by Nanjing University of P│ │
│ │( ) mirror.nyist.eMirror by Nanyang Institute of Te│ │
│ │( ) mirrors.zju.edMirror by Information Technology │ │
│ │( ) mirrors.nju.edMirror by eScience Center, Nanjin│ │
│ │( ) mirrors.pku.edMirror by Peking University │ │
│ │( ) mirrors.sustecMirror by Southern University of │ │
│ │( ) mirrors.cqupt.Mirror by CQUPT - Chongqing Unive│ │
│ │( ) mirrors.hit.edMirror by Harbin Institute of Tec│ │
│ │( ) mirrors.dgut.eMirror by Dongguan University of │ │
│ │( ) mirror.iscas.aMirror by ISCAS - Institute of So│ │
│ │( ) mirrors.tuna.tMirror by Tsinghua University TUN│ │
│ │( ) mirrors.sdu.edMirror by Shandong University │ │
│ │( ) mirrors.ustc.eMirror by University of Science a│ │
│ │( ) mirrors.aliyunMirror by Alibaba Open Source Mir│ │
│ │( ) mirrors.scau.eMirror by South China Agricultura│ │
│ │( ) ftp.fau.de Mirror by FAU, Hosted in Erlange.│ │
│ └────↓(+)───────────────────────────────────53%─────┘ │
├───────────────────────────────────────────────────────┤
│ < OK > <Cancel> │
└───────────────────────────────────────────────────────┘
找到mirrors.bfsu.edu.cn
(北外源)或mirrors.tuna.tsinghua.edu.cn
(清华源),空格选中,回车
软件源就更新完了
安装必要软件
安装以下软件包,等会会用,执行:
1 | pkg install vim tsu busybox mount-utils -y |
如果你等会要安装桌面环境,还需要安装以下软件包。执行:
1 | pkg install x11-repo -y |
在安装x11-repo
时有可能报错403 Forbidden
,不用管
赋予Termux文件读写权限
1 | termux-setup-storage |
接着会弹出系统的权限授予弹窗,允许即可
开启Termux的唤醒锁
此操作可以防止系统限制后台
打开系统通知栏,找到Termux的通知(MIUI系统要长按一下Termux通知)
点击Acquire wakelock
,会弹出系统的电源设置,以MIUI为例改成无限制即可
至此Termux配置完毕。
安装并配置Termux-x11
如果你不想安装桌面环境可以跳过这步
Termux-x11
是一个跑在手机上的x11
服务器,比起XSDL XServer
它有一个优势就是支持virgl
硬件加速
下载安装Termux-x11
登录你的GitHub账号,点击这里进入Termux-x11
的开源项目,然后找到并点击上方的Actions
点击最新的一次构建并进入
在Artifacts
中下载Termux-x11
apk包,也是根据你的手机架构选择,如果不清楚就下载带有universal
的全架构apk包(如果没有Artifacts
就点击上一次构建,直到进入了有Artifacts
的构建为止)
安装后授予弹出的全部权限,就可以看到这个界面:
配置Termux-x11
点击PREFERENCES
进入设置页面
怎么设置没有特定要求,这里可以参考我的:
(如果你想要原生触控就将Touchscreen input mode
改为Direct touch
)