把安卓机顶盒变成一台小电脑
openhardwarelab · 面向普通用户/开发者。全程约 30–60 分钟,需要一点动手能力。
把吃灰的安卓机顶盒,改造成一台「桌面 + 浏览器 + 中文输入 + 手机互传 + 接 U 盘」的小主机。
⚠️ 不同盒子的「开 ADB」「init 自启位置」不一样。本教程给通用做法,遇到差异请按你的 ROM 调整。
⚠️ 本改造不刷机、不改 system 分区(除了个别只读挂载),风险低,随时可恢复。
在盒子上开一个终端(或用后面的 adb),执行:
getprop ro.product.cpu.abi # arm64 / armeabi-v7a —— 决定能装什么
getprop ro.build.version.release # 安卓版本
getprop ro.build.version.sdk # API 级别
cat /proc/meminfo | head -3
df -k
记下:架构 / 安卓版本 / 内存 / 分区。老盒子最常见:armv7、1GB 内存、8GB eMMC、Android 4.4。
盒子开 ADB 调试:一般在「设置 → 关于/开发者选项」,或厂家的「运维调试」里。有的盒子会弹一个随机码/计算码,需要用厂商工具算一下(见你盒子的说明)。
电脑连盒子(同一个局域网,把 IP 换成你的):
adb connect 192.168.1.100:5555
adb devices # 看到设备就 OK
若盒子的 init 没有 adbd,需要手动拉起(root):
```sh
setprop service.adb.tcp.port 5555 ; /sbin/adbd &
```
串口(TTL)始终是「生命线」:实在连不上就用 USB-TTL(115200) 直连调试口。
解压本安装包,把电脑和盒子连好后,在安装文件目录执行:
./一键安装.sh 192.168.1.100 # 换成你的盒子 IP
它会自动:推文件 → 装桌面 → 系统瘦身 → 内存扩容。
不想用脚本的话,就按下面第 4–8 步手动做(内容完全一样)。
老盒子空间和内存都很紧,先把运营商商店/首页/升级/广告等禁用或卸载。
adb shell 'sh /data/瘦身.sh' # 脚本里可自己改列表
pm disable <包名>;第三方可以 pm uninstall <包名>。pm list packages。df -k 看谁占地方)。1GB 内存跑桌面/浏览器会不够,用分层交换扩容:
adb shell 'sh /data/扩容.sh'
原理:zram(压缩内存, 最快) > /cache/swapfile > /sdcard/swapfile(最大),越前面越先用。
⚠️ swap 文件要放在 ext4 分区;/proc/swaps 里记的是真实路径。
桌面/浏览器用安卓自带的也行;想要一台真正的小主机,就装一个 Ubuntu chroot:
/sdcard/linux.img。losetup + mount 挂到 /data/linux,chroot 进去。openssh-server、python3(互传/工具服务要用)、ntfs-3g(认 U 盘)。3-开机自启.sh 自动挂载并拉起服务。详细做法与踩坑见 开发者资料/系统改造手册.md 的「Linux 子系统」一节。
adb install -r 桌面.apk
# 或: adb push 桌面.apk /data/桌面.apk && adb shell 'pm install -r /data/桌面.apk'
设为开机桌面(两种任选):
pm list packages | grep launcher 看原桌面包名 → pm disable <原桌面>。桌面功能:图标网格、双击打开、可拖动、右键菜单;顶部有开始/任务/返回/关机等。
图标:浏览器 / 外接U盘 / 音乐 / 回收站 / 程序和功能 / 系统清理 / 显示设置 / 设置 / 传文件。
手机 ⇄ 盒子 传文件(不用微信、不用数据线):
http://<盒子IP>:8890/,可上传/下载/发文字/看图。5-局域网互传.py(纯标准库,零依赖)。接 U 盘:FAT32 的 U 盘直接就能认;NTFS/exFAT 需要 Linux 子系统里装 ntfs-3g 挂载(见手册)。
user.js 换桌面 UA。ime set <输入法> 启用。3-开机自启.sh 放到盒子 /data/startlinux.sh,4-开机兜底.sh 放到 /data/bootfix.sh。/system/etc/init.*.sh 或 install-recovery.sh):```sh
sh /data/startlinux.sh &
```
http://<盒子IP>:8890/ 传文件。adb install -r 桌面.apk(数据不丢)。pm enable <被你禁用的包名>;把 init 里那行 startlinux.sh 删掉即可。—— openhardwarelab
Q:装不上 / “解析包错误”
桌面.apk。Q:提示“未知来源 / 不允许安装”
Q:开机不自动进桌面
pm list packages | grep launcher 看原桌面包名 → pm disable <包名>。Q:开机卡在“正在升级/正在启动”的弹窗
4-开机兜底.sh 会自动反复关闭它并拉起桌面;确认它在 /data/bootfix.sh 且被 startlinux.sh 调用。Q:内存不够、卡、后台被杀
2-内存扩容.sh(zram + swap)。确认 cat /proc/swaps 里三层都在。Q:手机打不开 http://<盒子IP>:8890/
3-开机自启.sh 里那行 / 手动 python3 /root/transfer.py)。Q:U 盘插上认不到 / 提示已拔出
ntfs-3g 挂载(见手册)。Q:鼠标/键盘用不了
Q:装了自带浏览器打不开大网站
Q:会不会联网/上传数据?
Q:想恢复原来的样子
pm enable <被你禁用的包名>;删掉 init 里 startlinux.sh 那行;卸载桌面 pm uninstall com.openhardwarelab.desktop。Q:改了桌面包名/换设备后桌面不自动起
4-开机兜底.sh 里的 HOME_PKG 为新包名。openhardwarelab