ubifs文件系统的制作

2023-12-15 22:48
文章标签 制作 文件系统 ubifs

本文主要是介绍ubifs文件系统的制作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、背景

  在Linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到JFFS2、YAFFS2等文件系统,它们都是基于文件系统+mtd+flash设备的架构。linux-2.6.27后,内核加入了一种新型的flash文件系统UBI(Unsorted Block Images)。JFFS2、YAFFS2等专用文件系统存在着一些技术瓶颈,如:内存消耗大,对FLASH容量、文件系统大小、内容、访问模式等的线性依赖,损益均衡能力差或过渡损益等,在此背景下内核加入了UBI文件系统的支持。

2、内核配置

a、配置mtd支持UBI接口
Device Drivers —>Memory Technology Device (MTD) support —>UBI - Unsorted block images —>Enable UBI

b、配置内核支持UBIFS文件系统
File systems —>Miscellaneous filesystems —>UBIFS file system support

3、制作UBIFS文件系统

3.1 获取相关参数
  在制作UBI镜像时,需要首先确定以下几个参数:
  MTD partition size;           //对应的FLASH分区大小
  flash physical eraseblock size;     // FLASH物理擦除块大小
  minimum flash input/output unit size;  //最小的FLASH输入输出单元大小
  for NAND flashes - sub-page size;    //对于nand flash来说,子页大小
  logical eraseblock size.        //逻辑擦除块大小
  这些参数可以通过以下三种方法获得:
  (1)如果使用的是2.6.30以后的内核,这些信息可以通过工具从内核获得,如:mtdinfo –u。
  (2)之前的内核可以通过以下方法:
    MTD partition size:从内核的分区表或cat /proc/mtd获得
    flash physical eraseblock size:从flash芯片手册中可以得到FLASH物理擦除块大小,或cat /proc/mtd
    minimum flash input/output unit size:
      1)nor flash:通常是1个字节
      2)nand falsh:一个页面
    sub-page size:通过flash手册获得
    logical eraseblock size:对于有子页的NAND FLASH来说,等于“物理擦除块大小-1页的大小”
  (3)也可以通过ubi和mtd连接时的产生的信息获取,如:
  #modprobe ubi mtd=4 //ubi作为模块加载
  或者
  #ubiattach /dev/ubi_ctrl -m 4 //通过ubiattach关联MTD
  UBI: attaching mtd4 to ubi0
  UBI: physical eraseblock size: 131072 bytes (128 KiB)
  UBI: logical eraseblock size: 129024 bytes
  UBI: smallest flash I/O unit: 2048
  UBI: sub-page size: 512
  UBI: VID header offset: 512 (aligned 512)
  UBI: data offset: 2048
  UBI: attached mtd4 to ubi0
  
3.2 使用mkfs.ubifs工具制作文件系统

page_size_in_bytes = 2048     #ubi part Image; -->UBI: smallest flash I/O unit:2048
logical_erase_block_size = 126976 #ubi part Image; -->UBI: logical eraseblock size:126976 bytes
patition_logical_blocks = 2047  #ubi part Image; -->UBI: number of good PEBs:399 "50MiB"
mkfs.ubifs -x favor_lzo -m $(page_size_in_bytes) -e $(logical_erase_block_size) -c $(patition_logical_blocks) -r /home/rootfs -o /tftpboot/ubifs.img

  -r:制定文件内容的位置
  -m:页面大小
  -e:逻辑擦除块大小
  -c:逻辑擦除块数量
  通过此命令制作的出的UBIFS文件系统镜像可在u-boot下使用ubi write命令烧写到NAND FLASH上。使用ubinize命令可将使用mkfs.ubifs命令制作的UBIFS文件系统镜像转换成可直接在FLASH上烧写的格式。通过此命令生成的ubi.img可直接使用NAND FLASH的烧写命令烧写到FLASH上。
ubinize -o ubi.img -m 2048 -p 128KiB -s 512 /home/ubinize.cfg
  -p:物理擦除块大小
  -s:最小的硬件输入输出页面大小
  其中,ubinize.cfg的内容为:
  [ubifs]
  mode=ubi
  image=ubifs.img
  vol_id=0
  vol_size=100MiB
  vol_type=dynamic
  vol_name=rootfs
  vol_flags=autoresize

4、烧写及启动

4.1 烧写
  mmcinit
  fatload mmc 0:1 81000000 ubi.img
  nand unlock
  nand ecc sw
  nand erase 680000 7980000
  nand write.i 81000000 680000 $(filesize)

4.2 启动
  setenv bootargs console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs
  setenv bootcmd nand read.i 80300000 280000 200000;bootm 80300000
  run bootcmd

这篇关于ubifs文件系统的制作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/498197

相关文章

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

OpenStack离线Train版安装系列—0制作yum源

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack镜像制作系列5—Linux镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

OpenStack镜像制作系列4—Windows Server2019镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录  CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系

OpenStack镜像制作系列2—Windows7镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系列

OpenStack镜像制作系列1—环境准备

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

CSDN:OpenStack镜像制作教程指导(全)

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录,涉及基本环境准备、常见类型操作系统的镜像制作。 让你可以从零开始安装一个操作系统,并支持个性化制作OpenStack镜像。 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows

docker学习系列(四)制作基础的base项目镜像--jdk+tomcat

前面已经完成了docker的安装以及使用,现在我们要将自己的javaweb项目与docker结合 1.1准备jdk+tomcat软件 ​​我下载了apache-tomcat-7.0.68.tar.gz和jdk-7u79-linux-x64.tar.gz,存储于Linux机器的本地目录/usr/ect/wt/下(利用xshell上传)。利用linux命令 tar -zxvf apache-tom