Termux—安卓上的 Linux 环境
Termux 是一个安卓上的终端模拟器,可以很方便地在手机上模拟 Linux 环境并实现绝大部分操作。
开始
由于 Google Play 上的 Termux 应用已经很久没有更新了,所以更推荐去 F-droid 下载。
Termux 第一次启动需要一定时间加载,特别是较早期的版本,启动后的样子是这样的:

为了更方便在国内使用,首先要为 Termux 更换国内的镜像源,比如清华源,如果你的 Termux 版本高于 v0.118,可以执行 termux-change-repo 或者手动更换:
sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list
apt update && apt upgrade
接着可以先安装一些必要的软件:
pkg update
pkg install vim curl wget git -y
可以为 Termux 创建常用文件软连接:
# ln -s [Source path] [Your path]
ln -s target/path my/path
可以通过
termux-setup-storage赋予 Termux 存储权限
终端设置
Termux 的初始面板不太好看,我们可以用 zsh 代替原本的 shell,毕竟颜值是第一生产力。
Tmoe 集成了一个 zsh 脚本,能很方便地安装 zsh 并设置默认 shell:
curl -LO --compressed https://raw.githubusercontent.com/2moe/tmoe/2/2.awk
awk -f 2.awk
或者从 gitee 访问:
curl -LO https://gitee.com/mo2/linux/raw/2/2.awk
awk -f 2.awk
按照提示可以选择字体、配色和主题。
-
终端字体使用自带各种图标的 NerdFont ,推荐使用 Fire Code 因为它带有许多针对编程的连字效果。
-
可以逐一尝试终端的配色方案,选择一款符合自己审美的配色方案,我个人比较喜欢的配色方案是 tango 和 google dark。
-
至于主题,我之前一直用的是 ys,直到尝试了 p10k,这个主题的自定义程度很高,很值得一试。
如果在手机上操作 Termux,自带的键盘输入一些特殊字符会比较困难,不过 Termux 的软键盘可以自定义,可以通过编辑 ~/.termux/termux.properties 文件自定义,如下是我的软键盘配置:
# key 后面的是单击键,popup 是向上滑动的键
extra-keys = [[ \
{key: ESC, popup: "`"}, \
{key: TAB, popup: "!"}, \
{key: "~", popup: "|"}, \
{key: UP, popup: "^"}, \
{key: "/", popup: BACKSLASH}, \
{key: "+", popup: "{}"}, \
{key: DEL, popup: BKSP} \
], [ \
{key: CTRL, popup: ALT}, \
{key: ":", popup: ";"}, \
{key: LEFT, popup: "<"}, \
{key: DOWN, popup: "[]"}, \
{key: RIGHT, popup: ">"}, \
{key: "-", popup: "="}, \
{key: KEYBOARD, popup: {macro: "CTRL d", display: exit}} \
]]
termux.properties内还有大量自定义设置,例如use-black-ui = true设置夜间模式等,具体可以查看官方 wiki。 修改配置文件后别忘了执行termux-reload-settings使配置生效。
每次启动 Termux,都会在顶端显示一段新手友好的提示,你也可以通过新建 ~/.termux/motd.sh 文件可以输出为你指定的内容:
vim ~/.termux/motd.sh
完成上述操作之后的终端将会变成这样:

备份与恢复
当你的环境配置准备好了,请记得及时备份:
cd /data/data/com.termux/files
tar -zcf /sdcard/termux-backup.tar.gz home usr
备份完成后你可以在手机的根目录下找到这个备份压缩包,通过下面的命令你可以恢复备份:
cd /data/data/com.termux/files
tar -zxf /sdcard/termux-backup.tar.gz --recursive-unlink --preserve-permissions
SSH Remote
Termux 作为移动端应用的一大优势就是可以随时使用 ssh 协议远程控制其他设备。
SSH 连接的方式分密码连接和公钥连接,密码连接方式不在此赘述,公钥连接需如下几步:
-
pkg in OpenSSH安装 OpenSSH; -
使用
ssh-keygen在~/.ssh目录下生成对应私钥文件id_rsa和公钥文件id_rsa.pub; -
将公钥粘贴到目标电脑的信任列表
authorized_keys中。
这样你就能通过公钥连接对方电脑了,连接形式如 ssh ip@name -p port。
上面的连接命令还能进一步简化,在 ~/.ssh 目录中新建 config 文件,并写入:
# 统一设置
Host *
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# 具体设置
Host PC
HostName 192.168.1.1
Port 8022
User root
这样就能将命令简化为 ssh PC 了.
导入私钥后可以将
$PREFIX/etc/ssh/sshd_config中的PasswordAuthentication项改为no关闭密码验证,只允许获得许可的设备连接。
配置好了 SSH 后,就能用 SFTP 协议的 get 及 put 命令在不同终端间方便地传输文件了。
Linux 容器
由于安卓沙盒的限制,Termux 只是模拟出了 Linux 的目录结构,并不能在没有 root 权限的条件下访问根路径, 如果我们打印 $HOME 就会发现路径其实是 /data/data/com.termux/files/home 而非我们所熟悉的 Home 路径,那是因为 Termux 用一个前缀值 $PREFIX 也就是 /data/data/com.termux/files/, 替代了根路径, 这样一般脚本里的 shenbang 也就无法被正常识别了, Termux 提供了一个内置命令 termux-fix-shebang 用于快速修正 shenbang.
修正前:
#!/usr/bin/env bash
修正后:
#/data/data/com.termux/files/usr/bin/env bash
尽管可以通过 termux-chroot 或 proot 等进一步模拟 root 环境,但一些需要 root 权限的应用如 docker 仍无法在 Termux 上运行,解决办法之一就是在 Termux 内部再套娃一个 Linux 容器。
官方的 Termux 文档给出的 Linux 容器部署方案是使用 proot-distro 库,但这对网络条件要求较高。另一个更为简单的方案是使用上面提到的 Tmoe 脚本。
Tmoe 提供两种部署方案,第一种 proot 方式适合没有 root 的设备,第二种 chroot 模式需要宿主的 root。

Tmoe 的操作对小白极其友好,还针对国内网络给出了 DNS 选择

接下来需要挂载目录,选择一个合适的位置用做容器访问外部资源的目录

挂载完目录后,选择一个你喜欢的 arm 64 架构发行版,之后只需要按照提示完成操作就能完成容器的安装。


proot 容器安装完成后,在宿主终端输入 debian 就能进入对应的 Linux 容器。
实际上 Tmoe 还提供了一些常用软件如 code-server 的安装。选择脚本的 Tool 类别


如有必要你也可以在里面安装图形化界面的支持,然后用在软件外使用 VNC 连接 Termux 来显示图形界面。