制作UBI镜像 挂载ubi文件系统

时间:2022-11-19 10:04:06

一、制作ubi镜像

有了mkfs.ubifsubinize两个工具后,就可以制作UBIFS镜像了,具体步骤如下:

1.使用mkfs.ubifs命令将某个文件夹制作为UBIFS镜像,系统镜像可在u-boot下使用ubi write命令烧写到NAND FLASH上。

mkfs.ubifs -r/tmp/rootfs-m 2048 -e 126976-c 992 -o ubifs.img

以上命令的含义为将/tmp/rootfs文件夹制作为UBIFS文件系统镜像,输出的镜像名为ubifs.img-m参数指定了最小的I/O操作的大小,也就是NAND FLASH一个page的大小,-e参数指定了逻辑擦除快的大小,-c指定了最大的逻辑块号。

2.使用ubinize命令可将使用UBIFS文件系统镜像转换成可直接在nandLASH上烧写的格式(带有UBI文件系统镜像卷标):

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

ubinize.cfg为一些配置参数:

  1. [ubifs]
  2. mode=ubi
  3. image=ubifs.img
  4. vol_id=0
  5. vol_size=100MiB
  6. vol_type=dynamic
  7. vol_alignment=1
  8. vol_name=rootfs
  9. 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