利用mkfs.ubifs和ubinize两个工具制作UBI镜像

来源:互联网 发布:php时间戳转换工具 编辑:程序博客网 时间:2024/06/04 17:44
转载地址:http://blog.csdn.net/muzi_csd/article/details/20076539

在pc上制作镜像需要mkfs.ubifs工具。安装如下
在ubuntu下面编译mtd-utils的两种方法(相信也可以用于其它发行版下):
方法一:
  从git repository获取源代码,此编译为最近更新
1. get the source code of mtd-utils
     git clone git://git.infradead.org/mtd-utils.git 
 2. cd mtd-utils
 3. make
 4. sudo make install  (需要root权限来操作)

方法二:

  从ftp网站拿打好的源代码包
1. wget ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.4.5.tar.bz2
2. tar -jxvf mtd-utils-1.4.5.tar.bz2
3. cd mtd-utils-1.4.5
4.  make 
5. sudo make install (需要root权限来操作)

注意: 在编译的过程中,你或许会遇到下面的问题:(In compile process, you will meet the following problem.)
 1. sys/acl.h: No such file or directory  --> sudo apt-get install libacl1-dev
 2. compr_lzo.c:29:23: error: lzo/lzo1x.h: No such file or directory  --> sudo apt-get install liblzo2-dev
 3. uuid/uuid.h: No such file or directory --> sudo apt-get install uuid-dev

有了mkfs.ubifs和ubinize两个工具后,就可以制作UBIFS镜像了,具体步骤如下:
1. 使用mkfs.ubifs命令将某个文件夹制作为UBIFS镜像,具体命令为:

mkfs.ubifs -r  /tmp/rootfs  -m 2048 -e 126976-c 992 -o ubifs.img

以上命令的含义为将/tmp/rootfs文件夹制作为UBIFS文件系统镜像,输出的镜像名为ubifs.img,-m参数指定了最小的I/O操作的大小,也就是NAND FLASH一个page的大小,-e参数指定了逻辑擦除快的大小,-c指定了最大的逻辑块号。
通过此命令制作的出的UBIFS文件系统镜像可在u-boot下使用ubi write命令烧写到NAND FLASH上。


2. 使用ubinize命令可将使用mkfs.ubifs命令制作的UBIFS文件系统镜像转换成可直接在FLASH上烧写的格式(带有UBI文件系统镜像卷标):
ubinize -o ubi.img-m 2048 -p 128KiB-s 512 -O 2048 ubinize.cfg

ubinize.cfg为一些配置参数:
[ubifs]
mode=ubi
image=ubifs.img
vol_id=0
vol_size=100MiB
vol_type=dynamic
vol_alignment=1
vol_name=rootfs(最好和uboot创建的卷标一致:有些人用ubifs)
vol_flags=autoresize

其中制作出的ubifs.img 是用于uboot烧写的,

而ubi.img是用于直接使用NAND FLASH的烧写命令烧写到FLASH上烧写的ubiformat   /dev/mtd4 -s 512 -f ubi.img


命令参数
-r:制定文件内容的位置 
-m:页面大小 
-e:逻辑擦除块大小 
-p:物理擦除块大小 
-c:最大的逻辑擦除块数量
-s:最小的硬件输入输出页面大小,如:k9f1208为256(上下半页访问)
重要提示,要根据flash加载ubifs输出的信息来用下面的命令制作镜像,否则不能启动系统


[objc] view plain copy
  1. /////////////////////////////////////////////////注释ICETEK-OMAPL138-KB//////////////////////////////////////////////////////////////  
  2. Creating 5 MTD partitions on "davinci_nand.1":  
  3. 0x0000 0000 0000-0x0000 0004 0000 : "u-boot env"  
  4. 0x0000 0004 0000-0x0000 0008 0000 : "UBL"  
  5. 0x0000 0008 0000-0x0000 0010 0000 : "u-boot"  
  6. 0x0000 0020 0000-0x0000 0060 0000 : "kernel"  
  7. 0x0000 0060 0000-0x0000 40000 000 : "filesystem"  
  8. davinci_nand davinci_nand.1: controller rev. 2.5  
  9. UBI: attaching mtd4 to ubi0  
  10. UBI: physical eraseblock size:   131072 bytes (128 KiB)  
  11. UBI: logical eraseblock size:    126976 bytes  
  12. UBI: smallest flash I/O unit:    2048  
  13. UBI: VID header offset:          2048 (aligned 2048)  
  14. UBI: data offset:                4096  
  15. /////////////////////////////////////////////////注释/////////////////////////////////////////////////////////////  
  16. mkfs.ubifs -r rootfs -m 2048 -e 126976 -c 8138 -o ubifs.img  
  17.   
  18. ubinize -o ubi.img -m 2048 -p 128KiB -s 512 ubinize.cfg  
  19. /////////////////////////////////////////////////注释///////////////////////////////////////////////////////////////  

参考文献:

1.利用mkfs.ubifs和ubinize两个工具制作UBI镜像

2.UBI镜像制作


阅读全文
0 0
原创粉丝点击