linux内核创建ubi,基于linux2.6.27内核sep4020上ubifs的使用

一.在内核选项中配置好ubifs

在配置的时候选上1)Device Drivers--->Memory

Technology Device (MTD) support--->UBI - Unsorted block images--->Enable UBI

Device Drivers

Memory Technology Device (MTD) support

UBI - Unsorted block images

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

File systems

Miscellaneous filesystems

UBIFS file system support

二.编译用户工具

mtd-utils工具(flash_eraseall、ubiattach、ubimkvol)准备1)下载(mtd-utils、zlib、lzo)源码wget

wget

wget

2)编译安装zlibtar xzvf zlib-1.2.3.tar.gzcd zlib-1.2.3CC=arm-linux-gcc ./configure --shared --prefix=/usr/local/arm/3.4.5/arm-linuxmakemake installcd ..

3)编译安装lzotar xzvf lzo-2.03.tar.gz

cd lzo-2.03

CC=arm-linux-gcc ./configure --host=arm-linux

--prefix=/usr/local/arm/3.4.5/arm-linux

make

make install

cd ..

4)编译mtd-utils-20080508tar xzvf mtd-utils_20080508.orig.tar.gz

cd mtd-utils-20080508修改Makefile文件:#CROSS=arm-linux-修改为CROSS=arm-linux-BUILDDIR := $(CROSS:-=)修改为BUILDDIR := .修改ubi-utils/Makefile文件:添加CROSS=arm-linux-修改ubi-utils/new-utils/Makefile文件:添加CROSS=arm-linux-

在mtd-utils-20080508/ubi-utils/目录下面make WITHOUT_XATTR=1

ubi-utils子目录下生成我们需要的ubiattach、ubimkvol等文件(请确保是交叉编译所得)

好了,将这个工具拷贝到/usr/sbin目录下面

三.使用步骤

由于没有提供flash_eraseall用户工具,我们擦除nandflash只能在U_boot控制台下擦除了

(1)在U_boot控制台下擦除nandflash

(2)挂载nfs文件系统,在nfs文件系统下执行下面操作

(3)ubiattach

/dev/ubi_ctrl -m 3

/ # ubiattach /dev/ubi_ctrl -m 3

UBI: attaching mtd3 to ubi0

UBI: physical eraseblock size:16384 bytes (16 KiB)

UBI: logical eraseblock size:15872 bytes

UBI: smallest flash I/O unit:512

UBI: sub-page size:256

UBI: VID header offset:256 (aligned 256)

UBI: data offset:512

UBI: empty MTD device detected

UBI: create volume table (copy #1)

UBI: create volume table (copy #2)

UBI: attached mtd3 to ubi0

UBI: MTD device name:"user"

UBI: MTD device size:34 MiB

UBI: number of good PEBs:2176

UBI: number of bad PEBs:0

UBI: max. allowed volumes:92

UBI: wear-leveling threshold:4096

UBI: number of internal volumes: 1

UBI: number of user volumes:0

UBI: available PEBs:2151

UBI: total number of reserved PEBs: 25

UBI: number of PEBs reserved for bad PEB handling: 21

UBI: max/mean erase counter: 0/0

UBI: background thread "ubi_bgt0d" started, PID 393

UBI device number 0, total 2176 LEBs (34537472 bytes, 32.9 MiB),

available 2151 LEBs (34140672 bytes, 32.6 MiB), LEB size 15872 bytes (15.5 KiB)

(4)mdev -s

这样我们可以在/dev目录下看见ubi0设备了

(5)ubimkvol

/dev/ubi0 -N ubifs -s 15MiB

/ # ubimkvol /dev/ubi0 -N ubifs -s 15MiB

Volume ID 0, size 991 LEBs (15729152 bytes, 15.0 MiB), LEB size 15872

bytes (15.5 KiB), dynamic, name "ubifs", alignment 1

(6)mount -t ubifs

ubi0:ubifs /mnt

/ # mount -t ubifs ubi0:ubifs /mnt

UBIFS: default file-system created

UBIFS: background thread "ubifs_bgt0_0" started, PID 402

UBIFS: mounted UBI device 0, volume 0, name "ubifs"

UBIFS: file system size: 15538688 bytes (15174 KiB, 14 MiB, 979 LEBs)

UBIFS: journal size: 777728 bytes (759 KiB, 0 MiB, 49 LEBs)

UBIFS: default compressor: LZO

UBIFS: media format 4, latest format 4

(7)下面就可以创建我们的文件系统了

/ # cp -af bin/ usr/ etc/ root/ home/ sbin/ /mnt

/ # cd /mnt

/mnt # mkdir sys/ dev/ var/ mnt/ proc/ tmp/

/mnt # cd dev

由于我们的sep4020上不能自刷新,所以创建了一个ubi0节点

/mnt/dev # mknod ubi0 c 254 0

/mnt/dev # mknod console c 5 1

(8)重启启动开发板,切换到U_boot控制台界面下设置bootargs参数

set bootargs console=ttyS0,115200ubi.mtd=3 root=ubi0:ubifsrootfstype=ubifs

(9)重新启动开发板,就会看见下面的启动信息

----------------如有不对,欢迎指正,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值