Linux 啟動過程與啟動目錄解析

2021-08-27 07:08:29 字數 1997 閱讀 4809

linux啟動過程

redhat的啟動方式和執行次序是:

載入核心

執行init程式

/etc/rc.d/rc.sysinit # 由init執行的第乙個指令碼

/etc/rc.d/rc $runlevel # $runlevel為預設的執行模式

/etc/rc.d/rc.local

/sbin/mingetty # 等待使用者登入

init在等待/etc/rc.d/rc執行完畢之後(因為在/etc/inittab中/etc/rc.d/rc的action是wait),將在指定的各個虛擬終端上執行/sbin/mingetty,等待使用者的登入。

至此,linux的啟動結束。

linux的引導過程

系統啟動之後,在進入 init.d之前,我們先來看看系統都做了什麼工作.

系統加電之後,首先進行的硬體自檢,然後是bootloader對系統的初始化,載入核心。核心被載入到記憶體中之後,就開始執行了。一旦核心啟動執行,對硬體的檢測就會決定需要對哪些裝置驅動程式進行初始化。從這裡開始,核心就能夠掛裝根檔案系統(這個過程類似於windows識別並訪問c盤的過程)。核心掛裝了根檔案系統,並已初始化所有的裝置驅動程式和資料結構等之後,就通過啟動乙個叫 init的使用者級程式,完成引導程序。

執行級別(run level)

init程序是系統啟動之後的第乙個使用者程序,所以它的pid(程序編號)始終為1。init程序上來首先做的事是去讀取/etc/目錄下inittab 檔案中initdefault id值,這個值稱為執行級別(run-level)。它決定了系統啟動之後執行於什麼級別。執行級別決定了系統啟動的絕大部分行為和目的。這個級別從0到 6 ,具有不同的功能。不同的執行級定義如下:

# 0 – 停機(千萬別把initdefault設定為0,否則系統永遠無法啟動)

# 1 – 單使用者模式

# 2 – 多使用者,沒有 nfs

# 3 – 完全多使用者模式(標準的執行級)

# 4– 系統保留的

# 5 – x11 (x window)

# 6 – 重新啟動 (千萬不要把initdefault 設定為6,否則將一直在重啟)

常用的是2、3、5。

linux啟動目錄

/etc/rc.d/ 包括rc.d, rcx.d目錄和rc.sysinit, rc, rc.local三個指令碼檔案。

/etc/rc.d/init.d/存放啟動時要執行的指令碼(一般為linux以rpm包安裝時設定的一些服務的啟動指令碼),在系統啟動的時候某些指定指令碼將被執行。

/etc/rc.d/rcx.d/ 各啟動級別對應的啟動目錄,存放鏈結到init.d目錄下指令碼的符號鏈結(軟鏈結),指定特定啟動級別下哪些指令碼被執行。x為啟動級別,0-6。

/etc/rc.d/init.d這個目錄下的指令碼在系統啟動的時候執行,但不是全部都執行,而是有選擇的執行,因為系統並不需要啟動所有的服務。

那麼,系統是如何選擇哪些需要啟動哪些不要呢?這時剛才說的執行級別就起作用了。在決定了系統啟動的run level之後,/etc/rc.d/rc這個指令碼先執行。在rh9和fc7的原始碼中它都是一上來就check_runlevel()(雖然實現的**不一樣,也大同小異),知道了執行級別之後,對於每乙個執行級別,在rc.d下都有乙個子目錄分別是rc0.d,rc1.d ….. rc6.d。每個目錄下都是到init.d目錄的一部分指令碼一些鏈結。每個級別要執行哪些服務就在相對應的目錄下,比如級別5要啟動的服務就都放在rc5.d下,但是放在這個rc5.d下的都是一些鏈結檔案,鏈結到init.d中相對應的檔案,真正執行的是init.d裡的指令碼。

1、鏈結檔案前面為什麼會帶乙個kxx或者sxx呢?

帶k的表示停止(kill)乙個服務,s表示開啟(start)的意思,凡是以kxx開頭的,都以stop為引數來呼叫;凡是以sxx開頭的,都以start為引數來呼叫。呼叫的順序按xx從小到大來執行。

2、k和s後面帶的數字呢?幹什麼用的

數字的作用是用來排序,就是決定這些指令碼執行的順序,數值小的先執行,數值大的後執行。很多時候這些執行順序是很重要的,比如要啟動apache服務,就必須先配置網路介面

Linux啟動過程

1 開啟 pc電源 pc加電後,乙個特殊的硬體電路會觸發 cpu 的 reset 腳的邏輯值,然後一些 cpu 暫存器,如 cs eip 等被給定乙個值,接著 cpu 跳轉到乙個固定位址開始執行 bios 2 bios 自檢,按設定的裝置啟動 bios 對硬體進行一系列徹底的檢查,如 cpu 型別 ...

Linux 啟動過程

fae 將porting 好的linux 提供,幾乎都在寫應用 空閒時間整理一下 b1202 系統啟動的過程 通過 boot vm 進行啟動 vmlinuz init 程序會讀取 etc inittab etc inittab 先 etc rc.d rc.sysinit 再 etc rc.d rc3...

Linux啟動過程

1.加電時由硬體將bios載入到記憶體末尾.這時是實模式,定址空間為1m.2.由硬體將cs段暫存器強制設定為0xffff,ip指令暫存器設定為0x0000.這樣cs ip指向了oxffff0的位址位置.這個位置就是bios程式的入口位址.3.執行bios程式.在記憶體起始位址0x00000設定1k大...