LINUX開機流程詳解

2021-06-18 23:34:17 字數 3211 閱讀 6997

from : 

在了解啟動流程之前,我們應該先知道系統的幾個重要指令碼和配置檔案,他們對應的路徑為:

1. /sbin/init

2. /etc/inittab

3. /etc/rc.d/rc.sysinit

4. /etc/rc.d/rcn.d //這是幾個資料夾n代表數字1,2,3,4..

5. /etc/fstab

檔案介紹:

1.關於/sbin/init與/etc/inittab

關於/sbin/init ,它是乙個二進位制可執行檔案,為系統的初始化程式,而/etc/inittab是它的配置檔案,我們可以通過/etc/inittab來一睹 它的功能, 裡面的內容是一種固定的文字格式,id:runlevels:action:process

我們來通過它的內容來學習它之前,先了解寫執行級別的分類(0-6):

0: 關機 half

1: 單使用者模式 singel user

2: 多使用者模式 multi user , 不提供nfs服務 without nfs

3: 完全多使用者字元模式 full multiuser text mod

4: 系統預留 officially undefined

5: 圖形登入介面 graphical login

6: 重啟 reboot

2. 關於etc/rc.d/rc.sysyinit 和 /etc/rc.d/rc.nd

在inittab檔案中,我們了解到rc.sysinit是系統執行的第乙個指令碼,那麼它的作用都有哪些呢?如果有shell指令碼基礎的話可以用vim開啟這個檔案來看看,它有900多行...是linux裡最牛的指令碼,總結下它的作用,有如下幾點:(一定要牢記,必要時我們要重寫它!

1. 啟用udev和selinux

2. 通過讀取/etc/sysct1.conf來設定核心引數

3. 設定系統時鐘

4. 設定鍵盤對映

5. 啟動交換分割槽。

6. 設定主機名

7. 檢查跟檔案系統,並且如果沒有錯誤,以讀寫的方式來重新掛載檔案系統 (重要)

8. 啟用raid和lvm裝置

9. 啟動磁碟限額

10 掛載其他/etc/fstab裡定義的尚未被掛載的裝置

11. 清理過時的檔案鎖和pid檔案

12. 啟動服務/etc/rc.d/rcn.d

/etc/rc.d/rcn.d 是乙個存放了系統啟動是載入的服務的資料夾,通過inittab,我們知道了,它的編號對應相應的啟動執行級別。

需要說明的是,它裡面的檔案,以我的為例 以k開頭的代表stop,以s開頭的代表啟動start,數字越小,有限級別越高

3./etc/fstab檔案

它定義了系統初始化掛載的裝置,對系統的啟動至關重要,rc.sysinit通過讀取它來實現系統分割槽的掛載

簡單的流程圖

linux開機的基本流程:

1. 載入 bios 的硬體資訊; 

2. 讀取 mbr 的 kernel loader (亦即是 lilo, grub, spfdisk 等等)開機資訊; 

3. 載入 kernel 的作業系統核心資訊; 

4. kernel 執行 init 程式並取得 run-level 資訊; 

5. init 執行 /etc/rc.d/rc.sysinit 檔案; 

6. 啟用核心的外掛程式式模組 (/etc/modules.conf); 

7. init 執行 run-level 的各個批次檔( scripts ); 

8. init 執行 /etc/rc.d/rc.local 檔案; 

9. 執行 /bin/login 程式;

流程詳解:

1--查詢bios的基本資訊,了解整個系統的硬體狀態,比如cpu,記憶體,顯示卡,網絡卡等。

2--讀取主機mbr(硬碟的第乙個扇區)的boot loader. windows不支援linux的分割槽格式.所以,用windows的boot.ini是查不到linux的系統的.一般我裝系統都是先裝windows再裝linux,然後用grub來做boot loader

3--載入核心資訊,在grub中選擇linux系統之後,主機就會跑到linux所在的硬碟下面載入linux的核心資訊。通常都在目錄/boot下面,

4--執行init程式,也就是 sbin/init程式,這個程式會呼叫/etc/inittabd的資訊並獲得run-level等級,(等級分類上面已經介紹過了)

init程序是系統所有程序的起點,它的程序號為1,init程序是所有程序的發起者和控制者。如果init程序出現了問題,那麼系統將不可用。init的程序的作用有兩個,一是扮演程序之父,系統中任何程序都作為它的子程序並以它作為參照;二是通過inittab檔案管理run-level執行級別。

5--執行/etc/rc.d/rc.sysinit指令碼,/etc/rc.d/rc.sysinit是init程式執行的第乙個指令碼,它的作用是初始化linux系統、配置環境,例如

(1)設定網路環境,/etc/sysconfig/network,比如主機,閘道器,dns

(2)掛載/proc,此檔案是乙個特殊的檔案,大小為0,因為它的位置是在記憶體中。

(3)設定時間,設定字型等。。。

6--由於我們的核心越來越聰明,所以呢,我們可以選擇使用模組的型態 ( 這個在後面也會繼續說明 ) 來進行驅動程式的載入!那麼如果系統原本找不到的模組 ( 例如早期的 via-rhine 晶元組 ) 就可以在這個檔案裡面 /etc/modules.conf 寫入呢!(不一定非要單獨列出)

7--init執行相應的run-level等級的指令碼,rcx.d中的指令碼有的是以s開頭,有的是以k開頭,指令碼執行的順序是從小到大首先終止以k開頭的服務,然後啟動以s開頭的服務。到/etc/rc.d目錄中,不同的level會有不同的目錄.如啟動3模式,會有個rc3.d目錄,裡面就儲存著服務.其中,s(start)開頭的表明開機啟動,k(kill)開頭的表明開機不啟動.數字表示啟動順序.數字越小,啟動越早.

8--執行rc.lcoal指令碼,一般情況下,/etc/rc.d/rc.local是作為初始化指令碼的最後乙個檔案,所以在開機的時候,如果我們想啟動某個服務,我們可以在這個檔案中新增一些執行的指令碼命令,比如說crond服務、httpd服務隨機器啟動時而啟動等

9--執行/bin/login程式

login程式會提示使用者輸入使用者名稱和密碼,並會檢查輸入的正確與否,正確將為使用者初始化環境,並將控制權交給shell。

linux開機流程詳解

載入 bios 的硬體資訊並進行自我測試,並依據謳定取得第乙個可開機的裝置 讀取並執行第乙個開機裝置內 mbr 的 boot loader 亦即是 grub,spfdisk 等程式 依據 boot loader 的設定載入 kernel kernel 會開始偵測硬體與載入驅動程式 在硬體驅動成功後,...

linux系統開機流程詳解

今天,我們主要來談談計算機系統的啟動流程 1 bios啟動 bios是寫入到主機板上的乙個韌體 韌體就是寫入到硬體上的乙個軟體程式 開機的時候,bios是計算機系統會主動執行的第乙個程式。bios主要的乙個功能就是儲存了磁碟的啟動順序,它會按照啟動順序去讀取能夠開機的硬碟的第乙個扇區的mbr資訊 2...

Linux開機流程

1,bios自檢,檢測硬體,決定啟動介質 bios為寫入到主機板上的一塊快閃儲存器或eeprom的程式,它在開機時候執行,並通過bios程式去載入cmos的資訊,並通過cmos內的設定取得主機的各項硬體配置,bios程式也可以修改cmos當中的引數,一般使用del按鍵進入bios設定介面。2,從硬碟...