格式化并挂载ubi文件系统过程详解
Posted 正在起飞的蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了格式化并挂载ubi文件系统过程详解相关的知识,希望对你有一定的参考价值。
1、UBI文件系统介绍
(1)UBI文件系统是基于MTD子系统的,内核必须要先支持MTD子系统;
(2)UBI文件系统适用于Nand flash,是可读写的文件系统;
2、内核中使能UBI
2.1、使能UBI设备驱动
Location: │
│ -> Device Drivers │
│ -> Memory Technology Device (MTD) support (MTD [=y]) │
│ -> Enable UBI - Unsorted block images
2.1.1、UBI wear-leveling threshold
UBI 系统记录每个擦除块发生擦除操作的次数。此选项表示所有擦除操作次数中,最小值和最大值之间允许的最大间隔。此值默认为4096,对于寿命比较短的 MLC器件,此值应该配置相对小一点,比如256。
2.1.2、MTD devices emulation driver (gluebi)
模拟MTD驱动,选择此选项,当创建一个卷时, UBI 将同时模拟一个 MTD设备。这个功能提供了一个接口,供其它文件系统使用UBI。
2.2、使能UBIFS文件系统
必须先使能UBI设备驱动,才能找到UBIFS文件系统选项
3、mount 一个空 UBIFS 文件系统
3.1、 查看当前的mtd分区情况
# cat /proc/mtd
dev: size erasesize name
mtd0: 01000000 00020000 "boot"
mtd1: 00400000 00020000 "kernel"
mtd2: 02000000 00020000 "rootfs"
mtd3: 03200000 00020000 "ubi"
3.2、格式化ubi分区
# ubiformat /dev/mtd3
使用ubiformt命令将mtd3分区格式化;
3.3、绑定UBI到MTD分区
# ubiattach /dev/ubi_ctrl -m 3
UBI: attaching mtd3
UBI: scanning is finished
UBI: attached mtd3 (name "ubi", size 50 MiB)
UBI: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
UBI: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
UBI: VID header offset: 2048 (aligned 2048), data offset: 4096
UBI: good PEBs: 400, bad PEBs: 0, corrupted PEBs: 0
UBI: user volume: 0, internal volumes: 1, max. volumes count: 128
UBI: max/mean erase counter:19/11, WL threshold: 4096, image sequence number: 1841457603
UBI: available PEBs: 356, total reserved PEBs: 44, PEBs reserved for bad PEB handling: 40
UBI: background thread "ubi_bgt1d" started, PID 1212
UBI device number 1, total 400 LEBs (50790400 bytes, 48.4 MiB), available 356 LEBs (45203456
bytes, 43.1 MiB), LEB size 126976 bytes (124.0 KiB)
参数” -m 3”表示使用 mtd3 分区,“ -b n”表示保留n个块用于坏块处理。只有绑定了ubi 到 mtd 分区以后,才能在 /dev/ 下找到 ubi设备“ ubin(n=0、1、2······)”;
3.4、创建 UBI 卷
# ubimkvol /dev/ubi1 -N ubifs -s SIZE
参数“ /dev/ubi1”是上一步骤创建的ubi 设备。
参数“ -N ubifs”表示创建的卷名为“ ubifs”。
参数“ -s SIZE”表示创建的分区大小
3.5、查看创建好的UBI卷
# ubinfo /dev/ubi1
Ubi1
Volumes count: 1
Logical eraseblock size: 126976 bytes, 124.0 KiB
Total amount of logical eraseblocks: 400 (50790400 bytes, 48.4 MiB)
Amount of available logical eraseblocks: 356 (47742976 bytes, 43.1 MiB)
Maximum count of volumes 128
Count of bad physical eraseblocks: 0
Count of reserved physical eraseblocks: 40
Current maximum erase counter value: 20
Minimum input/output unit size: 2048 bytes
Character device major/minor: 249:0
Present volumes: 0
3.6、挂载空UBIFS文件系统
# mount -t ubifs /dev/ubi1_0 /mnt/
UBIFS (ubi1:0): default file-system created
UBIFS (ubi1:0): background thread "ubifs_bgt1_0" started, PID 1225
UBIFS (ubi1:0): UBIFS: mounted UBI device 1, volume 0, name "ubifs"
UBIFS (ubi1:0): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048
bytes
UBIFS (ubi1:0): FS size: 43933696 bytes (41 MiB, 346 LEBs), journal size 2158592 bytes (2 MiB,
17 LEBs)
UBIFS (ubi1:0): reserved for root: 2075096 bytes (2026 KiB)
UBIFS (ubi1:0): media format: w5/r0 (latest is w5/r0), UUID
D2E4E92D-2F7D-412F-95E5-25CBECF172EB, small LPT model
推荐
给大家推荐一个学校嵌入式知识的网站,博主在大学时候学习嵌入式知识、找工作的时候都在用这个网站,网站里有C语言、Linux等等的笔试题、面试常问问题等等知识,无论是学习基础知识、面试刷题、交流工作经验都是不错的选择。大家一起进步,欢迎留言交流。
链接:学习神器跳转
以上是关于格式化并挂载ubi文件系统过程详解的主要内容,如果未能解决你的问题,请参考以下文章
内核启动时在挂载ubi文件系统时提示UBIFS error (ubi0:0 pid 1): ubifs_read_superblock: min. I/O unit mismatch