- 本文作为jffs2修改的后续,部分内容不再赘述
- 已有 JFFs2文件系统的修改
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