安装教程 —— 把安卓机顶盒变成「下载机 + NAS」

OpenHW Lab · 智能硬件开放实验室 · 面向普通用户 / 开发者。约 30–60 分钟。
用一台吃灰的安卓机顶盒 + 一块 USB 硬盘 / 外置 SD,做成一台 24 小时低功耗的
挂机下载 + 家庭网盘:浏览器加任务、手机扫码、电脑映射网盘、电视直接播放。
本项目在 B860AV1.1-T2(中兴微 ZX296715 / Android 7.1 / armv8)实测通过;
同类已 root 的安卓盒子(Android 4.4+ / armv7·arm64)大概率也可用。

0. 你需要

  • 一台已 root 的安卓机顶盒(能开 ADB;不刷机)。
  • 一块存储:USB 移动硬盘(ext4 最佳,机械盘建议独立供电)或大容量外置 SD 卡。
  • 没有的话可先用盒子内部存储做原型(只能验证功能,存不了多少东西)。
  • 电视/显示器(看盒子屏幕)+ 路由器(组局域网)。
  • 电脑一台(装 adb,用于安装)。
  • 可选:smbclient(电脑侧测试网盘)。
  • 总思路:盒子里跑一个 Linux 子系统(chroot),里面装
    aria2(下载引擎)+ Samba(网盘共享,可选 minidlna 做 DLNA);
    再放一个自写的网页管理面板 nasd(:8080):加任务 / 看进度 / 扫码;
    盒子屏幕装一个「桌面」App,开机直接进管理面板。全部开机自启。

    1. 认清你的盒子(1 分钟)

    getprop ro.product.cpu.abi          # armv7 / arm64
    getprop ro.build.version.release; getprop ro.build.version.sdk
    cat /proc/meminfo | head -2
    df -h                                # 看内部存储余量
    

    2. 打开控制通道(ADB)

    盒子开「开发者选项 → ADB 调试」→ 电脑:

    adb connect <盒子IP>:5555
    adb devices
    
    部分盒子 ADB 不通、但 SSH 可用。本项目实测盒子用 SSH 操作:
    ssh root@<盒子IP>(登录即进子系统)。

    3. 搭 Linux 子系统(chroot)

    若盒子已有 chroot 子系统(如 /data/linux,Ubuntu)→ 跳到第 4 步。

    否则用 box64/QEMU + Ubuntu base 搭一个(本项目沿用既有子系统,教程从略;见「系统改造手册」)。

    确认子系统可用:

    # 在 Android 上下文(adb shell 或 SSH 后)
    ls /data/linux          # 有 bin usr etc 等 = 子系统在
    busybox chroot /data/linux /bin/true && echo OK
    

    4. 装组件(aria2 / samba / minidlna)

    在子系统里(chroot 内)执行。⚠️ 老盒子网络常只通 HTTP/80,请用 http 镜像(如清华 tuna):

    apt-get update
    apt-get install -y --no-install-recommends aria2 samba samba-common-bin qrencode
    # 可选:电视 DLNA 播放
    apt-get install -y --no-install-recommends minidlna
    
    内存紧的盒子别贪多:只装 aria2 samba qrencode 最稳。

    AriaNg(下载网页前端,可选但好用):从有网的主机下载其 AllInOne 静态包,解压放到子系统 /root/ariang/:

    AriaNg-1.3.15-AllInOne.zip  ->  /root/ariang/index.html
    

    (本项目的 安装文件/一键安装.sh 会推送它到盒子。)


    5. 部署管理面板 + 配置

    把 安装文件/ 里的文件推进子系统的 /root/:

    # 在电脑上跑(用 adb):
    cd 安装文件
    adb push 下载服务.py /data/linux/root/nasd.py
    adb push aria2.conf  /data/linux/root/aria2.conf
    adb push smb.conf    /data/linux/root/smb.conf
    # 或用 scp(SSH):
    # scp 下载服务.py aria2.conf smb.conf root@<盒子IP>:/root/
    

    按你的存储路径改配置(编辑 aria2.conf、smb.conf 里的 dir / path):

  • 默认:/mnt/sdcard/nas(盒子内部存储);用 USB 盘时改成你的挂载点(如 /media/usb/nas)。
  • aria2.conf 里 dir=;smb.conf 里 [nas] path= 要一致。
  • 建目录并起服务(子系统里):

    mkdir -p /mnt/sdcard/nas/downloads
    touch /root/aria2.session
    aria2c --conf-path=/root/aria2.conf -D
    smbd -D -s /root/smb.conf && nmbd -D -s /root/smb.conf
    NAS_ROOT=/mnt/sdcard/nas NAS_DL=/mnt/sdcard/nas/downloads ARIANG_DIR=/root/ariang \
      nohup python3 /root/nasd.py >/root/nasd.log 2>&1 &
    

    验证:手机/电脑浏览器打开 http://<盒子IP>:8080/ → 出现管理面板即成功。


    6. 存储(用 USB 硬盘 / 外置 SD)

  • U 盘/硬盘:插上盒子后,先确认挂载点:
  • `sh

    cat /proc/mounts | grep -Ei 'ntfs|vfat|exfat|ext4|tntfs' # 找你的盘

    `

    子系统里若看不到,用 /proc/1/root/<挂载点> 访问;或直接 bind 进子系统:

    `sh

    mkdir -p /media/usb

    mount --bind /proc/1/root/mnt/sda/sda1 /media/usb

    `

    然后把 aria2.conf 的 dir 和 smb.conf 的 path 指向 /media/usb/nas。

  • NTFS 建议只读(写入不稳);ext4 最佳。

  • 7. 装「桌面」App(开机直进管理面板)

    安装文件/桌面.apk 是一个全屏网页壳:开机直接显示管理面板 http://127.0.0.1:8080/。

    adb push 桌面.apk /sdcard/nas-kiosk.apk
    adb shell pm install -r /sdcard/nas-kiosk.apk
    # 设为开机桌面(若该 App 已带 HOME 类别,重启即进)
    
    ⚠️ 若盒子原本有别的桌面 App,安装后可能有多个 HOME:请禁用/卸载旧桌面
    (pm disable <旧包名>),或让本 App 作为默认主页。

    8. 开机自启

    把 安装文件/3-开机自启.sh 的内容并入子系统的启动脚本(如 /root/startbox.sh 或 /data/startlinux.sh 里 chroot 调用的那个):

    [ -f /root/nasstart.sh ] && nohup sh /root/nasstart.sh >/tmp/nasstart.log 2>&1 &
    

    3-开机自启.sh(= nasstart.sh)会依次拉起 aria2 / smbd / nmbd / nasd(幂等,重复执行无碍)。

    4-开机兜底.sh 是盒子侧(Android)的挂载+启动脚本,按你盒子的启动链放置。

    重启一次验证:reboot 后约 1 分钟,面板/网盘应自动恢复。


    9. 使用

    | 用途 | 地址/方式 |

    |---|---|

    | 管理面板(加任务/看进度/暂停继续删除/扫码) | http://<盒子IP>:8080/ |

    | 完整下载控制台 AriaNg(可选) | http://<盒子IP>:8080/ariang/ |

    | 家庭网盘(电脑映射网络驱动器) | \\<盒子IP>\nas |

    | 手机网盘 | SMB:smb://<盒子IP>/nas(用支持 SMB 的文件管理器) |

    | 电视播放(DLNA) | 装 minidlna 后,电视/盒子用 DLNA 找到盒子 |

    | 盒子屏幕 | 就是管理面板(开机即显示,带二维码) |

    加任务:面板里粘磁力 / 种子URL / 直链 → 下载。⚠️ 老盒子网络常只通 HTTP,别用 https 链接。


    10. 恢复 / 卸载

    本项目不刷机、不改固件,全部在应用层 + /data,可逆:

  • 停服务:pkill -f nasd.py; pkill aria2c; pkill smbd; pkill nmbd
  • 卸载桌面 App:pm uninstall <桌面包名>
  • 还原启动脚本(去掉第 8 步加的那行)
  • 删子系统里的 /root/{nasd.py,aria2.conf,smb.conf,ariang} 与存储目录即可。

  • 有问题先看 常见问题.md。更多细节见 开发者资料/(系统改造手册 / 关键坑与经验 / 源码)。
    本项目开源(MIT)——OpenHW Lab · openhwlab.com