1. 程式人生 > >SylixOS中ROOTFS介紹

SylixOS中ROOTFS介紹

必須 dev psu lstat art 屬性 關閉 put mapr

  • 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"目錄創建符號鏈接。
  • SylixOS中ROOTFS介紹