SylixOS中ROOTFS介紹

  • ROOTFS簡介
    ROOTFS(根文件系統)是一種特殊的文件系統,根文件系統是內核啓動時掛載的第一個文件系統,因此根文件系統包括了SylixOS啓動時所必須的目錄和關鍵性的文件,例如內核啓動時所必需的etc目錄,以及系統命令bin目錄等,任何包括這些SylixOS啓動所必須的文件都可以成爲根文件系統。
    SylixOS的ROOTFS屬於虛擬類型的根文件系統,因爲此文件系統並不存在於具體的物理磁盤中,而是系統啓動後動態創建的,並將此係統保存於內存中。

  • 根目錄文件系統映射配置參數
    系統內核啓動參數函數API_KernelStartParam中提供根文件系統映射關係選項rfsmap,參數用逗號隔開,其中"/boot"、"/etc"、"/tmp"、"/apps"等爲可選映射,"/"爲必須映射。
    例如"/boot:/media/hdd0"表示將"/boot"目錄映射到"/media/hdd0";"/apps:/media/hdd2"表示將"/apps"目錄映射到"/media/hdd2";"/:/media/hdd1"表示將根目錄整體映射到"/media/hdd1";"/:/dev/ram"表示將根目錄整體映射到ramfs中。注意"/dev/ram"類型只能使用在"/:"映射中。
    根據根文件系統映射關係選項rfsmap傳入的配置參數,調用API_RootFsMapInit函數進行初始化操作,保存配置參數到全局變量_G_rfsmapRoot和_G_rfsmapSubp中。

  • ROOTFS驅動實現分析
    SylixOS中ROOTFS相關API接口代碼位於/libsylixos/SylixOS/fs/rootfs目錄下。
    3.1 rootFsDrv函數安裝驅動
    宏rootFsDrv所定義的函數API_RootFsDrvInstall實現安裝ROOTFS文件系統驅動。此函數創建字符設備驅動,提供創建、釋放、打開、關閉、讀、寫、狀態獲取、ioctl、符號鏈接等函數接口。

    1. __rootFsOpen函數
      ROOTFS文件節點打開或創建函數。根據不同輸入的標誌參數,新建文件或者增加文件的引用計數,同時支持符號鏈接。
    2. __rootFsRemove函數
      ROOTFS文件節點刪除函數。
    3. __rootFsClose函數
      ROOTFS文件節點關閉函數。
    4. __rootFsRead函數
      ROOTFS不支持讀操作。
    5. __rootFsWrite函數
      ROOTFS不支持寫操作。
    6. __rootFsLStatGet函數
      ROOTFS文件狀態及屬性獲得函數。
    7. __rootFsIoctl函數
      ROOTFS文件節點ioctl操作函數。包括獲取文件狀態、獲取文件系統狀態、獲取一個目錄信息、將文件緩存回寫、改變文件訪問權限、獲取文件系統類型等功能。
    8. __rootFsSymlink函數
      ROOTFS符號鏈接創建函數。
    9. __rootFsReadlink函數
      ROOTFS鏈接文件讀取函數。

    3.2 rootFsDevCreate函數創建設備
    宏rootFsDevCreate所定義的函數API_RootFsDevCreate實現創建ROOTFS文件系統設備。ROOTFS文件系統設備掛載目錄地址爲根目錄"/"。
    根設備創建完成之後,SylixOS內核會創建"/dev"、"/dev/pty"、"/dev/pipe"、"/dev/input"、"/dev/blk"、"/mnt"、"/media"等目錄。

  • 根目錄文件系統映射實現
    根目錄文件系統映射函數API_RootFsMap實現其他目錄結構的映射操作。根據全局變量_G_rfsmapSubp中保存的根目錄文件系統映射配置參數,調用symlink函數分別對"/var"、"/usr"、"/tmp"、"/sbin"、"/root"、"/qt"、"/lib"、"/home"、"/etc"、"/boot"、"/bin"、"/apps"目錄創建符號鏈接。
  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章