Ubifs 文件系统的制作和启动

来源:互联网 发布:钢结构图纸及数据图片 编辑:程序博客网 时间:2024/05/23 16:36
Ubifs 文件系统的制作和启动
UBI 文件系统是 JFFS2 的下一代文件系统,更适合 NAND FLASH。看到一些 AM335x 的
用户在应用 UBIFS 时遇到些问题,现在做个简要介绍。
1. 在 U-boot 和 kernel 中使能对 UBIFS 的支持
1.1 U-boot 的\include\configs\am335x_evm.h 中加入如下宏的定义:
#define
#define
#define
#define
#define
#define
#define
#define
CONFIG_CMD_NAND
CONFIG_CMD_UBI
CONFIG_CMD_UBIFS
CONFIG_RBTREE
CONFIG_MTD_DEVICE
CONFIG_MTD_PARTITIONS
CONFIG_CMD_MTDPARTS
CONFIG_LZO
Kernel 中的 menuconfig:
1.2

Enabling UBI support on MTD devices.
Device Drivers --->
Memory Technology Device (MTD) support --->
Enable UBI - Unsorted block images --->

Enabling UBIFS file-system support.
File systems --->
Miscellaneous filesystems --->
UBIFS file system support
2. 下载和编译 MTD Utilites
2.1 下载 MTD Utilites :
通过 git://git.infradead.org/mtd-utils.git 下载最新的 MTD-Utils 源代码。
下载 3 个编译所需的依赖库
Zlib:http://zlib.net/
Lzo:http://www.oberhumer.com/opensource/lzo/download/
e2fsprogs:http://e2fsprogs.sourceforge.net/
在用户目录下建立/mtd,/mtd/install 目录,将以上 4 个 source code 包拷贝到/mtd
下,安装如下步骤先编译依赖包:zlib
host$
host$
host$
host$
host$
host$
tar xvf zlib-1.2.5.tar.gz
cd zlib-1.2.5/
./configure --prefix=~/mtd/install
make
make install
cd ..
lzo
host$
host$
host$
host$
host$
host$
tar xvf lzo-2.06.tar.gz
cd lzo-2.06/
./configure --build=i686-pc-linux --prefix=~/mtd/install
make
make install
cd ..
e2fsprogs
host$
host$
host$
host$
host$
host$
host$
host$
2.1
tar xvf e2fsprogs-1.42.tar.gz
cd e2fsprogs-1.42/
./configure --build=i686-pc-linux --prefix=~/mtd/install
make
make install
cd lib/uuid/
make install
cd ../../../
编译 MTD Utilites :
在编译 mtd-utils 之前,先修改 makfile 文件:
host$ vi Makefile
PREFIX = ~/mtd/install
ZLIBCPPFLAGS = -I$(PREFIX)/include
LZOCPPFLAGS = -I$(PREFIX)/include
ZLIBLDFLAGS = -L$(PREFIX)/lib
LZOLDFLAGS = -L$(PREFIX)/lib
LDFLAGS += $(ZLIBLDFLAGS) $(LZOLDFLAGS)
CFLAGS ?= -O2 -g $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)
host$ vi common.mk
#PREFIX=/usr
然后依照如下指令编译:
host$ WITHOUT_XATTR=1 make
host$ make install DESTDIR=~/mtd/install
host$ cd ..
制作 ubi 文件系统所用的工具在如下目录下:~/mtd/install/home/<username>/mtd/install/sbin/mkfs.ubifs
~/mtd/install/home/<username>/mtd/install/sbin/ubinize
3.
制作 ubifs
Ubifs 的制作需要以下两个命令
mkfs.ubifs: 制作 UBIFS image
ubinize:
根据 UBIFS image 制作 ubi.img,这个 ubi.img 是通过 u-boot 直接烧
写在 nand flash 分区上的。
AM335x Linux SDK 里面带有制作好的文件系统,是.tar.gz 的压缩文件,可以解压在
一个目录下做为 UBI 文件系统内容,如/home/usr/fs。
GPEVM 板上的 NAND 型号为 MT29F2G08,page size 为 2048B,block size 为
64x2048B=131072B,block count 为 2048。如果制作针对 GPEVM 板的 ubifs,执行
如下两条命令:
1. $ mkfs.ubifs –F -q -r /home/usr/fs -m 2048 -e 126976 -c 2047 -o
ubifs.img
参数简介:
-F:使能"white-space-fixup",如果是通过 u-boot 烧写需要使能此功能。
-r:待制作的文件系统目录
-m:NAND FLASH 的最小读写单元,一般为 page size
-e:LEB size,对于 AM335x 的 NAND driver,为 block size-2x(page size)
-c:文件系统所占用的最大 block 数,一般小于等于 block count -1
-o:输出的 ubifs.img 文件
2. $ ubinize -o ubi.img -m 2048 -p 128KiB ubinize.cfg
参数简介:
-p:block size。
-m:NAND FLASH 的最小读写单元,一般为 page size
-o:输出的 ubi.img 文件
ubinize.cfg 为 ubinize 所需要的配置文件,内容如下:
[ubifs]mode=ubi
image=ubifs.img
vol_id=0
vol_size=200MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
4.
烧写 ubifs
可通过 u-boot 命令将生成的 ubi.img(25M)烧写到 NAND FLASH 分区上,如下示
例是将 ubi.img 先存储到 SD 卡上,然后通过 u-boot 的 fatload 命令将其拷贝至内存
中。
u-boot#
u-boot#
u-boot#
u-boot#
u-boot#
5.
mw.b 0x82000000 0xFF
mmc rescan
fatload mmc 0 0x82000000 ubi.img
nand erase 0x00780000 0xF880000
nand write 0x82000000 0x00780000 0x1E00000
Linux 启动设置
在 U-boot 下设置启动信息如下:
#setenv bootargs 'console=ttyO0,115200n8 noinitrd ip=off mem=256M
rootwait=1 rw ubi.mtd=7,2048 rootfstype=ubifs root=ubi0:rootfs

init=/init'顺利启动后,会在终端显示如下相关信息:


原创粉丝点击