制作ubi文件系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。自己制作的全部拷贝过来的话,相同名称的程序会导致系统无