linux系統啟動過程及運行等級詳解


一、啟動過程

1. 開機流程簡述

1)加載BIOS硬件信息,並獲取第一個啟動設備的代號

2)讀取第一個啟動設備的MBR的引導加載程序的啟動信息

3)加載核心操作系統的核心信息,核心開始解壓縮,並且嘗試驅動所有硬件設備

4)核心執行init程序並獲取運行信息

5)init執行/etc/rc.d/rc.sysinit文件

6)啟動核心的外掛模塊(/etc/modprobe.conf)

7init執行運行的各個批處理文件(Script

8)init執行/etc/rc.d/rc.local

9)執行/bin/login程序,等待用戶登錄

10)登錄之后開始以shell控制主機

如下圖:

clip_image002

 

2. 獲取運行等級

在第4步中,init是系統第一個執行的程序(PID1,它讀取文件/etc/inittab來獲取運行等級(Run level,后面它就是通過這個運行等級的設置值來啟動不同的服務項目的。

3. 根據運行等級啟動腳本

在第7步中,init根據前面獲取的運行等級,來啟動相關的服務。那么服務腳本存放在哪里呢?

服務腳本根據運行等級N存放在/etc/rc.d/rcN.d目錄中,如下圖所示:

clip_image004

選其中一個目錄,如rc3.d查看一下里面的文件,可以發現里面都是鏈接文件:

clip_image006

它們都是以K或者S為開頭的文件,鏈接到/etc/rc.d/init.d里的shell腳本。這些腳本都使用case…esac語法,而且支持的變量($1)主要有startstop,一般來說,如果想要啟動一些服務,譬如sysstat,需要使用:

/etc/rc.d/init.d/sysstat start

如果關閉該服務,就使用:

/etc/rc.d/init.d/sysstat stop

所以要在運行等級3下執行某個服務,就要將其寫入/etc/rc.d/rc3.d中,但既然服務已經在/etc/rc.d/init.d(為了方便,系統建了一個符號鏈接/etc/init.d指向了/etc/rc.d/init.d)里建好了,自然可以使用鏈接方式鏈接到/etc/rc.d/init.d/內的相關shell腳本,不過考慮到start或stop變量,就有了S和K開頭的文件名了。

另外,不同的服務有可能是相關聯的,譬如,要啟動WWW服務,總需要網絡,所以/etc/rc.d/init.d/network就需要先啟動,於是系統通過在S或K后面接一個數字來表示執行權限,以決定執行順序。總結一下:

· 在/etc/rc.d/rcN.d內以S開頭的文件,為開機時需要啟動的服務

· 在目錄中以K開頭的文件,為關機時需要關閉的服務

· S和K后面接的數字,表示該文件的執行權限,數字越小權限越大,越早被執行

二、運行等級

1. linux7個運行等級

· 0 - halt:系統關機,默認運行等級不能設為0,否則不能正常啟動

· 1 - single user mode:單用戶維護模式,root權限,用於系統維護,禁止遠程登陸

· 2 - Multi-user,without NFS:多用戶模式,和等級3類似(沒有NFS)

· 3 - Full multi-user mode:完整的含有網絡功能的多用戶純文本模式

· 4 - unused:系統未使用,保留給用戶自定義

· 5 - X11:與等級3類似,但使用X Windows

· 6 - reboot:重新啟動,默認運行等級不能設為6,否則不能正常啟動

2. 查看當前運行等級

使用runlevel命令,結果會顯示兩個數字,第一個數字表示前一個運行等級,第二個表示當前運行等級,如果沒切換過,則第一個數字顯示為N

3. 臨時切換運行等級

使用命令init RunLevel,RunLevel為你需要切換的運行等級。但重啟后恢復原來的運行等級。

另外,如果系統安裝了X-Windows,而且當前運行等級不是5,可以直接輸入startx開啟圖形界面,但是奇怪的是並不影響當前運行等級(筆者的系統是centos6.5系統)。

4. 修改默認運行等級

編輯 /etc/inittab文件:

clip_image008

將id后面的數字改為你需要的運行等級,保存,重啟。

三、總結

本文主要想理清楚的其實是運行等級執行權限這些在linux系統中起到的作用,所以開篇簡單的講述了一下開機流程,然后抓其中的兩個步驟,講解系統如何根據運行等級組織腳本文件,並通過執行權限去執行相應的服務腳本,最后深入講述運行等級的具體意義,以及改變運行等級的方法。

在這里聲明一下,本文講的開機過程根據不同的系統會有一定的差異(特別是centos7.x系統),但是本質上還是這一套思路。

四、參考

1.《鳥哥的linux私房菜》(第二版)

2. Linux啟動順序、運行級別及開機啟動

3. Linux運行級別有哪些?怎么查看修改運行級別?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM