linux檔案系統的移植-製作JFFS2檔案系統 JFFS2全名是 Journalling Flash File System Version2,是Redhat公司開發的快快閃記憶體儲器(簡稱:快閃記憶體;英文: Flash Memory)的檔案系統[1],其前身是JFFS, 最早只支援NOR Flash, 自2.6版以後開始支援NAND Flash, 極適合使用於嵌入式系統。
JFFS2 功能如下:支援 NAND flash 裝置。硬連結(Hard links)。這是JFFS 礙於檔案格式所無法支援的功能。壓縮。有三種演算法: zlib, rubin 以及 rtime.更佳的效能。
缺點:JFFS2在掛載(mount)時會掃描整個flash 所有的資料,再將檔案系統目錄儲存在system memory, 會線性倍數成長,消耗很多時間。JFFS2沒有write-back機制,不能將資料暫存於緩衝(cache), 以致於flash I/O的動作頻繁。JFFS2設計機制過於複雜,程式碼不易閱讀。
一、移植環境: www.2cto.com 1、 Ubuntu 10.10發行版2、 u-boot.bin http://download.csdn.net/detail/baby_afu/44128263、 目標機:FS_S5PC100平台4、 交叉編譯器 arm-cortex_a8-linux-gnueabi-gcc ---------------------------------------------------------------------二、製作jffs2檔案系1、配置核心支援jffs2檔案系統 $ make menuconfig File system ---> [*] Miscellaneous filesystems ---> <*> Journalling Flash File System v2 (JFFS2) support 2、zlib的編譯 解壓zlib-1.2.3.tar.bz2 http://download.csdn.net/detail/baby_afu/4418294 並進入zlib-1.2.3配置編譯安裝 $ tar xvf zlib-1.2.3.tar.bz2$ cd zlib-1.2.3 www.2cto.com $ ./configure$ make$ make install 3、mtd工具編譯 解壓mtd-snapshot-20050519.tar.bz2 http://download.csdn.net/detail/baby_afu/4418298並進入mtd/util編譯安裝 $ tar xvf mtd-snapshot-20050519.tar.bz2$ cd mtd/util$ make$ make install 這樣我們的系統裡就有了mkfs.jffs2這個工具了4、jffs2檔案系統鏡像製作 $ mkfs.jffs2 -r /source/rootfs -o rootfs.jffs2 -e 0x4000 --pad=0x800000 -n$ cp rootfs.jffs2 /tftpboot www.2cto.com 5、jffs2檔案系統燒寫 # tftp 30008000 rootfs.jffs2# nand erase 500000 800000# nand write 30008000 500000 800000 6、設定u-boot啟動參數 # setenv bootcmd tftp 33000000 zImage\; go 33000000# setenv bootargs root=/dev/mtdblock2 init=/linuxrc rootfstype=jffs2 rw console=ttySAC0,115200 # savenv重新啟動開發板,查看是否成功。 作者 lr_ting