天天看點

Linux的啟動過程

Linux的啟動過程:

POST上電自檢--->BIOS進行啟動選擇--->讀取MBR進行系統啟動--->加載核心--->執行init

1:POST上電自檢,檢查輸入輸出裝置是否正常;

2:BIOS,進行啟動順序的選擇;

3:MBR,前446個位元組存放着Boot Loader,後面的64個位元組存放着分區表,最後2個位元組用于封裝碼;

4:加載核心,核心加載進行硬體的探測,裝置的驅動初始化,挂載根檔案系統,裝

載/sbin/init,啟動系統PID為1的程序,但是在進行挂載時核心需要讀取磁盤上的資料,而此時并沒有磁盤的驅動,依然無法讀取,是以這就借助一個中間檔案init;

5.init程序:判斷進入哪個runlevel下跟着就直接進入rc.sysinit檔案設定大部分和系統相關的環境,在/etc/inittab檔案中,該檔案中的内容分為四個字段:

id:runlevels:action:process

(id):辨別

(runlevels):運作級别,級别分為六個分别用0-6來進行辨別:0-關機;1-單使用者模式,不開啟網絡功能,任何使用者登入均不需要密碼,是以在這個級别中可以重新設定任何使用者的密碼包括root使用者;2-完全模式,除了網絡檔案系統NFS不進行加載;3-指令行的完全多使用者模式;4-預留級别;5-圖形完全模式;6-重新啟動。通常我們進入的是3和5級。

(action):常用到的有:respawn--一旦程序終止就會立即重新啟動;wait--當進入特别級别的時候,該程序就會啟動一次,直到其結束;initdefault--設定預設運作級别;sysinit--系統初始化,在系統啟動過程中會被執行一次;powerfail--當電源有故障時立即執行;powerwait:等待電源恢複時執行;powerokwait--電源恢複時執行;ctrlaltdel--當使用者同時按下ctrl+alt+del組合鍵時執行。

(process):在檢視/etc/inittab檔案時,發現在process字段處寫的都是/etc/rc.d/rc 1-6等,其實這都是些連結檔案。打開/etc/rc.d/rc2.d中,全部都是些以"K"或者"S"後面跟着數字後面是每個服務的名字,形如:K01dnsmasq、S10network。其中"K"表示Kill的意思"S"表示Start,而後面的數字則均是該服務的啟動優先級和關閉優先級,在服務之間也存在着優先級和依賴關系,例如:啟動web服務則必須依賴于網絡服務。

chkconfig:檢視服務

--list:列出目前服務的狀态

--level # SERVICE off|on:在某個級别關閉或開啟摸個服務

--add:添加某個服務

--del:删除某個服務

也可以用:service SERVICE status|stop|start|restart 檢視狀态|停止|啟動|重新開機

在使用chkconfig列出的服務其實都在/etc/rc.d/init.d檔案中寫着。

至此,整個系統就這樣啟動起來了!

本文轉自 向陽草米奇 51CTO部落格,原文連結:http://blog.51cto.com/grass51/788111,如需轉載請自行聯系原作者

繼續閱讀