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

飞牛 fnOS 备份与打包 img 镜像完整教程

前言

折腾 OES 刷飞牛的时候,很多人会想:当前这个版本用着很稳,怎么把 eMMC 里的系统完整备份成一个 img 文件? 以后想恢复、想换盘、想分享给别人,都有一个”母盘”。关于这两个需求:

  1. 把 eMMC 里的系统备份成 img —— 保留稳定版本,随时能恢复
  2. 把 U 盘里的固件重新打包成 img —— 得到可反复写入的”母盘”

这篇教程把两种场景全部讲清楚,包括怎么操作、怎么让文件变小、有哪些坑。


一、为什么要备份 / 打包

场景 说明
保留稳定版本 比如你觉得 1.2.0701 很好用,不想升级,备份下来随时能回去
换盘迁移 想把系统迁到 SATA 固态,先备份再写入
分享 / 复用 得到一个可反复写入的 img,方便给别人或自己重刷
防翻车 系统折腾坏了,直接写回备份

二、场景一:在飞牛系统里备份 eMMC 为 img

eMMC 是焊接在设备上的,没法直接插到电脑上操作,所以只能在飞牛系统里跑命令完成备份。

第一步:确认 eMMC 设备路径

SSH 登录飞牛,sudo -i 切到 root,然后:

fdisk -l

在 OES / OEC 这类 ARM 设备上,eMMC 通常显示为:

  • /dev/mmcblk0
  • /dev/mmcblk1

核对容量来确认哪个是你真正的系统盘,别选错。

第二步:备份到硬盘存储

假设 eMMC 是 /dev/mmcblk0,你想存到存储空间 1 的 Data 文件夹:

dd if=/dev/mmcblk0 of=/vol1/1000/Data/emmc-backup.img bs=4M status=progress

参数说明:

参数 说明
if= 源盘,替换成你确认的 eMMC 设备路径
of= 保存路径,/vol1/1000/Data/ 换成你自己的硬盘存储绝对路径
bs=4M 块大小,加快读写速度
status=progress 显示进度,避免干等

两个关键提醒

  • 镜像大小等于 eMMC 容量:即使只用了 3G,备份出来的 img 也有 eMMC 总容量那么大(比如 8G / 16G)。因为 dd 是逐扇区复制的,不会自动跳过空白区域。
  • 用 screen 防断连:建议先 apt install screen,在 screen 里跑 dd,防止 SSH 中途断连导致备份失败。

三、让备份的 img 变小(核心部分)

直接 dd 出来的镜像很大,想让体积接近原始刷机包,有几种思路,各有限制。

方法一:填零 + 稀疏备份(最接近”瘦身”效果)

原理:先用零覆盖分区里的空闲空间,再用 dd 的 conv=sparse 让系统跳过全零扇区。

# 1. 把空闲空间填零(假设根分区在 /)
dd if=/dev/zero of=/zero_file bs=32M status=progress
rm /zero_file
sync

# 2. 用稀疏模式备份
dd if=/dev/mmcblk0 of=/vol1/1000/Data/emmc-sparse.img bs=4M conv=sparse status=progress

优点:生成的 .img 在支持稀疏文件(如 btrfs)的系统上,实际占用空间接近已用数据量。

缺点:填零对 eMMC 有写入损耗,且 eMMC 本身不大,填零 + 备份都比较耗时。

方法二:备份时直接压缩(最省事,推荐)

不用填零,直接边备份边压缩:

dd if=/dev/mmcblk0 bs=4M status=progress | gzip > /vol1/1000/Data/emmc-backup.img.gz

优点:空白区域会被 gzip 高度压缩,最终文件比原始镜像小很多。

缺点:得到的是 .gz 文件,不能直接当 img 用,恢复时要先解压。

适用:最稳妥的推荐方案,操作简单、风险低。

方法三:先缩小分区,再备份(最彻底但风险高)

如果分区远大于实际数据占用(比如 16G 分区只用了 3G),最根本的方式是先用 gparted 或 parted 把分区物理缩小,再 dd 备份,这样 img 天生就小。

限制:

  • 需要在 Linux 环境下操作 eMMC
  • 分区缩小后恢复回去时,系统可能需要自动扩容,否则系统会认为自己只有那么小
  • 飞牛社区有用户反馈限制大小后恢复导致启动问题

不建议新手尝试。


四、场景二:把 U 盘固件重新打包成 img

如果你手里有一个已经写好系统的 U 盘,想把它打包成 img,方便以后反复写入或分享。

工具:Win32 Disk Imager

⚠️ 不要用 balenaEtcher。它只支持写,不支持反向打包(从 U 盘读回镜像)。必须换成 Win32 Disk Imager 或 USB Image Tool。

操作步骤

  1. 插上 U 盘:把已经写好系统的 U 盘插到电脑上。

  2. 以管理员身份运行:右键 Win32 Disk Imager 图标,选择”以管理员身份运行”,否则可能报错 Error 5: Access is denied。

  3. 找到”读取”功能:软件界面右边是”设备”选择框,左边是”镜像文件”输入框。把这里当成”另存为”来用。

  4. 选择保存位置:在”镜像文件”那一栏点蓝色文件夹图标,选择一个文件夹,自己给文件起名并以 .img 结尾(比如 oes-backup.img)。

  5. 选对 U 盘:在”设备”下拉框里选中你的 U 盘。这一步最关键,千万别选错。

  6. 点击 “Read”:确认无误后点下方的 “Read” 按钮,软件就会把 U 盘内容逐字节复制成 .img 文件。

让 U 盘打包的 img 也变小

Win32 Disk Imager 自带一个选项可以帮你省掉部分空白空间:

  • 在读取之前,勾选 “Read Only Allocated Partitions”(只读取已分配分区)
  • 这样备份出来的镜像会跳过分区表之外的大片未分配空间

两个重要提醒

提醒 说明
文件会很大 生成的是扇区级完整镜像,大小和 U 盘实际容量差不多。比如 16G 的 U 盘,img 也就 16G 左右,需要预留足够硬盘空间
不要用 Etcher balenaEtcher 不支持反向打包,必须换成 Win32 Disk Imager 或 USB Image Tool

压出来的 .img,以后用 balenaEtcher 或 Win32 Disk Imager 都能直接写回去。


五、能不能”先写老镜像 → OTA 升级 → 再打包”?

原理可行,但大概率踩坑。

⚠️ 核心风险:OTA 升级不会自动更新启动分区

飞牛的 OTA 主要更新根分区(rootfs),但 ARM 设备的引导文件(zImage、uInitrd、fnEnv.txt)在独立的 boot 分区。

有用户升级后硬盘识别异常、存储空间损坏,根源就是 /boot/zImage 仍是旧内核。这种情况下打包出来的镜像是”根分区新、引导分区旧”,写回去能不能启动完全看运气。

更稳妥的做法

直接用飞牛官方或 ophub 发布页的最新 img。官方固件已经处理好引导和内核的对应关系,写盘即用,不用自己折腾打包。


六、不同场景怎么选

场景 推荐方式
备份 eMMC,能恢复就行 gzip 压缩备份(三·方法二)
备份 eMMC,想要较小且直接可用的 img 填零 + 稀疏备份(三·方法一)
备份 eMMC,追求极致小体积、愿意折腾 缩小分区 + 备份(三·方法三)
只想保留设置、用户、权限 飞牛自带 系统设置 → 备份和还原 → 系统配置(导出 .bin)
把 U 盘固件反向打包 Win32 Disk Imager + Read(四)
U 盘打包也想变小 勾选 “Read Only Allocated Partitions”
想要最新版镜像 直接用官方 img,别自己 OTA 后打包

⚠️ 飞牛自带配置备份不包含系统本身,系统盘坏了还是得重装,然后导入配置。


七、总结速查表

问题 答案
在飞牛里怎么备份 eMMC SSH + dd 命令,存到硬盘存储
怎么确认 eMMC 路径 fdisk -l,核对容量,通常是 /dev/mmcblk0
怎么防止 SSH 断连 装 screen,在 screen 里跑 dd
备份出来为什么那么大 dd 逐扇区复制,空白区域也算了
怎么让 eMMC 备份变小 ① gzip 压缩(推荐)② 填零 + 稀疏 ③ 缩小分区
从 U 盘反向打包 Win32 Disk Imager,点 Read
U 盘打包怎么变小 勾选 “Read Only Allocated Partitions”
能用 balenaEtcher 打包吗 不能,它只支持写
能 OTA 升级后再打包吗 原理可行,但容易踩内核/引导不匹配的坑,不推荐

核心一句话:

eMMC 备份用 dd,想要小就 gzip;U 盘反向打包用 Win32 Disk Imager;想要最新镜像,直接用官方的,别自己 OTA 后打包。

下次要翻的时候,看这篇就够了。

💬 评论区 0