✕
开启精彩搜索
热门搜索
emby EMBY 解析 免流 源码 IPV6 阿里 阿里云 青龙 音乐 网心 网心云 webdav 阿里云盘 unraid 洗白 Rclone 刮削 云梦

OES 飞牛迁移 SATA 后 OTA 升级:小版本直接更,大版本要 U 盘辅助

适用设备:OESP / OES 系列飞牛OS ARM 设备
系统布局:eMMC 引导 + SATA 系统盘
核心思路:小版本走”注释 rootdev 切引导 + 双系统各自 OTA”;大版本动了 trim 内核文件,必须 U 盘启动辅助改 boot

一、先说结论:分两种情况

迁移到 SATA 后做 OTA,能不能”直接点更新”取决于更新包的大小:

更新类型 判断依据 是否需要 U 盘 操作复杂度
小版本更新 没有更新 trim 内核文件,只动了系统层 不需要 注释两处 rootdev 即可
大版本更新 更新了 trim 相关文件(内核/boot) 需要 小版本流程 + U 盘启动改 boot

下面分别讲。


二、小版本更新:注释 rootdev 来回切

小版本更新的特点是不动 trim 内核文件,所以 eMMC 和 SATA 两边的 boot 不会被破坏,只需要在两次 OTA 之间来回切换引导目标即可。

第 1 步:进 SATA 系统,先注释 rootdev

当前设备正常跑在 SATA 系统上。SSH 登录 SATA 系统后,编辑 eMMC 引导分区上的 fnEnv.txt:

nano /vol00/RemovableDisk/fnEnv.txt

找到这一行:

rootdev=PARTUUID=3f9b6268-02

在行首加 # 把它注释掉:

#rootdev=PARTUUID=3f9b6268-02

保存退出。这一步的作用是:让下次重启从 eMMC 启动,而不是 SATA。

第 2 步:直接在 SATA 系统里点更新

注释完 rootdev 后,不用重启,直接在 SATA 系统的网页里点 OTA 更新。

更新完成后设备会重启。由于 rootdev 已被注释,这次重启会进入 eMMC 飞牛系统。

第 3 步:进 eMMC 系统,去掉注释

SSH 登录 eMMC 系统(注意这次进的是 eMMC,不是 SATA),编辑 eMMC 上的 fnEnv.txt:

nano /boot/fnEnv.txt

把刚才加上的 # 去掉,恢复成:

rootdev=PARTUUID=3f9b6268-02

保存退出。这一步的作用是:让下次重启重新从 SATA 启动。

第 4 步:进 eMMC 系统点更新

现在还在 eMMC 系统里,直接在 eMMC 的网页里点更新,把小版本更新也应用到 eMMC 侧。

更新完成后重启,rootdev 已恢复,设备会正常启动 SATA 上的飞牛系统。

小版本流程小结

SATA 系统 SSH → 注释 /vol00/RemovableDisk/fnEnv.txt 的 rootdev
    → SATA 网页点更新 → 重启进 eMMC
    → eMMC SSH → 去掉 /boot/fnEnv.txt 的注释
    → eMMC 网页点更新 → 重启正常进 SATA

两边各升一次,版本对齐,引导文件没被大改,所以能正常来回切。


三、大版本更新:动了 trim 文件,必须 U 盘辅助

大版本更新的关键区别是:更新包会替换 trim 相关文件(内核、boot 相关)。

这种情况下,即使你按小版本的流程注释 rootdev、两边各自升级,SATA 侧的 boot 分区和内核文件仍然可能对不上。典型表现就是:

  • 升级完成后重启,网络红灯;
  • 主网口失联,接显示器发现网卡驱动没加载;
  • 系统起不来,卡在引导。

这是因为大版本换了内核,而 SATA 系统区的 /boot 里的内核文件、DTB 没有同步更新到匹配的新版本,引导时找不到对应的内核/驱动。

大版本的处理方式:U 盘启动辅助改 boot

大版本更新不能只靠注释 rootdev 来回切,需要 U 盘启动来辅助修改 boot 文件。

大致流程:

  1. 准备 U 盘:写入与目标版本一致的飞牛镜像,制作成启动盘。
  2. U 盘启动设备:从 U 盘进入系统,此时你有完整的 root 权限和工具环境。
  3. 挂载并修正 boot 文件:
    • 用 blkid 确认 eMMC boot 分区和 SATA boot 分区的设备名;
    • 检查 fnEnv.txt 里 kernelfile=、fdtfile= 指向的文件;
    • 对照 /boot 目录下实际存在的 vmlinuz-*、.dtb 文件;
    • 把 U 盘启动分区里匹配新版本的内核、DTB 等 boot 文件复制/dd 到 eMMC boot 分区(或按你最终引导目标复制到 SATA boot 分区);
    • 确保 fnEnv.txt 里的 kernelfile= 和 fdtfile= 指向的文件确实存在。
  4. 恢复 rootdev 指向 SATA,断电重启。
  5. 确认能正常进入 SATA 系统、网口正常。

为什么大版本必须 U 盘?因为大版本更新后,如果 SATA 侧已经红灯失联,你无法通过 SSH 进去改 boot——网络都不通了,只能从外部(U 盘系统)挂载分区来补文件。这就是”U 盘辅助”的本质:提供一个不依赖故障系统网络的修复环境。

大版本流程小结

小版本的四步照做(注释 rootdev → SATA 更新 → eMMC 去注释 → eMMC 更新)
    → 如果重启后红灯/网口失联
    → U 盘启动 → 挂载 eMMC/SATA boot 分区
    → 修正 kernelfile/fdtfile 指向,补齐内核与 DTB
    → 恢复 rootdev 指向 SATA → 重启

四、两种情况的判断方法

升级前怎么知道是小版本还是大版本?

  • 看更新日志:如果更新说明里提到内核版本变化、trim 相关组件更新,按大版本处理。
  • 看更新包大小:大版本通常包含内核和 boot 文件,包体明显更大。
  • 保守做法:不确定时,先按小版本流程走;如果升级后重启出现红灯或网口失联,立即按大版本方式用 U 盘修复。升级前务必先做好状态备份(PG 注册表、App 套件、用户配置、SSH 密钥),避免 App 登记丢失。

五、关键操作速查

小版本更新

# 1. SATA 系统 SSH 进去,注释 eMMC 引导分区的 rootdev
nano /vol00/RemovableDisk/fnEnv.txt
#    把 rootdev=PARTUUID=3f9b6268-02 改成 #rootdev=PARTUUID=3f9b6268-02

# 2. SATA 网页点更新 → 重启进 eMMC

# 3. eMMC 系统 SSH 进去,去掉注释
nano /boot/fnEnv.txt
#    把 #rootdev=PARTUUID=3f9b6268-02 改回 rootdev=PARTUUID=3f9b6268-02

# 4. eMMC 网页点更新 → 重启正常进 SATA

大版本更新(在小版本流程基础上追加)

# 升级后若红灯/网口失联:
# 1. U 盘写入同版本飞牛镜像,U 盘启动设备
# 2. 确认分区
blkid

# 3. 挂载 eMMC boot 分区(按实际设备名调整)
mkdir -p /mnt/emmc_boot
mount /dev/mmcblk0p1 /mnt/emmc_boot

# 4. 检查并修正 fnEnv.txt 里的 kernelfile / fdtfile
cat /mnt/emmc_boot/fnEnv.txt
ls /mnt/emmc_boot/          # 对照实际存在的 vmlinuz-* / *.dtb

# 5. 从 U 盘启动分区补齐匹配新版本的内核与 DTB
#    确保 fnEnv.txt 指向的文件真实存在

# 6. 恢复 rootdev 指向 SATA,卸载、断电重启
umount /mnt/emmc_boot

六、避坑要点

  1. 注释 rootdev 的时机要早:要在点更新之前就注释好,让重启能切到 eMMC。更新过程中再改,只影响下次引导目标,阻止不了 boot 分区被写。
  2. 小版本也要两边各升一次:SATA 升完切 eMMC 再升,保证两边版本对齐,否则后续切换会出问题。
  3. 大版本别硬闯:如果更新说明明确提到内核/trim 变化,提前准备好 U 盘启动盘,别等红灯了才找 U 盘。
  4. 升级前先备份:PG 注册表(App 登记)、App 套件、用户配置、SSH 密钥、machine-id,缺了会导致 App 列表清空或 SSH 指纹变化。
  5. 改完 fnEnv.txt 要确认文件末行有换行:某些引导对末行无换行敏感,保存后可用 tail -c1 检查。

本文整理自 OES 迁移 SATA 后的实际 OTA 操作经验。涉及分区、引导和系统更新的操作有风险,执行前请确认已理解流程并做好备份;不同设备批次和固件底包的启动参数可能不同,操作时以本机 fnEnv.txt 实际内容为准。

💬 评论区 0