碎碎念
在移动端部署 Linux 环境,很多人会选择极其安全的 PRoot 方案。但为了追求无损的原生性能和对底层硬件的绝对控制,这次我选择了一条更陡峭的路径——在已获取 Root 权限的 Android 手机上,通过 Tmoe 脚本以 Chroot 模式部署最新的 Ubuntu 24.04 LTS (Noble Numbat)。
以下是完整的部署全流程与避坑记录。
1. 启动安装引导
这里隆重介绍一下这个项目(项目地址:https://gitee.com/mo2/linux),真的是懒人必备,他不仅可以在Termux运行,还可以在WSL上运行,而且用终端模拟出了gui界面,真就一键安装。那么在Termux上该如何使用它呢
termux-setup-storage
# 更新软件包并安装 curl 和 tsu(Termux 的超级用户工具)
pkg update -y && pkg install curl tsu -y
# 以普通用户身份运行安装
bash -c "$(curl -fsSL https://gitee.com/mo2/linux/raw/2/2)"
没错,就这一句代码,非常简洁。
只需要打开Termux然后保持网络畅通,不出意外,你的手机应该就可以弹出gui界面了。
随后,脚本会自动拉起 Tmoe Manager,进入图形化的配置菜单。
2. 核心架构与系统选择
在 Tmoe 主菜单中,我依次做出了以下核心选择:
容器架构选择:选择
chroot/unshare/systemd容器,放弃了存在性能损耗的 PRoot。发行版选择:在众多 Linux 发行版中,选择了生态最好的
Ubuntu。版本代号:果断上了最新版的
24.04(LTS) 高贵的袋食蚁兽 Noble Numbat。



3. 运行模式降级 (Systemd vs Normal)
配置过程中遇到了一个经典的底层兼容性问题。脚本提示:
"由于普通模式的 chroot 在 umount 时可能会产生 bug... 建议您使用 systemd 模式。"
我最初尝试启用 systemd 模式,但在拉取依赖时遇到了致命错误:
Plaintext
E: Unable to locate package systemd-container
ERROR, you did not install systemd-nspawn.
SYSTEMD_NSPAWN=false
原因分析:由于 Android 定制内核通常会阉割或不支持完整的 systemd-nspawn 所需的 namespaces 特性,安装被迫回退到了最基础的 Normal (普通 Chroot) 模式。这也为后续手动管理挂载点埋下了伏笔。
4. 存储共享与网络配置
为了让 Ubuntu 容器能和 Android 宿主机顺畅交互,进行了以下挂载与网络配置:
DNS 解析:选择了 Ali
[2400:3200::1]或其他国内大厂 DNS,确保apt更新时的网络通畅。SD 卡挂载:为了数据互通,允许将宿主的
/sdcard/Download目录挂载到容器的/media/sd。HOME 目录共享:选择共享 Termux 的 HOME 目录
/data/data/com.termux/files/home,方便脚本文件的直接转移。终端个性化:配置过程中,脚本提供了丰富的终端主题(如 Neon, Monokai 等)和字体(如 Fira code)选项,我进行了按需配置。
5. 首次启动与“精装”配置
容器下载解压完成后,进入了最后的引导配置阶段。面对弹出的初始化提示,我采取了极简的“单用户”策略:
新建 sudo 用户:选择 否。(在独立开发的容器中,直接使用 root 拥有最高执行效率)。
为 root 用户配置 Zsh:选择 是。(强烈推荐,Tmoe 会自动部署包含完整补全功能的 Zsh 环境)。
清理冗余脚本:选择 是 (delete
~/zsh.sh),保持目录纯净。启动 tmoe tools:选择 否。(准备好后,随时可以通过输入
debian或tmoe手动唤起管理器)。
环境补齐: 通过
apt install python3-pip build-essential openssh-server -y补齐了数据科学开发所需的所有基础设施,并将 SSH 端口改至2022,彻底打通了 PC 端的远程连接。
总结
通过这套组合拳,我成功将一台 Android 手机变成了一台随身携带的、具备完整 Root 权限的 Ubuntu 24.04 生产力服务器。无论是跑 Python 脚本还是做轻量级数据分析,这套环境都展现出了惊人的原生性能。