Ubifs 文件系统的制作和启动

来源:互联网 发布:淘宝卖家怎么做微淘 编辑:程序博客网 时间:2024/05/19 10:15

转载地址:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/59921.aspx

         UBI 文件系统是 JFFS2 的下一代文件系统,更适合 NAND FLASH。看到一些 AM335x 的
用户在应用UBIFS 时遇到些问题,现在做个简要介绍。
1.  在 U-boot 和 kernel 中使能对 UBIFS 的支持
1.1  U-boot 的\include\configs\am335x_evm.h 中加入如下宏的定义:
  #define CONFIG_CMD_NAND
  #define CONFIG_CMD_UBI
  #define CONFIG_CMD_UBIFS
  #define CONFIG_RBTREE
  #define CONFIG_MTD_DEVICE
  #define CONFIG_MTD_PARTITIONS
  #define CONFIG_CMD_MTDPARTS
  #define CONFIG_LZO
 
1.2  Kernel 中的 menuconfig:
  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$ tar xvf zlib-1.2.5.tar.gz
      host$ cd zlib-1.2.5/
      host$ ./configure --prefix=~/mtd/install
      host$ make
      host$ make install
      host$ cd ..
 
      lzo
 
      host$ tar xvf lzo-2.06.tar.gz
      host$ cd lzo-2.06/
      host$ ./configure --build=i686-pc-linux --prefix=~/mtd/install
      host$ make
      host$ make install
      host$ cd ..
 
e2fsprogs
      host$ tar xvf e2fsprogs-1.42.tar.gz
      host$ cd e2fsprogs-1.42/
      host$ ./configure --build=i686-pc-linux --prefix=~/mtd/install  
      host$ make
      host$ make install
      host$ cd lib/uuid/
      host$ make install
      host$ cd ../../../
 
2.1  编译 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# mw.b 0x82000000 0xFF                                                    
  u-boot# mmc rescan
u-boot# fatload mmc 0 0x82000000 ubi.img
u-boot# nand erase 0x00780000 0xF880000
  u-boot# nand write 0x82000000 0x00780000 0x1E00000
 
5.  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'
       顺利启动后,会在终端显示如下相关信息:
 
 
 
 
 
 
 
原创粉丝点击