1. 程式人生 > >嵌入式Linux開發——(十五)移植YAFFS檔案系統

嵌入式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文件可以在

         http://www.pathname.com/fhs下載

    ③Linux根檔案系統結構

 

 

 

 

 

 

 

    ④各目錄的作用:

  1. /bin目錄:存放所有使用者都可以使用的、基本的命令
  2. /sbin目錄:基本存放系統命令(僅管理員能使用)
  3. /dev目錄:存放裝置檔案
  4. /etc目錄:存放各種配置檔案
  5. /lib目錄:存放共享庫和可載入模組(驅動模組)
  6. /home目錄:使用者目錄
  7. /root目錄:根使用者目錄
  8. /usr目錄:存放共享、只讀程式和資料
  9. /var目錄:存放可變的資料
  10. /proc目錄:空目錄,虛擬檔案系統
  11. /mnt目錄:用於臨時連線某個檔案系統的連線點
  12. 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檔案系統映象檔案