根文件系統幾個重要文件busybox、rcs、profile、inittab

原創:https://www.cnblogs.com/huilixieqi/p/6494268.html

inittab文件

  • inittab爲linux初始化文件系統時init初始化程序用到的配置文件。
  • inittab的工作原理就是被/linuxrc(也就是busybox)執行時所調用起作用。
  • inittab在/etc目錄下,所以屬於一個運行時配置文件,是文本格式的(內容是由一系列的遵照一個格式組織的字符組成的),實際工作的時候busybox會(按照一定的格式)解析這個inittab文本文件,然後根據解析的內容來決定要怎麼工作。

busybox究竟如何完成解析並且解析結果如何去工作(busybox中實現/etc/inittab的原理)並不是我們的目標,我們的重點是inittab的格式究竟怎樣的?我們看到一個inittab後怎麼去分析這個inittab對啓動的影響。inittab的格式在busybox中定義的,網上可以搜索到詳細的格式說明,具體去參考即可:
< id>:< runlevels>:< action>:< process>

在這裏插入圖片描述

  • #開始的行是註釋
  • 冒號在裏面是分隔符,分隔開各個部分。
  • inittab內容是以行爲單位的,行與行之間沒有關聯,每行都是一個獨立的配置項,每一個 配置項表示一個具體的含義。
  • 每一行的配置項都是由3個冒號分隔開的4個配置值共同確定的。這四個配置值就是id:runlevels:action:process 值得注意得是有些配置值可以空缺,空缺後冒號不能空缺,所以有時候會看到連續2個冒號。
  • 每一行的配置項中4個配置值中最重要的是action和process,action是一個條件/狀態,process是一個可被執行的程序的pathname。合起來的意思就是:當滿足action的條件時就會執行process這個程序。

在這裏插入圖片描述

注意:理解inittab的關鍵就是明白“當滿足action的條件時就會執行process這個程序

rcs文件
/etc/init.d/rcS文件是linux的運行時配置文件中最重要的一個,其他的一些配置都是由這個文件引出來的。這個文件可以很複雜也可以很簡單,裏面可以有很多的配置項。
在這裏插入圖片描述
PATH=xxx

(1)首先從shell腳本的語法角度分析,這一行定義了一個變量PATH,值等於後面的字符串
(2)後面用export導出了這個PATH,那麼PATH就變成了一個環境變量。
(3)PATH這個環境變量是linux系統內部定義的一個環境變量,含義是操作系統去執行程序時會默認到PATH指定的各個目錄下去尋找。如果找不到就認定這個程序不存在,如果找到了就去執行它。將一個可執行程序的目錄導出到PATH,可以讓我們不帶路徑來執行這個程序。
(4)rcS中爲什麼要先導出PATH?就是因爲我們希望一旦進入命令行下時,PATH環境變量中就有默認的/bin /sbin /usr/bin /usr/sbin 這幾個常見的可執行程序的路徑,這樣我們進入命令行後就可以ls、cd等直接使用了。
(5)爲什麼我們的rcS文件還沒添加,系統啓動就有了PATH中的值?原因在於busybox自己用代碼硬編碼爲我們導出了一些環境變量,其中就有PATH。

runlevel=
(1)runlevel也是一個shell變量,並且被導出爲環境變量。
(2)runlevel這個環境變量到底有什麼用?
(3)runlevel=S表示將系統設置爲單用戶模式

umask=
(1)umask是linux的一個命令,作用是設置linux系統的umask值。
(2)umask值決定當前用戶在創建文件時的默認權限。
mount -a
(1)mount命令是用來掛載文件系統的
(2)mount -a是掛載所有的應該被掛載的文件系統,在busybox中mount -a時busybox會去查找一個文件/etc/fstab文件,這個文件按照一定的格式列出來所有應該被掛載的文件系統(包括了虛擬文件系統)

通過rcS 可 以調用 dhcp 程序配置網絡。rcS 執行完了以後,init 就會在一個 console 上,按照 ini ttab的指示開一個 shell,或者是開 getty + login,這樣用戶就會看到提示輸入用戶名的 提示符。 /usr/etc/rc.local 這是被init.d/rcS 文件調用執行的特殊文件,與Linux 系統硬件平臺相關, 如安裝核心模塊、進行網絡配置、運行應用程序、啓動圖形界面等。 /usr/etc/profile rc.local 首先執行該文件配置應用程序需要的環境變量等。
http://www.cnblogs.com/king-77024128/articles/2275545.html

profile文件
在這裏插入圖片描述
(1)之前添加了/bin/hostname在/etc/sysconfig/HOSTNAME文件中定義了一個hostname(aff),實際效果是:命令行下hostname命令查到的host名字確實是aff。但是問題就是命令行的提示符是沒有顯示的。
(2)這個問題的解決就要靠profile文件。將提供的profile文件放入/etc/目錄下即可。
(3)添加了之後的實驗現象:命令行提示符前面顯示:[@aff ]#
結論是:第一,profile文件起了作用,hostname顯示出來了。第二,還有個問題,登錄用戶名沒顯示出來。原因就是我們直接進入了命令行而沒有做登錄。等我們添加了用戶登錄功能,並且成功登陸後這個問題就能解決。
(4)profile文件工作原理是:profile文件也是被busybox(init進程)自動調用的,所以是認名字的。

傳統的嵌入式系統都是uboot+kernel+rootfs。其中最簡單的rootfs就是ramfs+busybox+/dev + /etc> +/lib。至於etc目錄中的inittab和init.d/rcS這兩個都是busybox中init程序分析的內容。如果本身沒有busybox,其實也無所謂這兩個腳本。https://blog.csdn.net/feixiaoxing/article/details/80345233

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章