根檔案系統(linuxrc、inittab、fstab)
根檔案系統
根檔案系統是除核心映像檔案外,init程式、shell程式、各種程式執行需要的的庫等不可缺少檔案的集合。
構建根檔案系統時,一般遵循FHS標準,詳見維基百科
(https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard)。
簡單介紹:
/bin存放著所有使用者可以使用的命令。
/sbin中是系統關鍵命令。
/usr是隻讀使用者資料的二級結構。
busybox呼叫關係
在嵌入式式系統中,通常使用busybox工具生成命令和庫檔案。其生成的檔案都被簡化過,體積大大減小。
busybox生成的根檔案如上,其中linuxrc是busybox生成的init程式。
這裡稍微提一下核心初始化完成後,程序0 fork出程序1後變成idle程序,程序1執行uboot中指定的init路徑的程式(若未制定會去預設路徑尋找)。
busybox生成的init程序就在/sbin中。linuxrc跟編譯時配置有關係,linuxrc跟/sbin/init作用一樣,使用linuxrc後就不會使用/sbin/init。
inittab指令碼
init程序初始化完成後,會去解析inittab指令碼,這個指令碼說明了如何建立自程序。
<id>:<runlevels>:<action>:<process>
<id >:子程序使用的控制檯(標準輸入、標準輸出、標準錯誤裝置)
<runlevels>: 1到6,表示不同的六個級別
init 0 是停機的意思。也就是說可以用這個命令關機。可以相當於shutdown -P now這個命令,就是用這個命令關機的話,終端不會彈出任何提示訊息,直接就關機了。
init 1 單使用者模式。很多情況下忘了登陸密碼或者root密碼就在單使用者模式下修改。
init 2 多使用者,沒有 NFS。不知道什麼意思,表示沒有用過這個命令。
init 3 完全多使用者模式。這個經常用,就是文字模式~~~
init 4 未使用,保留。
init 5 圖形介面
init 6 重啟命令。相當於shutdown -r now。
<action>:init如何控制子程序。
<process>:可以是要執行的指令碼,也可以是程式。
inittab指令碼例項如上,我們可以將開機後需要執行的命令放到/etc/init.d/rcS中,比如mount -a。
mount -a的意思是將/etc/fstab的所有內容重新載入。
fstab指令碼
device:要掛接的裝置,如/dev/mtdblock1等,對於檔案系統,這個欄位可以為任意值。
mount-point:掛接點
type:檔案系統型別
options:掛接引數
dump:決定dump程式行為,其為備份與關,為0則忽略
fsck order:決定fsck程式行為,其餘磁碟檢查有關,為0則忽略