UBI 文件系统之分区挂载
阅读原文时间:2023年07月09日阅读:1

Linux 系统中有关mtd和ubi的接口:
(1) cat /proc/mtd:可以看到当前系统的各个mtd情况,
(2) cat /proc/partitions: 分区信息,有上面的类似
(3) cat /sys/class/ubi/ubi0/*:当前系系统的ubi情况
(4) ls /dev/ubi*, 查看设备节点

假设我们想在mtdblock1上加载ubifs文件系统,步骤如下:
(1)./ubiformat /dev/mtd1  -----格式化mtdblock1
(2)./ubiattach /dev/ubi_ctrl -m 1  -d 2 -----将mtdblock1与ubi2建立连接,命令输出如下:
[  977.342492] UBI: attaching mtd1 to ubi2
[  977.346417] UBI: physical eraseblock size:   131072 bytes (128 KiB)
[  977.352631] UBI: logical eraseblock size:    126976 bytes
[  977.357948] UBI: smallest flash I/O unit:    2048
UBI device number 2, total 2000 LEBs (253952000 bytes, 242.2 MiB), available 1976 LEBs (250904576 bytes, 239.3 MiB), LEB size 126976 bytes (124.0 KiB)

3) ls /sys/class/ubi/  -----可以看到该目录下增加了一个ubi2的子目录
(4) cat /sys/class/ubi/ubi2/dev  -----可以得到该ubi2设备的主次设备号,如249:0
(5) cat /sys/class/ubi/ubi2/volumes_count  -----结果为0,表示该ubi上没有任何volume
(6) ls /dev/ubi*  -----如果/dev中没有ubi2, 则手工创建“mknod /dev/ubi2 c 249 0”
(7) ./ubimkvol /dev/ubi2 -s 100MiB -N my_ubi_vol  -----在ubi2上创建一个volume
(8) ls /sys/class/ubi/  -----可以看到该目录下增加一个ubi2_0的目录,代表ubi2上的第一个volume,如果哦“cat /sys/class/ubi/ubi2_0/name”, 你可以得到“my_ubi_vol”,这就是(7)中的名字。
(9) cat /sys/class/ubi/ubi2_0/dev  -----得到该volume的主次设备号,如249:1
(10) mknod /dev/ubi2_0 c 249 1   -----如果/dev中没有ubi2_0, 则需要手工创建
(11) mount -t ubifs ubi2_0 /mnt   -----将ubi2_0挂载到本地目录 /mnt上,
(12) mount     -----可以看到ubi2_0成功挂载在/mnt上。

脚本如下

#!/bin/sh

nblock=`cat /proc/mtd | grep -w userdata | awk -F ':' '{print $1}' | awk -F 'd' '{print $2}'`
ndevice=`expr $nblock + 1`
ubiattach /dev/ubi_ctrl -m ${nblock} -d ${ndevice}
mount -t ubifs -o relatime,sync,rw ubi${ndevice}_0 /usr/mnt_vfs
#

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章