続き。
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です。
ざっと、こんな感じです。
きっと、未来の私が確認しにくることでしょう(`・ω・´)
 
