已有 UBI文件的修改

1. UBI/UBIFS不是一个东西。。。

ubifs使用mkfs.ubifs工具直接生成的image(文件系统镜像),可以使用uboot来升级系统。

ubi是直接可以烧写再flash的文件(带有UBI文件系统镜像卷标),二者需要转化!

2. 这里修改的是已有的ubi的文件!

3. Mount过程

3.1 首先,虚拟一个nandflash

modprobe nandsim first_id_byte=0x2c second_id_byte=0xda third_id_byte=0x00 fourth_id_byte=0x15

可以使用下面命令查看:cat /proc/mtd,mtdinfo /dev/mtd0

 

3.2 将 ubi 与 /dev/mtd0 关联

modprobe ubi mtd=0

3.3 格式化前先解绑定

ubidetach /dev/ubi_ctrl -m 0

3.4 把rootfs.ubi格式化到mtd0

ubiformat /dev/mtd0 -s 2048 -f rootfs.ubi

3.5 绑定

ubiattach /dev/ubi_ctrl -m 0 -O 2048

 这样设备为ubi0

3.6 挂载设备到本地目录(已经存在的目录)

mount -t ubifs ubi0 ./targer_dir

 至此,完成了ubi文件的mount。

也可以使用umount ubifs卸载。

3.7 可以复制文件再新的目录,修改之!

cp -r ./target/* /new/directory

4. 重新生成ubi文件

4.1 生成ubifs(rootfs.ubifs

mkfs.ubifs -r ./target -m 0x800 -e 0x1F000 -c 2024 -o ./rootfs.ubifs

4.2 转换为ubi文件

ubinize -o rootfs.ubi -m 2048 -p 128KiB -s 512 -O 2048 ubinize.cfg

其中ubinize.cfg文件,是ubinize工具的配置文件,直接编辑一个即可(image=rootfs.ubifs指的是要转换的文件,命令行中是输出文件)

[ubifs]  
mode=ubi  
image=rootfs.ubifs          #这里指的是需要输入的ubifs文件
vol_id=0  
vol_size=100MiB  
vol_type=dynamic 
vol_name=rootfs
vol_flags=autoresize
博客园:http://www.cnblogs.com/linux-farmer/
原文地址:https://www.cnblogs.com/linux-farmer/p/14831677.html