続き。
UBIFSのImageを作成する方法です。
FilesystemのImage自体は、他のFilesystemと同じで、mkfsを使用します。
# mkfs.ubifs –r rootfs_dir –x none –m 2048 –e 129024\
–c 4096 –o rootfs.ubifs
これでrootfs_dirっていう名前のディレクトリの中身をrootfs.ubifsっていう名前のimageにします。
-mはminimum I/O unit sizeでFlashの書き込みサイズを入れる。
-eはlogical erase block sizeでFlashのブロックサイズ(消去)を入れる。
-cはmaximum logical erase block countでFlashのブロックの数を入れる。
ということで、↑の例は2Kずつアクセスできる512MBのNANDになります。
さて、FilesystemのImageを作った後に、このImageをUBI用に変換しなければいけないんです。
そのためにubinizeを使用します。
まずは、↓のようなconfigファイルを作って適当な名前(rootfs_ubi.cfg)で保存する。
-----------------------------------------------------------------
[rootfs-volume]
mode=ubi
image=rootfs.ubifs
vol_id=0
vol_size=128MB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
-----------------------------------------------------------------
その後、ubinizeを使ってUBI用に変換してあげる。
# ubinize –o rootfs.img –m 2048 –p 128KiB –s 512 rootfs_ubi.cfg
これで、rootfs.imgという名前のUBI用Imageが完成します。
完成したImageを書き込む為には、Target上でubiformatを使います。
# ubiformat /dev/mtd0 –f rootfs.img
これで、mtd0をUBIにしてrootfs.imgを書き込んだ状態になります。
# ubiattach /dev/ubi_ctrl –m 0
をすると、/dev/ubi0_0が既に出来てるはずです。
作ったubifsをrootfsとして起動したい場合、起動時のcommandに”ubi.mtd=0 root=ubi0:rootfs”を追加すると、mtd0をubi0としてattachして、mountしてくれます。
u-bootの場合は、環境変数bootcmdに追加すればOKです。
ざっと、こんな感じです。
きっと、未来の私が確認しにくることでしょう(`・ω・´)