加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

UBIFS 文件系统的使用

发布时间:2020-12-15 18:45:57 所属栏目:百科 来源:网络整理
导读:原文地址: http://www.study-bbs.com/thread-30290-1-1.html 一、 UBIFS 简介 由IBM、nokia工程师Thomas Gleixner,Artem Bityutskiy等人于2006年发起,致力于 开发 性能卓越、扩展性高的FLASH专用文件 系统 ,以解决当前 嵌入式 环境下以FLASH作为MTD设备

原文地址: http://www.study-bbs.com/thread-30290-1-1.html

一、 UBIFS 简介
由IBM、nokia工程师Thomas Gleixner,Artem Bityutskiy等人于2006年发起,致力于开发性能卓越、扩展性高的FLASH专用文件系统,以解决当前嵌入式环境下以FLASH作为MTD设备使用时的技术瓶颈。

UBI:一种类似于LVM的逻辑卷管理层。主要实现损益均衡,逻辑擦除块、卷管理,坏块管理等。
UBIFS:基于UBI的FLASH日志文件系统。

有关ubifs的详细介绍,请参考:
http://www.linux-mtd.infradead.org/doc/ubi.html
http://www.linux-mtd.infradead.org/doc/ubifs.html

二、使用UBIFS前的准备
1. 配置linux内核
配置的时候选上

[cpp] view plain copy print ?
  1. 1)Device Drivers --->Memory Technology Device (MTD) support --->UBI - Unsorted block images --->Enable UBI
  2. 2)File systems --->Miscellaneous filesystems --->UBIFS file system support

这样我们的内核就支持UBIFS文件系统了
2. UBIFS工具
mtd-utils工具中提供了对UBIFS的支持,所以我们需要下载和 编译这些工具,下载以下几个文件
1)下载(mtd-utils、zlib、lzo)源码
[cpp] view plain copy print ?
  1. wget http://debian.mirror.inra.fr/deb ... 0080508.orig.tar.gz
  2. wget http://www.zlib.net/zlib-1.2.3.tar.gz
  3. wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz

2)编译安装zlib
[cpp] view plain copy print ?
  1. tar xzvf zlib-1.2.3.tar.gz
  2. cd zlib-1.2.3
  3. make
  4. make install
  5. cd ..

3)编译安装lzo
[cpp] view plain copy print ?
  1. tar xzvf lzo-2.03.tar.gz
  2. cd lzo-2.03
  3. make
  4. make install
  5. cd ..

4)编译mtd-utils
[cpp] view plain copy print ?
  1. tar xzvf mtd-utils_20080508.orig.tar.gz
  2. cd mtd-utils-20080508
  3. make


mkfs.ubifs子目录下生成我们需要的mkfs.ubifs工具,通过这个工具我们能打包一个文件夹,生成UBIFS系统镜像

三、如何使用UBIFS

1) 制作根文件系统,比如我们的根文件目录为rootfs
2) 生成ubi烧写映像
[cpp] view plain copy print ?
  1. mkfs.ubifs -r rootfs -m 512 -e 15872 -c 7976 -o ubifs.img

3) 通过UBOOT制作UBI分区
目前最新的UBOOT已经支持UBI分区,进入UBOOT命令行

[cpp] view plain copy print ?
  1. jacob@myubu$> mtdparts default //加载默认分区表

我的分区表配置如下:

[cpp] view plain copy print ?
  1. #define MTDPARTS_DEFAULT "mtdparts=nandflash0:320k(bootloader)," /
  2. "64k(params)," /
  3. "3m(kernel)," /
  4. "-(root)"

[c-sharp] view plain copy print ?
  1. Uboot$> flash erase root //格式化分区,root为文件系统分区
  2. Uboot$> ubi part root //root分区作为ubi文件系统
  3. Uboot$> ubi create rootfs //创建UBI volume
  4. Uboot$> ubi write 0x30008000 rootfs 0x2f8000

现在UBI分区已经创建完毕,我们可以通过tftp等手段把ubifs.img下载到RAM中, 0x30008000 为下载的地址, 0x2f8000 为 长度,文件系统烧写完成,修改uboot中的内核启动参数为:

[cpp] view plain copy print ?
  1. #define CONFIG_BOOTARGS "ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs console=ttySAC0 mem=64M init=/linuxrc"

内核的下载没有什么变化,不在叙述,OK,工作到此结束,目前ubi文件已经移植到P1310上,工作正常。由于采用了压缩方式,UBI文件系统占用的空间比yaffs要小,而且避免了nand flash中OOB数据的操作,使得移植变

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读