第一、什麼是ubifs?
由IBM、nokia工程師Thomas Gleixner,Artem Bityutskiy等人於2006年發起,致力於開發性能卓越、擴展性高的FLASH專用文件系統,以解決當前嵌入式環境下以FLASH作爲MTD設備使用時的技術瓶頸。
關鍵字:
UBI:一種類似於LVM的邏輯卷管理層。主要實現損益均衡,邏輯擦除塊、卷管理,壞塊管理等。
UBIFS:基於UBI的FLASH日誌文件系統。
有關ubifs的詳細介紹,請參考:
http://www.linux-mtd.infradead.org/doc/ubi.html
http://www.linux-mtd.infradead.org/doc/ubifs.html
第二、爲何使用ubifs?
第三、如何得到ubifs?
2.6.22以後,ubifs活躍於git管理工程中:
git://git.infradead.org/ubi-2.6.git
2.6.27以後,ubifs被整合進內核樹中,用戶只需下載最新內核即可獲取ubifs支持。
第四、如何使用ubifs?
軟件環境:
linux-2.6.28
arm-linux-gcc 3.4.5
硬件環境:
s3c2410
k9f1208
一、準備
1、內核
配置的時候選上
1)Device Drivers --->Memory Technology Device (MTD) support --->UBI - Unsorted block images --->Enable UBI
2)File systems --->Miscellaneous filesystems --->UBIFS file system support
2、mtd-utils工具(flash_eraseall、ubiattach、ubimkvol)準備
1)下載(mtd-utils、zlib、lzo)源碼
wget http://debian.mirror.inra.fr/debian/pool/main/m/mtd-utils/mtd-utils_20080508.orig.tar.gz
wget http://www.zlib.net/zlib-1.2.3.tar.gz
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
2)編譯安裝zlib
tar xzvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
CC=arm-linux-gcc ./configure --shared --prefix=/usr/local/arm/3.4.5/arm-linux
make
make install
cd ..
3)編譯安裝lzo
tar 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
tar 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-
make WITHOUT_XATTR=1
ubi-utils子目錄下生成我們需要的ubiattach、ubimkvol等文件(請確保是交叉編譯所得)
3、mtd-utils工具(mkfs.ubifs、ubinize)準備
git-clone git://git.infradead.org/mtd-utils.git
cd mtd-utils/
make
mkfs.ubifs子目錄下生成我們需要的mkfs.ubifs工具
ubi-utils/new-utils子目錄下生成我們需要的ubinize工具
二、使用
1、使用ramfs或nfs啓動系統,執行以下命令掛載ubifs:
1)flash_eraseall /dev/mtd4
2)ubiattach /dev/ubi_ctrl -m 4
3)ubimkvol /dev/ubi0 -N rootfs -s 50MiB
4)mount -t ubifs ubi0_0 /mnt或mount -t ubifs ubi0:rootfs /mnt
2、如果你想使用ubifs爲rootfs,把文件系統內容解壓到ubifs掛載目錄下,並修改內核啓動參數爲:
console=ttySAC0 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs
3、如果你想直接在bootloader下燒寫ubifs映像,使用以下命令製作ubi燒寫映像:
mkfs.ubifs -r rootfs -m 512 -e 15872 -c 3303 -o ubifs.img
ubinize -o ubi.img -m 512 -p 16KiB -s 256 ubinize.cfg
其中:
1)以上命令的參數可從ubifs掛載信息中提取:
UBI: attaching mtd4 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: attached mtd4 to ubi0
2)配置文件ubinize.cfg的內容爲:
[ubifs]
mode=ubi
image=ubifs.img
vol_id=0
vol_size=50MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
注:
其他nand flash下ubifs的使用方法類似(參數不同)。
ubifs輕鬆上路
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.