CAT724_ROMのバックアップについて

CAT724の内蔵ROMバックアップ手順について

CAT724の内蔵FLASH は 32Mバイトで、partition 0,1,2 の3つに分けられています。

pic1.png

Linux上のデバイスファイル名説明開始アドレスbootloader上でのエイリアス名Linuxからイメージ書換え
/dev/mtdblock0bootloader領域0 (HEX)0read-write可能
/dev/mtdblock1カーネル領域2_0000 (HEX)kernelread-write可能
/dev/mtdblock2rootfs領域30_0000 (HEX)rootfsread-only(丸ごとの書き換え不可)

Linux起動中、bootloader領域とzImage領域はアクセスしませんのでLinux起動中であっても読み書きできます。 rootfs領域はLinux起動中はマウントされていて使用中ですから、丸ごと書き換えてしまうとファイル構造を失い戻ってこれなくなります。Linuxからの書き換えはできません。書き込みはbootloaderから行ってください。もしくはmicroSDにdebianを入れてそちらで起動するならFLASH ROMの/dev/mtdblock2をマウントしていないので書き込みできます。

rootfs領域は29Mバイトあります。必ず全領域(29Mバイト)を消去してから新しいイメージを書き込んでください。古いイメージが残っていて新しいイメージファイルを書き込むと混ざってしまい動作しません。

ただし linuxでrootfs領域をバックアップした場合は、29Mバイトのrootfsイメージファイルができます。これを上書きするのであれば古いイメージは残りませんので消去作業は不要です。同様に32Mバイト全部をバックアップ、リストアするときも古いイメージは残りませんので消去作業は不要です。

バックアップ手順

Linuxを起動した状態でバックアップが行えます。
/dev/mtdblock[0-2] のイメージをファイルに保存してください。

具体的な手順例は次の通りです。

rommode ro の状態で行ってください

# sync
# rommode ro

microSDカードの第一パーティションをFATでフォーマットする(必要であれば)

# mkdosfs -F16 /dev/mmcblk0p1

microSDカードの第一パーティションを/mediaにマウントする

# mount /dev/mmcblk0p1 /media

/dev/mtdblock0 (bootloader領域)のバックアップ

# cat /dev/mtdblock0 > /media/boot.bin

/dev/mtdblock1 (カーネル領域)のバックアップ

# cat /dev/mtdblock1 > /media/zImage.bin

/dev/mtdblock2 (rootfs領域)のバックアップ

# cat /dev/mtdblock2 > /media/rootfs.bin

上記3つを一つのファイルにまとめてROMの全領域(32Mbyte)のバックアップするには

# cat /dev/mtdblock0 /dev/mtdblock1 /dev/mtdblock2 > /media/all.bin

syncしてアンマウント

# sync
# umount /media

リストア (ROMへの書き込み方法)

Linuxからの書き換え方法

Linuxを起動したのち

microSDカードの第一パーティションを/mediaにマウントする

# mount /dev/mmcblk0p1 /media

/dev/mtdblock0 (bootloader領域)の書き換え(リストア)

# cp /media/boot.bin  /dev/mtdblock0

/dev/mtdblock1 (カーネル領域)の書き換え(リストア)

# cp /media/zImage.bin /dev/mtdblock1

/dev/mtdblock2 (rootfs領域)のバックアップ(リストア)

# cp /media/rootfs.bin /dev/mtdblock2

ただしrootfsをマウントしている状態からの書き込みはできません(出来てしまいますが書き込みの結果保障しません)。他のmicroSDなどをrootfsとして起動している場合に限ります。通常rootfsはbootloaderから書き換えてください。

bootloaderから書き換える場合

bootloader を起動してください。

DIPSW1 を OFFの状態であれば電源を入れた直後にbootloaderで停止します。
DIPSW1 が ONの状態であれば電源を入れた直後にspcaeキーを連打することでbootloaderで停止します。

管理者モードになります

#> admin
password:

microSDのファイル一覧表示

#> dir

bootloaderの復元(ROMへの書き込み)

#> flashwrite boot.bin  0
   書式      ファイル名 書き込みアドレス

カーネルの復元(ROMへの書き込み)

#> flashwrite zImage.bin kernel
   書式      ファイル名 書き込みアドレス(エイリアス名)

rootfsの復元(ROMへの書き込み)
rootfs領域は古いデータを完全消去してから書き込んでください。上書き不可能

#> flasherase rootfs
   書式       消去アドレス(エイリアス名)
#> flashwrite rootfs.bin rootfs
   書式      ファイル名 書き込みアドレス(エイリアス名)

ROM全イメージの復元(ROMへの書き込み)

#> flashwrite all.bin 0

ROMイメージ全部の作り方

カレントディレクトリに boot.bin zImage jffs2.img があったとして、32MバイトのROMイメージの作り方は次の通りです

# cat /dev/zero | tr "\000" "\377" | dd ibs=1k obs=1M of=/tmp/romimage.bin count=32k
# dd if=boot.bin   of=/tmp/romimage.bin bs=1k seek=0     conv=notrunc
# dd if=zImage     of=/tmp/romimage.bin bs=1k seek=128   conv=notrunc
# dd if=jffs2.img  of=/tmp/romimage.bin bs=1k seek=3072  conv=notrunc

関連

  • CAT Wiki