Linuxバージョン2.6.26.5、組み込みデバイスのARM Linuxカーネル、NANDベースのデバイス。私はBusybox回復シェル(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
通常、各 MTD パーティションに 1 つずつ /dev/mtdblockN デバイスもあります。 nandump、dd、mountなどで使用できるブロックデバイスです。
たとえば、どこか(mkdir -p /media/mnt)にマウントポイントディレクトリを作成する必要があります。 NANDパーティションが使用するファイルシステムによって異なります。たとえば、2 つの 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