使用 dd 备份 ubi 文件系统?

使用 dd 备份 ubi 文件系统?

A 在闪存驱动器上有一个根文件系统(文件系统 - 包含文件夹结构和内容的映像)。闪存驱动器使用 UBI 作为底层文件系统——数据块映射到文件的方式,就像你说你正在使用 ext4 一样)。

rootfs on / type rootfs (rw)
ubi0:root on / type ubifs (rw,sync)

我知道当有一个物理驱动器作为第一个参数时如何使用 dd 进行备份(例如。而不是rootfs有一个/dev/sda),但是这里我不知道如何在当前情况下寻址驱动器(什么是的路径rootfs)。

我如何检测哪个文件footfs与哪个文件ubi0:root相对应?

答案1

如果要备份/恢复 UBIFS 分区,请使用 dd 从 UBI 挂载创建 UBI 映像,然后使用 mtd-util 中的 ubiupdatevol 程序进行恢复。

例子 -

制作图像:

dd if=/dev/ubi0_0 of=/save_loc/rfs1.ubi

卸载目标分区:

umount /.rfs2

将镜像恢复到目标分区:

ubiupdatevol /dev/ubi1_0 /save_loc/rfs1.ubi

重新挂载重新刷新的分区:

mount -t ubifs -o compr=zlib,ro ubi1:rootfs /.rfs2

编辑:为了澄清查找 ubi# 的名称,请运行 mtd-util 'ubinfo':

ubi0
Volumes count:                           1
Logical eraseblock size:                 126976 bytes, 124.0 KiB
Total amount of logical eraseblocks:     960 (121896960 bytes, 116.2 MiB)
Amount of available logical eraseblocks: 0 (0 bytes)
Maximum count of volumes                 128
Count of bad physical eraseblocks:       0
Count of reserved physical eraseblocks:  80
Current maximum erase counter value:     288
Minimum input/output unit size:          2048 bytes
Character device major/minor:            250:0
Present volumes:                         0

Volume ID:   0 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        874 LEBs (110977024 bytes, 105.8 MiB)
State:       OK
Name:        rootfs
Character device major/minor: 250:1

答案2

rootfs挂载的/是内存中的文件系统,通常仅包含挂载“真实”根文件系统所需的工具,并在完成后被清空。 rootfs 的初始内容是从初始化文件系统图像存储在内核二进制文件内部或旁边并由引导加载程序加载。

闪存上的根文件系统是ubi0:root.这是一个三层系统:

  • 在顶部,UBIFS文件系统。
  • 在中间,全民基本收入卷,在原始闪存之上提供磨损均衡。
  • 底部是原始闪存接口 (MTD)。

(请谨慎对待本答案的其余部分,我从未真正与 UBI 合作过。)

ubi0:root卷的创建方式是ubi模块的参数或者ubiattach公用事业。这不是块设备,因为 UBI 层与其之上的文件系统之间的接口比“在这个位置写入这个字节”更复杂。你可以创建只读块设备在 UBI 之上使用命令ubiblock,然后备份它 - 类似于

ubiblock --create /dev/ubi0_0
cat /dev/ubi0_0 >backup
ubiblock --remove /dev/ubi0_0

相关内容