爱折腾的朋友真不少啊, 估计大家手中都多多少少有一两个退休的Android手机, 那我们就来好好研究下Android折腾的各种路子
经过我长期的折腾, 所了解到在Android手机上部署Linux环境的方案有以下几种, 在这里详细总结和比对一下, 看看哪一款最适合你手中的设备
1. 方案列表
- Termux
- Termux + Proot
- Chroot, 比如 Linux Deploy, chroot-distro, Auto-Linux 等
- 原生 Linux, 比如 postmarketOS, Armbian, Mobian, Ubuntu touch 等
- QEMU 虚拟机, 以软件模拟任意硬件架构的方案
Android系统本身也可以折腾, 玩Magisk刷模块, 刷LSPosed等, 但本文主要聚焦于Linux环境, 暂不讨论这些
每一种方案各有优劣, 在折腾难度, 性能释放, 软件兼容, root需求等各方面均有自己的优缺, 我在这里将所了解的方案全部列出, 做一个横向对比, 方便小伙伴们根据自己的需求选择
2. 详细方案对比
左右滑动查看
| 方案 | Termux | Proot | Chroot | 原生Linux | QEMU |
|---|---|---|---|---|---|
| root/bootloader | 无需 | 无需 | 必须 | 必须 | 无需 |
| C库 | Bionic | glibc | glibc | glibc | glibc / 任意 |
| 折腾难度 | ⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 原理概述 | 轻量终端 | 用户态模拟chroot | 系统级根目录切换 | 独立Linux内核 | 硬件虚拟化 |
| 变砖风险 | 极低 | 低 | 中 | 高 | 低 |
| 性能损失 | 极低 | 约20% (I/O) | 极低 | 无 (原生) | 高 |
| 包管理器 | pkg + 部分apt | 完整发行版包管理 | 完整发行版包管理 | 完整发行版包管理 | 完整发行版包管理 |
| 系统目录结构 | 非标准目录结构$PREFIX/bin$PREFIX/var | 标准Linux目录结构 | 标准Linux目录结构 | 标准Linux目录结构 | 标准Linux目录结构 |
| 软件兼容 | termux+bionic构建包 | 标准ARM Linux包 | 标准ARM Linux包 | 标准ARM Linux包 | 标准Linux包 |
| 软件来源 | pkg 官方源 tur-repo 社区源 自编译 | ARM Linux软件源 | ARM Linux软件源 | ARM Linux软件源 | 任意软件源 |
| 服务管理 | termux-services | 无 (termux中管理) | sysv | systemd | 任意 |
| Docker | 不支持 | 不支持 | 不支持 | 支持 | 支持 (无限套娃) |
3. 方案选择
通过上面的横向对比可以发现, 不同的方案都是在 难易程度 - 性能损失 - 灵活兼容 这三者之间进行权衡取舍
具体选择什么方案取决于自身需求和偏好
- 无root简单玩玩, 跑跑脚本和简单开发: 选择 Termux 原生环境, 极简配置 + 极低性能损失, 软件兼容性差, 但pkg和tur-repo中也有非常多常用软件了, 是最简单的方案
- 无root, 但需要/想体验完整Linux环境: 选择 Termux + Proot, 配置比较简单 + 极好的软件兼容, 通过ptrace拦截转译, 会有I/O性能损失, 计算密集型任务基本无影响, 但I/O密集型任务性能损失可能比上述提到的20%还要大, 但这是比较简单能玩起来, 且兼容性很好的方案
- 已root能折腾, 想要完整Linux环境和极低的性能损失: 选择 Chroot, 使用LinuxDeploy部署Linux, 支持开机自启动和sysv服务管理, 完整ARM Linux体验, 除了不支持Docker基本啥都能玩, 可以榨干退休Android的每一滴性能, 与底层Android共享内核, 硬件驱动完美, 是有点复杂但兼容性很好且性能释放完全的方案
- 已root非常能折腾, 追求原生Linux + Docker极致体验: 如果手上恰好有postmarketOS, Armbian, Mobian, Ubuntu touch等系统支持的型号的设备, 并且技术好, 可以试试, 折腾时要小心, 动了不该动的分区搞不好救砖都救不了, 而且驱动适配一般没有原生Android完美, 可能会有一些比如联网/蓝牙/拍照/声音/触控的小问题, 但是极致的折腾带来极致的体验, 折腾好了, 手中的Android将变成一台小巧的能随身携带的移动Linux服务器
- 不在乎性能损失, 只要最灵活的体验: Termux + QEMU虚拟机, 都上虚拟机套娃了, 什么都可以跑, Linux, Docker, 甚至Windows都没有问题, 玩到这个份上就不要在乎性能问题
4. 全都想要怎么办
如果有人问: 简单 - 低性能损耗 - 兼容性和docker 都想要怎么办?
欢迎加入垃圾佬队列, 可以考虑牺牲一点便携性, 把旧手机换成J1800/J1900/1037U这类小主机, 海鲜市场50-100, 用x86架构来玩才是真的简单轻松, 4G RAM + 64G SSD 的配置就可以, 装一个飞牛跑一点轻量容器还是很舒服的, 小主机的尺寸比手机大一些, 但背个包也是能携带的
如果想性能好一点, 可以看看J3160/J4125小主机(200-300)
想性能更好一点, 可以考虑J5105/N100小主机(400-600), 可以拿来当NAS玩, J5105和N100视频解码也没有问题
性能还想再好一点, 可以考虑R5 5500u/R5 5700u这类CPU的小主机(1000-1500), 可以当性能强劲的NAS, 可以当办公主机, 打打小游戏都没问题
性能还想更好一点呢? 抱歉, 这已经超过了垃圾佬的讨论范围, 可以去玩m3/m4的mac mini
如果还有人问: 希望简单易用-兼容性好-还要便携-还要带桌面环境-能随时办公... 您是否在寻找"笔记本电脑"?
如果还有人问: 还想要大容量存储怎么办? 小主机无法为众多的小姐姐们安家, 可以考虑直接上成品NAS + 大容量HDD, 现在的国产NAS已经发展的很好了, 有大容量存储需求可以看看, 但是现在的存储/内存价格感觉有点贵了, 有闲置存储或者不差钱适合
具体要怎么玩还是需要看个人需求, 没有十全十美的方案, 不同的设备都有最适合它的场景, 不能性能焦虑
我们最开始想做的只是让换代的旧手机继续发挥余热, 并且练一练倒腾Linux的技术, 折腾本身才好玩, 真的折腾完一点问题没有了, 又会感觉没那么有意思了, 哈哈