格式化并挂载ubi文件系统过程详解

2023-11-12

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等等的笔试题、面试常问问题等等知识,无论是学习基础知识、面试刷题、交流工作经验都是不错的选择。大家一起进步,欢迎留言交流。
链接:学习神器跳转
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

格式化并挂载ubi文件系统过程详解 的相关文章

  • 无法加载 JavaHL 库。- linux/eclipse

    在尝试安装 Subversion 插件时 当 Eclipse 启动时出现此错误 Failed to load JavaHL Library These are the errors that were encountered no libs
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • GLIBCXX_3.4.26 未找到在 BeagleBone 上运行交叉编译的程序

    我有以下程序 include
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • Pyaudio 安装错误 - “命令‘gcc’失败,退出状态 1”

    我正在运行 Ubuntu 11 04 Python 2 7 1 并想安装 Pyaudio 于是我跑了 sudo easy install pyaudio 在终端中 进程退出并显示以下错误消息 Searching for pyaudio Re
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • NPTL 和 POSIX 线程有什么区别?

    NPTL 和 POSIX 线程之间的基本区别是什么 这两者是如何演变的 POSIX 线程 pthread 不是一个实现 它是几个函数的 API 规范 纸上的标准 英文 其名称以pthread 以及定义在
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是

随机推荐

  • 当神经网络的模型还不如决策树的效果好

    20210524 0 引言 有时候做实验 一般采用比较简单的分类算法来测试一下这个数据怎么样 比如决策树 随机森林 因为代表编码比较简单 直接sklearn几行代码就完事了 但是最终在测试神经网络的时候 经常性的发现 神经网络的效果还不如决
  • IP封装(IP的头格式)

    大家好呀 我是请假君 今天又来和大家一起学习数通了 今天要分享的知识是IP的封装 IP头选项不经常使用 因此普通的IP头部长度为20字节 其中一些主要字段简介如下 1 版本 Version 标明了IP协议的版本号 目前的协议版本号为4 下一
  • 关于xmind2020超级详细的安装教程

    鉴于网上很多关于xmind的安装方式 版本等等 都不规范 所以我自己写一篇关于xmind安装pojie的文章 第一步 首先我得拿到xmind的安装包以及pojie文件夹 下面附上链接 连接 https 盘 baidu com s 10DSU
  • javascript实现冒泡排序代码

    JavaScript 实现冒泡排序的代码如下 function bubbleSort arr var len arr length for var i 0 i lt len i for var j 0 j lt len 1 i j if a
  • 为什么配方法化二次型为标准型一定可以做到可逆线性变换

    定理 对任意一个 n 元二次型 f x 1 x 2
  • Java-分层设计

    Java 分层设计 表 与 domain BasicDAO 与 XxxDAO Service 与 XxxDAO APPview 与 Service 多表查询 创建domain 创建DAO 在Service中调用DAO 小问题 属性重名 分表
  • 【JAVA】关于类和对象的练习

    1 声明一个Dog类 给Dog类添加两个String类型的属性 分别是name color 一个整型变量age 定义两个方法 分别是sayHello run 在main方法中 接收两个字符串和一个整数 创建一个Dog对象 并设置name c
  • hausdorff距离

    原文 http cgm cs mcgill ca godfried teaching cg projects 98 normand main html 1 前言 在讨论距离问题时 我们通常用最短来描述 比如 点X到多边形P的距离 我们一般指
  • MySQL忘记密码肿么办?教你一招!

    1 当我们在使用mysql数据库时 如果忘记密码会显示下图情况 ERROR 1045 28000 Access denied for user root localhost using password YES 2 解决方案 一般来说我们有
  • Ubantu安装mongodb,开启远程访问和认证

    最近因为项目原因需要在阿里云服务器上部署MongoDB 操作系统为Ubuntu 网上查阅了一些资料 特此记录一下步骤 1 运行apt get install mongodb命令安装MongoDB服务 如果提示找不到该package 说明ap
  • 比C语言还快20%!Mojo首个大模型开放下载,性能达Python版250倍

    明敏 发自 凹非寺量子位 公众号 QbitAI 专为AI而来的新语言Mojo 推理LLaMA2性能比Python提升250倍 比C语言也要快上20 上周五才开放下载 Mojo这么快就自证实力了 要知道 之前官方号称Mojo可以比Python
  • C语言 如何将一个数组a赋给数组b

    采用遍历赋值的方法
  • LVDS接口液晶屏定义(lcd)

    转载于 https blog csdn net linphusen article details 6389032 LVDS接口液晶屏定义 LVDS接口又称RS 644总线接口 20PIN单6定义 1 电源2 电源3 地 4 地 5 R0
  • 丁鹿学堂:前端异步进阶之Rxjs的使用

    响应式编程 Rx 全称Reactivbe Extension 指的是实践响应式编程的一套工具 Rx其实是一个大家庭 针对不同的语言都有适配 最早是微软的c 我们前端关注的是js余元 就是RxJS RxJS 的特点 数据流抽象了很多现实问题
  • pandas 数据类型之 DataFrame

    Python 官网 https www python org 这里 才 python 前沿 可惜是英文原版 所以 我要练习英文阅读 我的CSDN主页 My Python 学习个人备忘录 我的HOT博 老齐教室 自学并不是什么神秘的东西 一个
  • 初涉Rx套餐 之RxBinding(让你的事件流程更清晰)

    转载请注明出处 王亟亟的大牛之路 最近下班回家都在WOW 周末就爆肝 感觉人都要GO DIE了 昨天下午看了看RxBinding相关的功能感觉还是蛮强大的 所提供的API也是相当丰富 基本Rx套餐都是互通的 然后就把之前的Rx例子翻出来重新
  • AE与AO的区别

    在ArcGis9 0之前 ArcObject还不是一个独立的产品 一直捆绑在Desktop产品中 只要你购买了desktop产品中的一个 你就可以使用arcboject开发 从ArcGis9 0开始 ESRI公司推出了ArcGis Engi
  • web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)

    一 什么是web自动化测试 Web自动化测试是指使用自动化工具模拟用户在Web浏览器中执行的操作 通过编写脚本来自动化执行测试用例 以验证Web应用程序的功能 性能和兼容性等方面的质量 其主要目的是降低测试成本和时间 并提高测试效率和准确性
  • 使用selenium启动谷歌Chrome浏览器

    1 首先pip安装selenium pip install selenium 2 下载chromedriver驱动 1 打开自己电脑上的谷歌浏览器 查看版本号 然后chromedriver的版本一定要与Chrome的版本一致 不然下载不对应
  • 格式化并挂载ubi文件系统过程详解

    1 UBI文件系统介绍 1 UBI文件系统是基于MTD子系统的 内核必须要先支持MTD子系统 2 UBI文件系统适用于Nand flash 是可读写的文件系统 2 内核中使能UBI 2 1 使能UBI设备驱动 Location