SylixOS中ROOTFS介紹
ROOTFS簡介
ROOTFS(根文件系統)是一種特殊的文件系統,根文件系統是內核啟動時掛載的第一個文件系統,因此根文件系統包括了SylixOS啟動時所必須的目錄和關鍵性的文件,例如內核啟動時所必需的etc目錄,以及系統命令bin目錄等,任何包括這些SylixOS啟動所必須的文件都可以成為根文件系統。
SylixOS的ROOTFS屬於虛擬類型的根文件系統,因為此文件系統並不存在於具體的物理磁盤中,而是系統啟動後動態創建的,並將此系統保存於內存中。
根目錄文件系統映射配置參數
系統內核啟動參數函數API_KernelStartParam中提供根文件系統映射關系選項rfsmap,參數用逗號隔開,其中"/boot"、"/etc"、"/tmp"、"/apps"等為可選映射,"/"為必須映射。
根據根文件系統映射關系選項rfsmap傳入的配置參數,調用API_RootFsMapInit函數進行初始化操作,保存配置參數到全局變量_G_rfsmapRoot和_G_rfsmapSubp中。
ROOTFS驅動實現分析
SylixOS中ROOTFS相關API接口代碼位於/libsylixos/SylixOS/fs/rootfs目錄下。
3.1 rootFsDrv函數安裝驅動
宏rootFsDrv所定義的函數API_RootFsDrvInstall實現安裝ROOTFS文件系統驅動。此函數創建字符設備驅動,提供創建、釋放、打開、關閉、讀、寫、狀態獲取、ioctl、符號鏈接等函數接口。
- __rootFsOpen函數
ROOTFS文件節點打開或創建函數。根據不同輸入的標誌參數,新建文件或者增加文件的引用計數,同時支持符號鏈接。 - __rootFsRemove函數
ROOTFS文件節點刪除函數。 - __rootFsClose函數
- __rootFsRead函數
ROOTFS不支持讀操作。 - __rootFsWrite函數
ROOTFS不支持寫操作。 - __rootFsLStatGet函數
ROOTFS文件狀態及屬性獲得函數。 - __rootFsIoctl函數
ROOTFS文件節點ioctl操作函數。包括獲取文件狀態、獲取文件系統狀態、獲取一個目錄信息、將文件緩存回寫、改變文件訪問權限、獲取文件系統類型等功能。 - __rootFsSymlink函數
ROOTFS符號鏈接創建函數。 - __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介紹