可读可写文件系统的应用
可读可写文件系统,目前使用的是data分区是可读可写的。关于UserData分区文件系统配置以及烧录说明如下:
1 自动挂载分区说明
1 工程编译出来的文件系统为squashfs格式,该文件系统是只读的。若有需要,可挂载一个ubi文件系统的分区存放用户数据,其配置流程如下:
2 保存并重新编译文件系统:
make buildroot
3.烧录成功后,userdata分区会自动被挂载在usr/data分区,该分区是ubi格式的文件系统。可制作ubifs镜像烧录到该分区,详见3.2章。也可制作ubi镜像文件加载到该分区,详见3.3章
2 ubifs镜像文件的制作与烧录
1.可使用以下命令制作ubfis镜像
mkfs.ubifs -r ./rootfs -o rootfs.ubifs -m 2048 -e 126976 -c 560
#-r:制定文件内容的位置
#-o:输出的文件
#-m:最小输入输出大小。这里为2KiB(2048bytes),一般为页大小
#-e:逻辑可擦除块大小。这里为124KiB=(每块的页数-2)*页大小=(64-2)*2KiB=124KiB=126976bytes
#-c:最多逻辑可擦除块的数目,实际上是设置此卷的最大容量。计算公式为:容量/页大小*每块的页数
# 块大小与页大小请参考flash的数据手册
2.ubfis镜像的烧录。其工具使用步骤详见第二章。在烧录前选中要烧录的分区以及文件如图:
烧录成功后,该文件系统会自动挂载到/usr/data/目录下
3 ubi镜像文件的制作与挂载
1.可使用以下命令制作ubi镜像
ubinize -o rootfs.ubi -m 2048 -p 128KiB ubinize.cfg
#-o:输出的文件‘
#-m:页面的大小
#-p:物理可擦出块大小为128KiB=每块的页数*页大小=64*2KiB=128KiB
#-s:用于UBI头部信息的最小输入输出单元,一般与最小输入输出单元(-m参数)大小一样
ubinize.cfg是ubiniz工具制作ubi镜像需要指定的配置文件,其文件内容如下:
[ubifs]
mode=ubi
image=rootfs.ubifs # mkfs.ubi生成的源镜像
vol_id=0 #卷序号
vol_size=70MiB #卷大小
vol_type=dynamic #动态卷
vol_alignment=1
vol_name=rootfs #卷名
vol_flags=autoresize
2.将rootfs.ubi文件系统复制到"buildroot/output/target/"的任意位置下(我这里直接放到了根目录下),重新编译buildroot并重新烧录
make buildroot
烧录
烧录成功后可在板子终端看到该ubi镜像文件:
3.运行以下命令
#清除userdata分区
flash_erase /dev/mtd3 0 0
#将镜像文件写入userdata分区
ubiformat /dev/mtd3 -y -f /rootfs.ubi
#挂载分区
mount_ubifs.sh userdata /usr/data/
#我测试板子的userdata分区对应的节点为:/dev/mtd3
#"cat /proc/mtd"可以查看分区名对应的mtd设备序号
若该分区已被挂载,可先执行以下命令
#查看已被挂载的设备节点
df -h
#取消挂载
umount /dev/ubi1_0
#将userdata(mtd3)分区从ubi分离
ubidetach /dev/ubi_ctrl -m 3