 安装教程 —— 把安卓机顶盒变成「下载机 + 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
