仮想ファイルシステムを手動でマウントし、MTDパーティションをコピーする方法

仮想ファイルシステムを手動でマウントし、MTDパーティションをコピーする方法

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

関連情報