嵌入式Linux開發——(十五)移植YAFFS檔案系統
一、移植YAFFS檔案系統
1)YAFFS檔案系統的介紹
①YAFFS(yet another flash file system)是一種類似於JFFS / JFFS2,專門為NAND Flash設計的嵌入式檔案系統,適用於大 容量的儲存裝置
②日誌結構的檔案系統,提供了耗損平衡和掉電保護
③與JFFS相比,減少了一些功能,因此速度更快,佔用記憶體更少
④實現錯誤檢測和壞塊處理,提高載入速度
⑤可移植性強
⑥一般而言,在Nor Flash上使用JFFS2檔案系統,在NAND Flash上使用YAFFS檔案系統
2)YAFFS檔案系統的移植
①程式碼下載網址:http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi
②移植YAFFS2兩步驟:
A、將YAFFS2程式碼加入核心
通過YAFFS2目錄下的指令碼檔案patch-ker.sh給核心打補丁:
$ cd ............/yaffs2
$ ./patch-ker.sh c .............../linux-2.6.22.6
B、配置、編譯核心
核心配置介面:
File system --->
Miscellaeous filesystem ---->
<*> YAFFS2 file system support
二、構建Linux根檔案系統
1)Linux檔案系統概述
①LInux是以樹狀結構管理所有的目錄、檔案,其他分割槽掛載在某個目錄上,這個目錄被稱為掛載點後安裝點(mount point), 然後就可以通過這個目錄來訪問這個分割槽上的檔案
②在構建檔案系統時,建議遵循FHS標準(Filesystem Hierarchy Standard,檔案系統層次標準),FHS文件可以在
③Linux根檔案系統結構
④各目錄的作用:
- /bin目錄:存放所有使用者都可以使用的、基本的命令
- /sbin目錄:基本存放系統命令(僅管理員能使用)
- /dev目錄:存放裝置檔案
- /etc目錄:存放各種配置檔案
- /lib目錄:存放共享庫和可載入模組(驅動模組)
- /home目錄:使用者目錄
- /root目錄:根使用者目錄
- /usr目錄:存放共享、只讀程式和資料
- /var目錄:存放可變的資料
- /proc目錄:空目錄,虛擬檔案系統
- /mnt目錄:用於臨時連線某個檔案系統的連線點
- tmp目錄:用於臨時存放檔案
2)LInux檔案屬性介紹
①Linux檔案型別:
②使用“ls -lih”,列出檔案資訊
228883 -rw-r--r-- 2 root root 6 sep 27 22:10 readme.txt
欄位 1 2 3 4 5 6 7 8
A、欄位1:檔案的索引節點inode,存放檔案上述資訊,比如大小、屬主、許可權等
B、欄位2:檔案種類和許可權
檔案擁有許可權 檔案群組許可權 其他使用者許可權
- |
r |
w |
x |
r |
- |
- |
r |
- |
- |
檔案型別:
①“-”:普通檔案
②“d”:目錄
③“c”:字元裝置
④“b”:塊裝置
⑤“p”:FIFO管道
⑥“l”:軟連線
⑦“s”:套接字(socket)
每組許可權由rwx組成,表示可讀、可寫、可執行
如果某一位被設為“-”,則代表沒有相應的許可權
欄位3:硬體連線個數
欄位4:檔案擁有者
欄位5:所屬群組
欄位6:檔案或目錄大小 對於裝置檔案,表示主裝置號
欄位7:最後訪問或修改時間 對於裝置檔案,表示次裝置號
欄位8:檔案/目錄名
3)移植Busybox
①Busybox概述:
A、利用Busybox來建立/bin /sbin等目錄下的可執行檔案
B、官網http://www.busybox.net
②init程序介紹及使用者程式啟動介紹:
A、init程序是由核心啟動的(也是唯一的一個)使用者程序,它根據配置檔案決定啟動那些程式
B、Linux系統中的兩種init程式:BSD init 和 System V init
C、在嵌入式領域,通常用Busybox整合的init程式
4)使用glibc庫(交叉編譯工具)
①靜態庫檔案 .a :編譯靜態程式時會連線它們
②動態庫檔案 .so :編譯時會用到這些檔案,但不會連線它們,執行時才連線
5)構建根檔案系統
①構建etc目錄
②構建dev目錄
③構建其他目錄:proc、mnt、tmp、sys、root等
④製作yaffs檔案系統映象檔案