Linux操作系統啓動流程與Grub的配置方法

 作者:sixth

一、Linux的啓動流程

 

1. 從BIOS到KERNEL

BIOS自檢->MBR(GRUB)->KERNEL->KERNEL自解壓->內核初始化->內核啓動

2. 內核啓動:創建1#進程並執行,由它創建若干內核線程(kernel thread),然後裝入並執行程序/sbin/init(變成一個用戶進程)。此後,init根據/etc/inittab配置文件來執行相應的腳本進行系統初始化,如設置鍵盤、字體,裝載模塊,設置網絡等。

 

對於Redhat來說,執行的順序爲:

/etc/rc.d/rc.sysinit # 由init執行的第一腳本

/etc/rc.d/rc $RUNLEVEL # init執行指定運行級別($RUNLEVEL爲缺省的運行模式)的各腳本;

/etc/rc.d/rc.local #運行模式2、3、5時會運行的腳本

/sbin/mingetty(或getty) # 等待用戶登錄

 

/etc/inittab中指定了系統的運行級別(RUNLEVEL),init根據運行級別啓動相關的服務(一些後臺進程),實現不同的功能。

 

RUNLEVEL值爲:0-6

 

0:halt, 1:單用戶,2:多用戶,3:多用戶並啓動NFS服務

4:保留,5:運行xdm(X window)以圖形界面方式登錄

6:reboot

 

3./etc/inittab文件

 

/etc/inittab的文件內容如下:

 

# 設定系統開機預設的RUNLEVEL:

id:3:initdefault:

 

# 開始進行RUNLEVEL的服務啓動前,使用來偵測與初始化系統環境的設定文件:

si::sysinit:/etc/rc.d/rc.sysinit

 

# 7 個不同 run level 的,需要啓動的服務的 scripts 放置路徑:

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6

 

# 是否允許按下 [ctrl]+[alt]+[del] 就重新開機的設定項目:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

 

# 本機端終端機啓動的個數:

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

 

# 在 X Window (RUNLEVEL 5) 環境下的啓動 script 設定項目:

 

x:5:once:/etc/X11/prefdm -nodaemon

 

這個文件的語法是這樣的:

 

標識符:級別:init 的動作行爲:指令項目

 

1. 標識符:

最多四個字符,代表 init 的主要工作項目,只是一個簡單的代表說明。

2. 級別:

該項目在哪些 run level 底下進行的意思。如果是 35 則代表 runlevel 3 與 5 都會執行。

3. init 的動作行爲:

主要可以進行的動作項目意義有:

initdefault :代表預設的 run level 設定值;

sysinit :代表系統初始化的動作項目;

ctrlaltdel :代表 [ctrl]+[alt]+[del] 三個按鍵是否可以重新開機的設定;

wait :代表後面接的指令項目必須要執行完畢才能繼續後面的動作;

respawn :代表後面接的, init 仍會主動的『重新』啓動。

更多的設定項目請參考 man inittab 的說明。

4. 指令項目:

亦即應該可以進行的指令,通常是一些 script 囉。

 

說明:如根據上面的文件,init程序執行時根據/etc/inittab文件的內容,完成以下功能

(1)獲取RUNLEVEL(文件中的這一行 id:3:initdefault:)爲3

(2)執行rc.sysinit(文件中的這一行 si::sysinit:/etc/rc.d/rc.sysinit)

(3)執行/etc/rc.d/rc3.d目錄中的腳本(文件中的這一行 l3:3:wait:/etc/rc.d/rc 3,且因爲本例RUNLEVEL爲3)

(4)然後設定是否允許按下 [ctrl]+[alt]+[del] 就重新開機(文件中的這一行 ca::ctrlaltdel:/sbin/shutdown -t3 -r now,當然如果不允許,可把此行註釋掉)

(5)啓動六個終端界面tty1-tty6

(6)最後如果我們使用的是 run level 5 ,那麼除了這六個終端機之外, init 還會執行/etc/X11/prefdm -nodaemon 其主要的功能就是在啓動 X Window !

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