制作ubi文件系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

制作ubi文件系统

目录

开发环境 (1)

Ubi文件系统简介 (1)

UBI文件系统前期准备 (2)

内核配置 (2)

开发板UBIFS工具(flash_eraseall、ubiattach、ubimkvol) (2)

主机mtd-utils工具(mkfs.ubifs、ubinize) (4)

编译问题 (4)

制作ubi文件系统镜像 (5)

生成ubifs格式的镜像文件 (5)

实际可用的ubi格式镜像 (5)

注意事项 (6)

文件系统上烧写 (6)

通过NFS挂载方式 (6)

设置启动参数 (6)

将一个分区挂载为ubifs (7)

文件系统读写速度测试 (7)

ubifs常见指令 (7)

开发环境

开发环境:vmware+ubuntu10.04

开发目录:/home/lisongqing/armLinux

源码包:busybox-1.19.2.tar.bz2、linux-3.0.4.tar.bz2

交叉编译工具:arm-linux-gcc-4.4.3-20100728.tar.gz

Ubi文件系统简介

由IBM、nokia工程师Thomas Gleixner,Artem Bityutskiy等人于2006年发起,致力于开发性能卓越、扩展性高的FLASH专用文件系统,以解决当前嵌入式环境下以FLASH作为MTD 设备使用时的技术瓶颈(JFFS2、YAFFS2等专用文件系统也存在着一些技术瓶颈,如:内存消耗大,对FLASH容量、文件系统大小、内容、访问模式等的线性依赖,损益均衡能力差或过渡损益等)。

UBI:类似于LVM的逻辑卷管理层,主要实现损益均衡,逻辑擦除块、卷管理,坏块管理等

UBIFS:基于UBI的FLASH日志文件系统

有关ubifs的详细介绍,请参考:

/doc/ubi.html

/doc/ubifs.html

UBI文件系统前期准备

内核配置

1)Device Drivers --->Memory Technology Device (MTD) support --->enable UBI - Unsorted block images

2)File systems --->Miscellaneous filesystems --->UBIFS file system support

如果不配置此处,nfs挂载时会出现如下错误:

ubiupdatevol: error!: UBI device name was not specified (use -h for help)

Kernel panic - not syncing: Attempted to kill init!

开发板UBIFS工具(flash_eraseall、ubiattach、ubimkvol)

mtd-utils工具中提供了对UBIFS的支持,所以我们需要下载和编译这些工具,下载以下几个文件。

1)下载(mtd-utils、zlib、lzo)源码

ftp:///pub/mtd-utilsl或

http://debian.mirror.inra.fr/debian/pool/main/m/mtd-utils/下载mtd-utils-1.4.6.tar.bz2

/下载zlib-1.2.5.tar.gz

/opensource/lzo/download/下载lzo-2.06.tar.gz

/projects/e2fsprogs/下载e2fsprogs-1.41.14.tar.gz

2)编译安装e2fsprogs

tar xzvf e2fsprogs-1.41.14.tar.gz

cd e2fsprogs-1.41.14

./configure --host=i686-linux --target=arm-linux CC=

/home/lisongqing/Program/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc

--prefix=/home/lisongqing/Program/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi

make

sudo make install-libs(只需要uuid 库, 所以不需要完全安装)

cd ..

结果:可以在工具链目录/home/lisongqing/Program/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi看到, uuid/uuid.h 文件已经安装在include,libuuid.a 已经安装在lib目录。

3)编译安装zlib

tar xzvf zlib-1.2.5.tar.gz

cd zlib-1.2.5

CC=/home/lisongqing/Program/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc ./configure --prefix=/home/lisongqing/Program/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi

make

sudo make install

cd ..

结果:zconf.h 和libz.a 都安装到了工具链目录include和lib。

3)编译安装lzo

tar xzvf lzo-2.06.tar.gz

cd lzo-2.06

./configure --host=i686-linux --target=arm-linux --prefix=/home/lisongqing/Program/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi

CC=/home/lisongqing/Program/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc

make

sudo make install

cd ..

结果:liblzo2.a 已经拷贝到工具链的lib目录。

4)编译mtd-utils

tar xzvf mtd-utils-1.4.6.tar.gz

cd mtd-utils-1.4.6

export CFLAGS="-static -O2 -g"

export CROSS=/home/lisongqing/Program/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-

export DESTDIR=/home/lisongqing/install

make WITHOUT_XATTR=1

ubi-utils子目录下生成我们需要的ubiattach、ubimkvol等文件(请确保是交叉编译所得),将需要的工具复制添加到目标板的根文件系统中即可。

cd /home/lisongqing/install/usr/sbin

/home/lisongqing/Program/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-strip *(去掉调试信息)

cp * /home/lisongqing/armLinux/rootfs/usr/sbin

cd ..

cp share/man/man1 /home/lisongqing/armLinux/rootfs/usr/share/man/man1

5)注意事项

busybox-1.19.2.tar.bz2已经支持ubidetach、ubiattach、ubimkvol、ubirmvol、ubirsvol、upiupdatevol、flash_eraseall。自己制作的全部拷贝过来的话,相同名称的程序会导致系统无

相关文档
最新文档