从网上了解到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等等。
相关推荐
- 使用 `ubinize` 工具将ubifs文件系统打包成UBI格式。 #### 实际可用的UBI格式镜像 完成上述步骤后,可以得到一个实际可用的UBI格式镜像文件。该镜像文件可用于嵌入式系统的启动和运行。 #### 注意事项 - **内存...
`mkubimage`工具是用来创建UBI镜像的,它可以将文件系统(如ext2、ext3等)转换为适合于UBI使用的镜像文件。使用mkubimage,开发者可以指定目标设备的参数,如物理块大小、逻辑块大小等,生成适合特定硬件的UBI镜像...
2. **填充数据**:将操作系统镜像、应用软件、配置文件等数据写入各个UBI卷。这些数据可以是已经格式化的文件系统,或者可以直接是裸文件。 3. **分配spare区**:在制作过程中,需要为每个NAND Flash页面预留一部分...
这篇文章介绍的ubifs文件系统制作教程详细地讲述了如何创建ubifs文件系统镜像,并提供了脚本示例以及相关参数的使用说明。 首先,在制作ubifs之前需要安装一些必要的软件包。这些软件包包括liblzo2-dev,它为文件...
5. **制作根文件系统**:将BusyBox和必要的配置文件、库文件一起打包成根文件系统镜像,适配嵌入式设备的特殊需求。 总之,Linux文件系统的制作是一个复杂而精细的过程,涉及到对系统结构、硬件兼容性、软件包管理...
### REAL6410 Linux配置相关知识点 ...2. 使用`mkyaffs2image`工具打包成.ubi格式。 以上内容详细介绍了Real6410开发板的相关配置方法及步骤,旨在帮助开发者更好地理解和掌握这款开发板的使用技巧。