一、背景:并夕夕买的电视盒子(背面标签UNT402A),买回来一年后才知道盒子有年费,不交费无法进入系统,一气之下我把盒子刷成Armbian系统,emmc只运行基础系统,外挂ssd跑docker日志等其他所有配置,某天断 电后盒子挂了,ssd数据也没了,刚好飞牛公测,我决定体验飞牛。刷飞牛之前,我担心emmc的寿命和8G的容量,同时也担心断 电后系统跑路,系统跑路后需线刷安卓从头开始,我怕麻烦不想把盒子挂身上,最好就是放在角落剩下的我远程操作。基于这个这个思路,我决定emmc刷Armbian,外置ssd刷飞牛,设置ssd优先启动,emmc次之。如果ssd挂了,通过emmc启动,然后ssh-emmc反向抢救/刷写ssd,然后继续ssd优先启动,实现远程操作,此过程全程在AI指导下完成。
二、准备
-
盒子线刷安卓,安卓启动后,插入已刷好Armbian的U盘,通过adb实现U盘启动,U盘启动后,按照设置ssh进入arm命令行界面,开始Armbian刷入emmc。
运行 armbian-install
Please Input ID输入 0
Please Input SoC Name输入 s905l3b
Please Input DTB Name输入 meson-gxl-s905l3b-m302a.dtb(只有这一个设备树能启动)
Please Input UBOOT_OVERLOAD Name输入 u-boot-e900v22c.bin
Please Input MAINLINE_UBOOT Name输入 e900v22c-u-boot.bin.sd.bin
Please Input BOOTLOADER_IMG Name直接回车
选择根分区文件系统输入 1
最后提示 Installation finished或Installation successful,表示安装完成。
执行 sync同步数据
执行 poweroff关闭设备,拔掉 U 盘,重新上电设备会从 eMMC 启动,armbian已经刷写完成。
-
下载镜像fnnas_amlogic_s905l3a_k6.12.41_2026.02.14.img.gz(下载地址:https://github.com/ophub/fnnas/releases),用电脑刷进外挂的ssd,成功后ssd插入开机运行armbian系统的盒子。
执行 lsblk查看ssd是否识别/刷好
执行 dd if=/dev/sda bs=512 count=1 2>/dev/null | hexdump -C,确认确认SSD引导信息,正常以 55 aa为结尾
执行 sudo nano /boot/armbianEnv.txt编辑 U-Boot 环境配置文件
文件末尾添加以下两行,确保启动顺序为usb0 mmc0:
boot_targets=usb0 mmc0
fdtfile=meson-gxl-s905l3b-m302a.dtb
保存并退出编辑器,然后更新 U-Boot 环境变量到硬件存储中
sudo fw_setenv boot_targets "usb0 mmc0"
sudo fw_setenv fdtfile "meson-gxl-s905l3b-m302a.dtb"
验证是否写入成功
fw_printenv boot_targets
fw_printenv fdtfile
验证成功的输出:
boot_targets=usb0 mmc0
fdtfile=meson-gxl-s905l3b-m302a.dtb
执行 sudo sync同步数据
执行 sudo reboot重启
-
重启后会从ssd启动,此时无法通过ssh连接,路由列表找到设备IP,IP+5666进入飞牛的初始化配置界面,无默认账户,设置完毕后进入熟悉的飞牛界面。注意:不要点在线升级,我在线升级后,系统跑路了,系统跑后emmc和ssd都没有启动,卡在了启动页面。
-
创建启动管家脚本:sudo nano /usr/local/bin/boot_manager.sh 粘贴下面内容:
#!/bin/bash
# S905L3A 双系统启动管家 - 自动选SSD/eMMC
SSD_DEV="/dev/sda"
# 检测SSD是否能引导
if [ -b "$SSD_DEV" ]; then
dd if=$SSD_DEV bs=512 count=1 2>/dev/null | grep -q "55 aa"
if [ $? -eq 0 ]; then
# SSD引导正常,切换到SSD启动
echo "SSD正常,启动飞牛NAS..."
runusb boot $SSD_DEV
exit 0
fi
fi
# SSD异常,停在eMMC兜底系统
echo "SSD异常,停在eMMC兜底系统(可远程救砖)"
systemctl enable --now ssh
exit 0
保存退出,加执行权限:sudo chmod +x /usr/local/bin/boot_manager.sh
运行 sudonano /etc/rc.local设置开机自启
在 exit 0前面加一行:/usr/local/bin/boot_manager.sh &
保存退出,加执行权限:sudo chmod +x /etc/rc.local
运行 sudoreboot重启验证
5.优化飞牛 btrfs 挂载参数,减少断 电影响,ssh进入飞牛
sudo -i
nano /etc/fstab
找到/dev/sda2那一行,把挂载参数改成这样:
/dev/sda2 / btrfs defaults,noatime,ssd,commit=30 0 0
保存退出,运行 reboot
此时,可以实现完全断 电后,重新上电emmc系统启动,然后执行 reboot会切换ssd飞牛启动,如果重启ssd无法启动,理论上需要重新刷写ssd系统,后续升级飞牛时,把镜像传入emmc,重新刷ssd。