在 Android 手机上用 PRoot 运行 Ubuntu 24.04:移动端 Linux 环境搭建实践

举报
yd_216677863 发表于 2026/10/09 11:25:44 2026/10/09
【摘要】 不 root、不解锁 BL,在 Android 手机上用 PRoot 跑起完整的 Ubuntu 24.04(arm64)环境:导入 rootfs、配置 apt 与 SSH、跑自动化任务,并附完整踩坑清单。

一、背景:为什么要在手机上跑 Linux?

很多时候手边只有一部 Android 手机,却需要临时跑一些只有 Linux 才能完成的事情:写脚本、做数据清洗、编译小工具、起一个临时的 HTTP 服务。传统做法是开云主机或者随身带电脑,但在「轻量、即时」的场景下都不够顺手。

Android 底层本来就是 Linux 内核,理论上具备运行 Linux 用户态程序的条件。本文记录一次完整实践:不 root、不解锁 BL,在普通 Android 手机上跑起一个完整的 Ubuntu 24.04(arm64)环境,并配置好包管理、Python、SSH 等常用能力。

二、方案选型:PRoot 与其他路线对比

手机跑 Linux 常见有三条路线:

1. Termux:轻量,但环境基于 Android 本身,glibc 生态兼容性一般;
2. chroot:效果最原生,但需要 root;
3. PRoot:基于 ptrace 做系统调用重定向的用户态「假 chroot」,免 root 权限即可直接跑标准发行版 rootfs。

综合来看,PRoot 是免 root 场景下兼容性最好的方案:直接使用 Ubuntu 官方 arm64 rootfs,glibc 环境完整,apt 软件源可用,绝大多数 Linux 软件开箱即用。

三、环境准备

需要准备的东西不多:

- 一部 arm64 的 Android 手机(近几年机型基本都满足);
- 一个支持引导 PRoot 环境的终端类 App;
- 2 GB 以上空闲存储;
- Ubuntu Base 24.04 的 arm64 rootfs 镜像。

四、安装与初始化

核心流程分三步:导入 rootfs、启动 PRoot 环境、初始化系统。先把 rootfs 解压到工作目录:

mkdir -p ~/ubuntu && cd ~/ubuntu
# 将 ubuntu-base-24.04-base-arm64.tar.gz 解压到 rootfs/ 目录
# 随后用 proot 启动即可(-S 表示模拟 root 用户环境)

进入系统后先做基础配置,换国内镜像源可以显著加速 apt:

sed -i "s|ports.ubuntu.com|mirrors.tuna.tsinghua.edu.cn|g" /etc/apt/sources.list
apt update && apt install -y python3 python3-pip openssh-client vim curl git

接着配置 SSH,把常用机器写成别名,手机上随时可以连出去,也能反向被连接:

ssh-keygen -t ed25519
vim ~/.ssh/config
# Host myserver
#   HostName 1.2.3.4
#   User root
#   IdentityFile ~/.ssh/id_ed25519

五、实战:在手机上跑自动化任务

配置完成之后,使用体验与一台轻量 Linux 服务器几乎无异:Python 脚本、curl、git、tmux 全部可用;配合定时任务,可以让手机空闲时跑一些轻量批处理。例如起一个静态文件服务做本地预览:

cd /data/site
python3 -m http.server 8765 > /dev/null 2>&1 &
# 手机浏览器访问 http://127.0.0.1:8765 即可预览

再配合 crontab 或系统级定时能力,还能做周期性巡检、数据同步等自动化工作,相当于随身带了一个常驻的小服务器。

六、踩坑记录

1、ICMP 不通:PRoot 环境里 ping 无法工作(需要特权 socket),测试连通性请改用 curl / wget;
2、没有显示服务器:matplotlib 等图形库要切换 Agg 后端(matplotlib.use("Agg"));
3、CPU 架构限制:安装 Python 包时优先用系统源里的 aarch64 预编译包,纯 pip 从源码编译部分 C 扩展会明显更慢;
4、后台与省电策略:长时间任务建议保持前台或加入系统白名单,避免被系统冻结。

七、总结

在不 root 的前提下跑一个通用 Ubuntu 环境,PRoot 是目前性价比最高的方案:安装十分钟,体验接近原生,非常适合临时开发、学习 Linux、跑轻量脚本等场景。

当然,如果是重 CPU 的编译任务,仍然建议交给云端算力完成——例如华为云 ECS 弹性云服务器,或开发者空间里的远程开发环境。「本地轻量 + 云端重载」的组合,是移动场景下效率最高的开发姿势。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。