手边这台纽曼纽扣 CM810 是 2015 年的千元机:骁龙 615、2GB 内存、16GB 存储、后置指纹。当年卖 1199 块,现在二手价格在几十块区间,当个备用机或者”随身 Linux 玩具”正合适。
折腾它的起因很简单:想在上面装 Termux。但真正动手才发现,难点不在 Termux 本身,而在于这台机器的系统版本太老——Termux 从 2020 年起就放弃过 Android 5/6,虽然 2022 年又加回来了,但正式发布包一直没有跟上,只能去 GitHub Actions 的构建产物里翻。下面是完整过程和踩过的坑。
一、先摸清这台机器的底细
纽曼纽扣 CM810 的配置:
| 项目 | 参数 |
|---|---|
| CPU | 高通骁龙 615(MSM8939),64 位八核 1.5GHz |
| GPU | Adreno 405 |
| 内存 / 存储 | 2GB LP-DDR3 + 16GB eMMC,支持 Micro SD 扩展(官方称最高 64GB) |
| 屏幕 | 5.5 英寸 1920×1080,LTPS,GFF 全贴合,2.6mm 边框 |
| 摄像头 | 后置 1300 万堆栈式(0.5 秒快速对焦)+ 前置 500 万 86° 广角 |
| 电池 | 3000mAh,9V/1.8A 输入转 5V/3A 快充 |
| 指纹 | 后置圆形”纽扣”,与华为 Mate 7 同款方案 |
| 网络 | 双卡双待,移动/联通双 4G,Micro SIM |
| 系统 | 阿里巴巴 YunOS 3.0(无 GMS) |
三个限制决定了后面所有的技术选型:
1. YunOS 3.0 不是 AOSP。 阿里把它包装成自研操作系统,安卓 App 通过自家的云应用运行时转码兼容执行,底层用的是 Linux 内核 + Bionic + Dalvik。它对外的安卓兼容层大致对应 Android 5.1(API 22) 这一代。这意味着装 Termux 时你面对的是”安卓 5 级别”的环境。
2. MSM8939 实际跑的是 32 位用户态。 骁龙 615 是 64 位 SoC,但当年这批机器绝大多数只提供 32 位 ARM 用户态。所以 Termux 装的是 arm(armeabi-v7a) 那一套包,不要去碰 arm64 的。
3. 2GB RAM + 16GB eMMC。 跑 Termux 本身绰绰有余,但编译这类重活要克制。
动手前先确认系统到底报的是什么版本,别凭参数表猜。手机开 USB 调试,连电脑执行:
adb shell getprop ro.build.version.release # 期望 5.1
adb shell getprop ro.build.version.sdk # 期望 22
adb shell getprop ro.product.cpu.abi # 期望 armeabi-v7a
YunOS 3.0 在”设置 - 关于手机”里显示的是自己的版本号,看不到 API 级别,用 getprop 最直接。
二、装 Termux:别下错版本
这里有个很容易踩的历史坑:
- Termux v0.83(2020-01-01) 结束对 Android 5/6 的支持,
minSdkVersion提到 24(Android 7.0) - 2022-05-24,Termux 在 PR #2740 “Enable support for android 5/6” 中重新加回支持,master 分支的
minSdkVersion改回 21 - 但 v0.118.0 及以前的正式发布包 minSdk 仍然是 24,Android 5/6 支持目前只存在于 master 分支的调试构建里,官方说明是”Until termux-app 0.119 is released”
所以从 F-Droid 或 GitHub Releases 直接下载正式版 APK,装到这台机器上只会得到”应用未安装”或者”解析包错误”。正确做法是去 Actions 构建产物里找 apt-android-5 变体:
- 打开 termux-app 的 debug_build.yml 工作流
- 展开最近一次
master分支的 push 运行记录 - 在 Artifacts 里下载名字里带
apt-android-5的那个压缩包(形如termux-app_v0.118.0+<commit>-apt-android-5-github-debug_universal) - 解压出
.apk,传到手机上安装,过程中允许”安装未知来源应用”
几个注意点:
- 下载 Actions 产物需要登录 GitHub 账号,这是唯一有点麻烦的地方
- Google Play 版的 Termux 已经停止更新,而且签名和 F-Droid / GitHub 版不同,不能覆盖安装,必须先卸载 Play 版再装
- 如果想用 F-Droid 装 Termux,注意 F-Droid 自己也要降级:Android 5.1(API 22)用 F-Droid 1.15.6,API 21 及以下用 1.12.1。但 F-Droid 仓库里的 Termux 仍是 minSdk 24 的构建,所以最后还是得手动下 APK
装好之后进 Termux,先别急着 pkg update,直接换源。
三、换源:最容易翻车的一步
新版 Termux 默认写入的是 Android 7+ 的源(termux-main / -24),在这台 Android 5.1 上执行 pkg update 只会得到 404 或者 Release file not found。
Termux 官方 Wiki 给 Android 5/6 的源是这四行:
deb https://packages.termux.dev/apt/termux-main-21 stable main
deb https://termux.dev/science-packages-21-bin science stable
deb https://termux.dev/game-packages-21-bin games stable
deb https://termux.dev/termux-root-packages-21-bin root stable
-21 对应 API 21,也就是 Android 5.0。实操命令:
apt_path=$PREFIX/etc/apt
echo "deb https://packages.termux.dev/apt/termux-main-21 stable main" > $apt_path/sources.list
echo "deb https://termux.dev/science-packages-21-bin science stable" > $apt_path/sources.list.d/science.list
echo "deb https://termux.dev/game-packages-21-bin games stable" > $apt_path/sources.list.d/game.list
echo "deb https://termux.dev/termux-root-packages-21-bin root stable" > $apt_path/sources.list.d/root.list
apt update && apt upgrade
几个实测下来的注意点:
国内镜像帮不上忙。 清华 TUNA、中科大 USTC 的 termux 镜像只有 termux-main(Android 7+ 那套),没有 -21,所以这台机器只能直连 packages.termux.dev。好在 termux-main-21 的 Release 文件里 Architectures 明确包含 arm,32 位 ARM 包是齐的。
root 源用不上。 termux-root-packages-21-bin 需要系统里有 su,而 YunOS 3.0 官方没有开放 root。好在 Termux 本身完全不需要 root,删掉 root.list 不影响任何事。
science / games 源可能拉不动。 这两个 -21 仓库的可用性一般,如果 apt update 卡住或报 404,直接把对应的 .list 删掉,只留主源即可——python、git、vim、clang 这些日常要用的包都在主源里。
四、验证与日常使用
换完源先自检一遍环境:
uname -m # armv7l,确认是 32 位 ARM
pkg --version
pkg install -y git vim curl python
然后是几个这台机器上值得单独配一下的点。
访问手机存储。 执行 termux-setup-storage 让 Termux 拿到 /sdcard 权限。如果在 YunOS 的权限模型下这个脚本没反应,手动软链:
mkdir -p ~/storage/shared
ln -s /sdcard ~/storage/shared
软键盘错位 / 遮挡。 Termux 自带的输入法在 5.5 英寸 1080p 上体验一般,地址栏输入 https:// 这类组合还容易弹提示。推荐从 F-Droid 装 Hacker’s Keyboard 替代。另一个思路是在 ~/.termux/termux.properties 里加:
volume-keys = escape
extra-keys = [['ESC','/','-','HOME','UP','DOWN','LEFT','RIGHT']]
音量键变成 ESC,顺手多出一排功能键,/、- 在敲命令时非常实用。
后台被杀。 Android 5 还没有 Doze,但厂商 ROM 的省电策略照样会杀后台。到系统设置里把 Termux 的电池优化关掉,Termux 内部再执行一次 termux-wake-lock 拿住唤醒锁。
编译要克制。 pkg install clang 能装上,但 2GB 内存跑大型编译容易 OOM。真要编译东西,优先走预编译包,或者在电脑上交叉编译再推过来。
五、踩坑清单
| 现象 | 原因 | 处理 |
|---|---|---|
| 安装 APK 提示”应用未安装” | 正式版 minSdk 24,系统只有 22 | 换 Actions 里的 apt-android-5 产物 |
| Play 版与 F-Droid 版互相覆盖失败 | 签名不同 | 先卸载 Play 版再装 |
apt update 报 404 / Release file not found | 用的是 Android 7+ 的 -24 源 | 改成 termux-main-21 |
apt update 卡住不动 | science/games 的 -21 仓库不稳定 | 删掉这两个源,只留主源 |
| 装包到一半被杀掉 | 2GB 内存 + 厂商省电策略 | 关电池优化、termux-wake-lock、单包安装 |
| 键盘输入错乱、弹提示 | YunOS 自带输入法与 Termux 不兼容 | 换 Hacker’s Keyboard,或设 volume-keys = escape |
termux-setup-storage 无反应 | YunOS 权限模型差异 | 手动 ln -s /sdcard ~/storage/shared |
六、值不值得折腾
值得的地方:便宜、待机长、有指纹(可以拿来做远程解锁/自动化触发)、支持 Micro SD 扩展、32 位 ARM 反而让 Termux 装包更轻。
要接受的事实:2GB 内存 + 16GB 存储的上限摆在这;YunOS 早已停止更新,安全补丁停留在 2015 年,装了 Termux 之后更要小心别在这上面存敏感数据;没有 GMS,装不了依赖 Google 服务的应用。
我的建议是把它当成备用机和随身 Linux 玩具,用来跑 ssh、python 脚本、跑个静态小站或者做 IoT 调试终端,而不是主力设备。