Skip to main content

UserData分区挂载

Linux工程编译出来的文件系统为 squashfs 格式,该文件系统是只读的。若有需要,可挂载一个可读可写的分区(以下统一称:userdata分区)存放用户数据。这里提供几种不同的挂载方法。

NOTE:

用户想要挂载 userdata 分区,需要用到烧录工具预留出 userdata 分区所需要的空间(一般为除了 uboot、kernel、rootfs 之外剩下的空间)。

  • 使用 nand 存储类型的开发板,本工程默认挂载的是ubi文件系统

  • 使用 nor 存储类型的开发板,本工程默认挂载的是 jffs2 文件系统

  • 使用 mmc 存储类型的开发板,本工程默认挂载的是 ext4 文件系统(与其他两种类型大同小异,这里不作详细阐述)

一. 自动挂载 userdata 分区操作流程

1. 使用 IConfigTool 配置自动挂载 userdata 分区选项

1.1 nand存储器类型的开发板配置流程:

34

35

36

37

1.2 nor 存储器类型的开发板配置流程:

与nand大致相同,区别在于 rootfs 相关配置 中须选择 jffs2文件系统相关配置 选项

38

2. 重新编译文件系统 make buildroot ,并烧录,烧录时需要预留出 userdata 分区

2.1 nand 存储器类型的开发板烧录工具配置:

39

2.2 nor 存储器类型的开发板烧录工具配置:

40

烧录成功后,userdata分区会自动被挂载在usr/data分区,此时用户可以对该分区进行正常的读写操作。也可以自己制作ubifs镜像文件

可使用以下命令制作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的数据手册

二 手动挂载 userdata 分区操作流程

本工程针对 ubifs 、 jffs2 和 ext4 三种文件系统分别提供了 mount_ubifs.sh 、 mount_jffs2.sh 和 mount_mmc_ext4.sh 三个脚本

#以下示例是在使用 nand 存储的板子上将 userdata分区挂载在/usr/data/目录
mount_ubifs.sh userdata /usr/data/
#usage: mount_ubifs.sh partition_name/dev_path mount_path
#参数1:partition_name/dev_path 可以填写分区名或mtd设备节点。(如果填写分区名需要和烧录工具的分区名一致)
#参数2:mount_path 填写挂载在文件系统的路径
#以下示例是在使用 nor 存储的板子上将userdata分区挂载在/usr/data/目录
mount_jffs2.sh userdata /usr/data/
#使用方式与 mount_ubifs.sh 相同

#以下示例是在使用 mmc 存储的板子上将userdata分区挂载在/usr/data/目录
mount_mmc_ext4.sh userdata /usr/data/
#使用方式与 mount_ubifs.sh 相同

若该分区已被挂载,可先执行以下命令

#查看已被挂载的设备节点
df -h
#取消挂载
umount /usr/data

#如果之前挂载的是ubifs,还需要将userdata(mtd3)分区从ubi分离
ubidetach /dev/ubi_ctrl -m 3