|
rootfsのバックアップとリストア †CAT709, CAT760, CAT760A, CAT760B において rootfsの中身をバックアップ/リストア/再構築する手順について説明します。 本事例では CAT760 として説明しますが、 CAT709, CAT760A, CAT760B でも同じ手順です。違う箇所についてはつど注意記述します。 rootfsを再構築することによって、デバイスにたまったフラグメンテーションを解決しきれいな状態にすることができます。また CAT760 の フラッシュROM パーテーションサイズを変更した場合は、この手順で jffs2 イメージを作り直しておく必要があります。 環境構築が終わった CAT760 のファイル群を吸い出したいとします。ブートローダ catboot で >> admin password: #> cp rom:rootfs cf0:rootfs.bin と実行すれば rootfs のイメージを吸い出すことができますがこれは jffs2 形式ですので直接PCで開くことはできません。またファイルサイズは rom:roofs (/dev/mtdblock2)のパーテーションサイズになります。そのため、rom:rootfs (/dev/mtdblock2) のパーテーションサイズを変更したい場合は単純に rootfs.bin をコピーするだけではうまくできません。 CAT760から全てのファイルの吸出し方法 †いろいろな方法が考えられますが一番安全なのは CAT760 が動いている状態( Linuxが起動している状態)で次のようにタイプします。 CAT760での作業 †FATフォーマットされた CFカードを CN3 に挿入しておきます。 CAT760で # cd / # ls bin dev home mnt root sweet tmp var cdrom etc lib proc sbin sys usr var.rom このうち、 cdrom mnt proc sys tmp var は マウントポイントであったり中身が空なので、それ以外のディレクトリを tar で固めます。 CAT760で # mount /dev/hda1 /mnt/ -t vfat (デバイスファイルが /dev/hda1 だと仮定) # tar cf /mnt/rootfs.tar /bin /dev /etc /home /lib /root /sbin /sweet /usr /var.rom/ # sync # umount /mnt これで CFカードの中に rootfs.tar ができました。 開発用PCでの作業 †CFに保存した rootfs.tar を 開発用PCにコピーし、適当な作業ディレクトリで展開します。 開発用PCのLinux環境 rootユーザで # mkdir target # cd target # tar xf ../rootfs.tar # mkdir cdrom mnt proc sys tmp var (中身が空のディレクトリを作る) # chmod 1777 tmp # cd .. これで 開発PCの target ディレクトリに、CAT760 のファイルが全てコピーされました。 再度 JFFS2 イメージとして構築する †開発用PCにコピーした target ディレクトリを再び JFFS2 形式で固めます。 開発PCでの作業 # mkfs.jffs2 -p -o rootfs.bin -r target/ # mkfs.jffs2 -p -o rootfs_128k.bin -e 128 -r target/ -o 出力ファイル名 -p 使っていないところを 0xFF で埋める -e イレースサイズ(キロバイト単位) デフォルトは 64kバイト -r ルートファイル群 rootfs.bin は 64K セクター用
この手順によって rootfs.bin はフラグメンテーションの無いきれいな状態になります。 またファイルサイズも必要ファイル領域分だけに小さくなります。CAT760出荷時の状況だとおよそ7Mバイトです。 関連 † |