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

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

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

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

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

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

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

2016216120312292.png (500×367)

  下面詳細(xì)介紹每一步:

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

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

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

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

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

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

2016216120335483.png (538×238)

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

  其中,如上圖紅框中所示

  1、run-levels運(yùn)行級別有7個(gè),0—6分別如下:

  0 —— halt 關(guān)機(jī)

  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個(gè)運(yùn)行級別來進(jìn)行切換

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

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

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

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

2016216120358904.png (316×35)

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

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

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

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

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

  加載完基礎(chǔ)服務(wù)后,就要根據(jù)不同的運(yùn)行級別去啟動相對應(yīng)的下的目錄,它的工作原理是先去判斷系統(tǒng)的默認(rèn)運(yùn)行級別即第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這個(gè)目錄,這個(gè)目錄里放的腳本是真正的腳本,而rcN.d里放置的都是init.d目錄里的軟連接,也就是說所有rcN.d里的文件最終都需要來init.d里找真正的腳本

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

2016216120456913.png (613×180)

2016216120516144.png (474×272)

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