Linux 版本 2.6.26.5,嵌入式设备、基于 NAND 的设备上的 ARM Linux 内核。我在 Busybox 救援 shell (ash) 中,命令集受到限制。如何手动挂载虚拟文件系统,将MTD闪存分区复制到/tmp?我需要备份闪存分区使用nanddump
。
# cat /proc/mtd
dev: size erasesize name
mtd0: 00004000 00004000 "NAND BootAgent"
mtd1: 000fc000 00004000 "Linux Kernel"
mtd2: 00d00000 00004000 "Root"
mtd3: 00100000 00004000 "Config"
mtd4: 00100000 00004000 "Debug"
mtd5: 00000000 00004000 "Data"
nanddump -f /tmp/mtd0.bin /dev/mtd0
我应该为此安装哪些虚拟文件系统?像这样的东西
# mount -t proc proc /proc
# mount -t sysfs sysfs /sys
# mount -t tmpfs tmpfs /tmp
# mount -t tmpfs none /dev
# mknod -m 666 /dev/zero c 1 5
# mknod -m 666 /dev/null c 1 3
# mkdir /dev/pts
# mount -t devpts none /dev/pts
或者我需要使用这样的命令
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t tmpfs -o size=20M,mode=0755 tmpfs /dev
mdev -s
cd /dev
nanddump -f /tmp/mtd0.bin /dev/mtd0
答案1
通常,还会有一个 /dev/mtdblockN 设备,每个 MTD 分区一个。这些是可以与 nanddump、dd、mount 等一起使用的块设备。
例如,您需要在某个地方创建一个挂载点目录(mkdir -p /media/mnt)。那么这取决于你的NAND分区使用的是什么文件系统。例如,我有两个 UBIFS NAND 分区,并且会使用如下命令:
/usr/bin/ubiattach /dev/ubi_ctrl -m <MTD_partition> -O <block_size>
/bin/mount -t ubifs ubi1:rootfs0 /media/mnt
如果分区没有文件系统(如内核映像),则 nanddump 可以工作。
nanddump -f /tmp/mtd0.bin /dev/mtdblock0
如果分区是数据 (NOR) 闪存,则 dd 将起作用。
dd if=/dev/mtdblock1 of=/tmp/mtd1.bin