技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 服務(wù)器類 >

解析Linux系統(tǒng)啟動的引導(dǎo)流程

來源:技術(shù)員聯(lián)盟┆發(fā)布時間:2018-01-14 00:48┆點擊:

  LINUX是自由開源軟件,在LINUX里一切都是文件,不管是命令,操作等等都是以文件形式保存,這篇博客來記錄LINUX啟動時的引導(dǎo)流程是通過哪寫文件來完成的.

  使用的LINUX版本是CentOS5,CentOS和Ubuntu都是自己聯(lián)系使用時的較理想版本.

  下面以CentOS5.5版本為例,介紹LINUX的引導(dǎo)流程,具體流程如下:

2016216120312292.png (500×367)

  下面詳細介紹每一步:

  1)第一步firmware固件自檢,主要是進行CMOS/BIOS對硬件進行POST加電自檢,在物理層次上對硬件進行檢測是否正常。例如檢查硬盤是否插好等。

  2)第二步讀取硬盤中MBR的BootLoader,自啟動程序,Linux下常用的自啟動程序是GRUB。這一步主要的功能是載入內(nèi)核。內(nèi)核存放在/boot目錄下

  3)第三步就是載入的內(nèi)核Kernel的過程,

  主要功能是:1、驅(qū)動硬件,Kernel中含有大量驅(qū)動程序。2、啟動init進程。

  4)init進程,主要是讀取/etc/inittab文件,執(zhí)行缺省運行級別,從而繼續(xù)引導(dǎo)。需要注意的是init京城的PID恒為1,是所有進程的父進程,而init進程的負景程是0,為內(nèi)核調(diào)度器Kernel scheduler。

  5)/etc/inittab 定義了初始化的操作。

2016216120335483.png (538×238)

  命令主要格式是:id: runlevels : action : process

  其中,如上圖紅框中所示

  1、run-levels運行級別有7個,0—6分別如下:

  0 —— halt 關(guān)機

  1 —— Single user mode 單用戶模式

  2 —— Multiuser,withoutNFS 多用戶模式但不帶網(wǎng)絡(luò)(text模式)

  3 —— Full multiuser mode 完整功能的多用戶模式(text模式)

  4 —— unused 預(yù)留

  5 —— X11 圖形化多用戶模式

  6 —— reboot 重啟

  可以根據(jù)這7個運行級別來進行切換

  命令為:查看當(dāng)前運行級別 #runlevel、 切換運行級別 #init[0 |1 |2 |3 |4 |5 |6]

  2、而acion中也有幾個比較重要的取值:

  1 initdefault:指定系統(tǒng)缺省啟動的運行級別,如上圖中標(biāo)出,通常用于修復(fù),比如我們要進入單用戶模式,則可以將其設(shè)置為1,不可將默認設(shè)置為0或6,否則無法啟動.

  2sysinit:系統(tǒng)啟動執(zhí)行process中指定的命令

2016216120358904.png (316×35)

  由inittab文件內(nèi)容可以看出,沒有設(shè)置運行級別,即為無論是哪個運行級別,都會執(zhí)行/etc/rc.d/rc.sysinit

  6)initdefault,如第五步所說到的,主要是讀取/etc/inittab中的信息,判斷缺省的運行級別是什么。

  7)/etc/rc.d/rc.sysinit

  在inittab文件中運行到第21行,變是啟動這個腳本。完成系統(tǒng)服務(wù)程序的啟動,如系統(tǒng)環(huán)境變量的設(shè)置、設(shè)置系統(tǒng)時鐘、加載字體、檢查加載文件系統(tǒng)、生成系統(tǒng)啟動信息日志文件等。由于是基礎(chǔ)服務(wù),因為其run-level設(shè)置為空::即任何級別,action設(shè)置為sysinit。即該腳本在任何運行級別下都要啟動,以完成基礎(chǔ)服務(wù)的啟動

  8)基礎(chǔ)服務(wù)啟動后,會執(zhí)行/etc/rc.d/rc這個腳本

  加載完基礎(chǔ)服務(wù)后,就要根據(jù)不同的運行級別去啟動相對應(yīng)的下的目錄,它的工作原理是先去判斷系統(tǒng)的默認運行級別即第6步中的東西,然后再執(zhí)行相應(yīng)的rcN.d目錄下的服務(wù)啟動腳本如圖

2016216120419054.png (341×144)

  9)執(zhí)行/etc/rc.d/rcN.d目錄下的服務(wù)啟動腳本

  看下該目錄下的內(nèi)容:

2016216120437630.png (671×247)

  其中S表示要啟動的腳本,K表示要關(guān)閉的腳本

  數(shù)字表示啟動順序,數(shù)值小的優(yōu)先.主要是對一些服務(wù)的管理

  在這一步里,需要說明一下/etc/rc.d/init.d這個目錄,這個目錄里放的腳本是真正的腳本,而rcN.d里放置的都是init.d目錄里的軟連接,也就是說所有rcN.d里的文件最終都需要來init.d里找真正的腳本

  看一下具體細節(jié):

2016216120456913.png (613×180)

2016216120516144.png (474×272)

  執(zhí)行到這一步,界面就會提示輸入用戶名和密碼了,也就是說系統(tǒng)已經(jīng)起來了,輸入用戶名和密碼的過程后面再說,這次的引導(dǎo)流程就結(jié)束了