一、制作ubi镜像
有了mkfs.ubifs和ubinize两个工具后,就可以制作UBIFS镜像了,具体步骤如下:
1.使用mkfs.ubifs命令将某个文件夹制作为UBIFS镜像,系统镜像可在u-boot下使用ubi
mkfs.ubifs -r/tmp/rootfs-m 2048 -e 126976-c 992 -o ubifs.img
以上命令的含义为将/tmp/rootfs文件夹制作为UBIFS文件系统镜像,输出的镜像名为ubifs.img,-m参数指定了最小的I/O操作的大小,也就是NAND
2.使用ubinize命令可将使用UBIFS文件系统镜像转换成可直接在nandLASH上烧写的格式(带有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
- vol_flags=autoresize
二、挂载ubi文件系统
0.Linux 系统中有关mtd和ubi的接口:
(1) cat /proc/mtd:可以看到当前系统的各个mtd情况,
(2) cat /proc/partitions: 分区信息,有上面的类似
(3) cat /sys/class/ubi/ubi0/*:当前系系统的ubi情况
(4) ls /dev/*, 查看设备节点
1.假设挂载磁盘是/dev/mtd10,300MiB,ubi节点是ubi1,(已有文件系统ubi0挂载在/dev/mtd9)
1.格式化: ./ubiformat /dev/mtd10
2.创建ubi0节点: ubiattach /dev/ubi_ctrl -m 10
3.创建分区标识: ubimkvol /dev/ubi0 -N rfs -s 280MiB(不能是300MiB,需要留些磁盘空间)
4.挂载: mount -t ubifs ubi0:rfs /mnt
5.测试:
bzdtech:~# df -h
Filesystem Size Used Available Use% Mounted on
ubi0:rootfs 167.9M 108.8M 59.1M 65% /
devtmpfs 248.9M 0 248.9M 0% /dev
tmpfs 248.9M 0 248.9M 0% /tmp
mdev 248.9M 0 248.9M 0% /dev
tmpfs 248.9M 0 248.9M 0% /dev/shm
ubi1:rfs 261.2M 24.0K 256.5M 0% /mnt
echo 123 > log
cat log
6.重启测试:
1. ubiattach /dev/ubi_ctrl -m 10
mount -t ubifs ubi1:rfs /mnt
2. cat /mnt/log