首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

从新打包ubi镜像

2013-03-25 
重新打包ubi镜像从网上了解到ubi image不能像其他格式的文件系统image那样作为loop设备mount起来,所以需要

重新打包ubi镜像

从网上了解到ubi image不能像其他格式的文件系统image那样作为loop设备mount起来,所以需要找其它方法。具体做法就是安装nandsim模块来模拟一个nand flash,然后将ubi image写到mtd设备上,再将mtd设备attach起来,最后就可一mount ubi设备了。

?

?2002? sudo modprobe ubi

(需要安装ubi模块,不然ubiattach会报错)

?2003? sudo modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa third_id_byte=0x00 fourth_id_byte=0x15

(安装nandsim来模拟nand设备,执行后可以看到/dev/mtd0。传入的四个id在执行“read ID”命令时返回)

?2005? cat /proc/mtd

(mtd设备信息)

?2008? sudo ubiformat -y /dev/mtd0 -s 512 -f ubi.img

(格式化mtd,并写入ubi image)

?2009? sudo ubiattach -m 0

(将/dev/mtd0 attach到ubi设备。detach则用-d 0,表示detach /dev/ubi0)

?2010? ls /dev/ubi0*

?2012? sudo mount -t ubifs /dev/ubi0_0 ubi

(将ubi设备0的第一个分区mount到ubi目录)

?

?2025? sudo mkfs.ubifs -r ubi -m 2048 -e 129024 -c 863 -o fs.img

(由ubi目录制作文件系统image。-m为最小io大小,-e为逻辑擦除块leb大小,-c为最大leb个数)

?2027? sudo ubinize -o fs.img.ubinized -m 2048 -p 128KiB -s 512 -O 512 ubi.ini

(制作待烧录的ubi image。-m为最小io大小,-p为物理擦除块peb大小,-s为用作ubi头的page大小,-O为VID头的偏移量)

?

ubi.ini内容:

[ubifs]

mode=ubi

image=fs.img

vol_id=0

vol_type=dynamic

vol_alignment=1

vol_name=rootfs

vol_flags=autoresize

?

有关ubi可以参考:

http://www.linux-mtd.infradead.org/doc/ubi.html

?

UBI头:

每一个PEB开始处存由两个64byte的的头,分为EC头和VID头。EC头存放PEB的擦除次数。VID头存放所属volume,以及映射时对应的LEB号码。EC头位于0偏移量处,VID位置取决于是否由sub-page:如果没有,则位于第二个page处;如果由,则位于第二个sub-page处。由于PEB包含两个头,所以LEB比PEB小。

?

最小io单元:

NOR flash的大小为1byte,NAND的对应page大小,比如512或者2k等等。

热点排行