溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

CentOS 6系統(tǒng)啟動(dòng)流程詳解

發(fā)布時(shí)間:2020-06-05 12:42:23 來(lái)源:網(wǎng)絡(luò) 閱讀:663 作者:puro 欄目:移動(dòng)開(kāi)發(fā)

第一步:POST 加電自檢(Powered On Self-Test)

通過(guò)主板上集成RAM中的BIOS程序?qū)崿F(xiàn)POST
主板上的ROM:CMOS:主板上的一塊可讀寫(xiě)的并行或串行FLASH芯片,是用來(lái)保存BIOS的硬件配置和用戶(hù)對(duì)某些參數(shù)的設(shè)定。(BIOS設(shè)置程序一般都被廠商整合在芯片中,因此BIOS設(shè)置有時(shí)也被叫做CMOS設(shè)置。)
BIOS:Basic Input and Output System
通過(guò)BIOS可以設(shè)置按次序查找各引導(dǎo)設(shè)備,第一個(gè)有引導(dǎo)程序的設(shè)備即為本次啟動(dòng)要用到的設(shè)備.
CentOS 6系統(tǒng)啟動(dòng)流程詳解



第二步:加載運(yùn)行bootloader
bootloader:引導(dǎo)加載器(程序)
Windows中使用的bootloader是:ntloader
Linux:LILO(LIinux LOader)
    GRUB:Grand Uniform Bootloader
           GRUB 0.X:Grub Legacy(CentOS 6中使用)
           GRUB 1.X:Grub2   (CentOS 7中使用)

CentOS 6系統(tǒng)啟動(dòng)流程詳解                            
功能:提供一個(gè)菜單,允許用戶(hù)選擇要啟動(dòng)的系統(tǒng)或不同的內(nèi)核版本; 把用戶(hù)選定的內(nèi)核裝載到RAM中的特定空間中,解壓、展開(kāi),而后把系統(tǒng)控制權(quán)移交給內(nèi)核.

CentOS 6系統(tǒng)啟動(dòng)流程詳解

ext系列及GPT系列的文件系統(tǒng)的bootloader都在MBR中的前446個(gè)字節(jié),MBR為該磁盤(pán)的第一個(gè)扇區(qū)(1st stage),共512字節(jié)。        
MBR:Master Boot Record
前446bytes:bootloader
然后64bytes:fat (GPT文件系統(tǒng)中不同)
2bytes:55AA (分區(qū)表有效性標(biāo)識(shí))
加載運(yùn)行GRUB共可分為三步
1st stage:
Partition:filesystem driver, 1.5 stage
Partition:/boot/grub, 2nd stage

GRUB運(yùn)行詳細(xì)過(guò)程可以查看我的另一篇博客:


第三步:加載內(nèi)核
1,內(nèi)核加載完成后自身初始化
2,探測(cè)可識(shí)別到的所有硬件設(shè)備;
3,加載硬件驅(qū)動(dòng)程序;(有可能會(huì)借助于ramdisk加載驅(qū)動(dòng),ramdisk文件需要和內(nèi)核放在同一分區(qū),如果需要用到,需要在前一步grub中指定其位置,如果內(nèi)核編譯時(shí)已經(jīng)將硬件設(shè)備的驅(qū)動(dòng)程序編譯進(jìn)內(nèi)核了,就不需要ramdisk了)

注:有關(guān)ramdisk可以查看我的另一篇博客:


第四步:以只讀方式掛載根文件系統(tǒng)


第五步:切換根(switchroot)


第六步:運(yùn)行用戶(hù)空間的第一個(gè)應(yīng)用程序:/sbin/init,實(shí)現(xiàn)系統(tǒng)初始化,然后設(shè)置系統(tǒng)運(yùn)行級(jí)別。

/sbin/init/通過(guò)它的配置文件定義了其運(yùn)行的流程
配置文件:/etc/inittab和/etc/init/目錄下所有以.conf結(jié)尾的文件。


/etc/inittab:僅被用于定義默認(rèn)運(yùn)行級(jí)別(CentOS 6中)

CentOS 6系統(tǒng)啟動(dòng)流程詳解

注意:在CentOS 5中此文件不是僅用于定義系統(tǒng)默認(rèn)運(yùn)行級(jí)別。還用于定義其系統(tǒng)初始化及之后的流程

例如:id:3:initdefault: 
    si::sysinit:/etc/rc.d/rc.sysinit(設(shè)定系統(tǒng)初始化方式)
   l0:0:wait:/etc/rc.d/rc  0
    l1:1:wait:/etc/rc.d/rc  1(等到運(yùn)行級(jí)別為1時(shí)啟動(dòng)或關(guān)閉/etc/rc.d/rc3.d/目錄下的服務(wù)腳本所控制服務(wù))
    …………
    l6:6:wait:/etc/rc.d/rc  6

具體請(qǐng)查看CentOS 5系列中的配置文件/etc/inittab

                           

此配置文件設(shè)置方式:

每行定義一種action以及與之對(duì)應(yīng)的process

格式   id:runlevels:action:process    (共四個(gè)字段,以:隔開(kāi))   
                    
第一個(gè)字段:id:一個(gè)任務(wù)的標(biāo)識(shí)符;
第二個(gè)字段:runlevels:在哪些級(jí)別啟動(dòng)此任務(wù);#,###,也可以為空,表示所有級(jí)別;
第三個(gè)字段:action:在什么條件下啟動(dòng)此任務(wù);
第四個(gè)字段:process:任務(wù);
                            
action種類(lèi):
      wait:等待切換至此任務(wù)所在的級(jí)別時(shí)執(zhí)行一次;
      respawn:一旦此任務(wù)終止,就自動(dòng)重新啟動(dòng)之;
      initdefault:設(shè)定默認(rèn)運(yùn)行級(jí)別;此時(shí),process省略;
      sysinit:設(shè)定系統(tǒng)初始化方式,此處一般為指定/etc/rc.d/rc.sysinit腳本;


/etc/init/目錄下所有以.conf結(jié)尾的文件 :定義系統(tǒng)初始化及之后的流程   

CentOS 6系統(tǒng)啟動(dòng)流程詳解


運(yùn)行流程:

首先讀取/etc/init/rcS.conf配置文件,此配置文件共定義完成兩個(gè)功能
1.實(shí)現(xiàn)系統(tǒng)初始化
CentOS 6系統(tǒng)啟動(dòng)流程詳解


通過(guò)運(yùn)行系統(tǒng)初始化腳本實(shí)現(xiàn)系統(tǒng)初始化
系統(tǒng)初始化腳本:/etc/rc.d/rc.sysinit


CentOS 6系統(tǒng)啟動(dòng)流程詳解

其功能:(1) 設(shè)置主機(jī)名;
    (2) 設(shè)置歡迎信息;
    (3) 激活udev和selinux;
    (4) 掛載/etc/fstab文件中定義的所有文件系統(tǒng); 
    (5) 檢測(cè)根文件系統(tǒng),并以讀寫(xiě)方式重新掛載根文件系統(tǒng); 
    (6) 設(shè)置系統(tǒng)時(shí)鐘; 
    (7) 根據(jù)/etc/sysctl.conf文件來(lái)設(shè)置內(nèi)核參數(shù);
    (8) 激活lvm及軟raid設(shè)備;
    (9) 激活swap設(shè)備;
    (10) 加載額外設(shè)備的驅(qū)動(dòng)程序;
    (11) 清理操作; 

2.定義系統(tǒng)運(yùn)行級(jí)別

CentOS 6系統(tǒng)啟動(dòng)流程詳解
注意:(如果在第二步grub中沒(méi)有指定,而且grub的配置文件中也沒(méi)有設(shè)置系統(tǒng)運(yùn)行級(jí)別此參數(shù)的話,系統(tǒng)運(yùn)行級(jí)別會(huì)按照/etc/inittab配置文件中設(shè)置的定義)

運(yùn)行級(jí)別的意義:為了系統(tǒng)的運(yùn)行或維護(hù)等目的而設(shè)定的機(jī)制;
0-6:7個(gè)級(jí)別;  0:關(guān)機(jī), shutdown
           1:?jiǎn)斡脩?hù)模式(single user),root用戶(hù),無(wú)須認(rèn)證;維護(hù)模式;
           2、多用戶(hù)模式(multi user),會(huì)啟動(dòng)網(wǎng)絡(luò)功能,但不會(huì)啟動(dòng)NFS;維護(hù)模式;
           3、多用戶(hù)模式(mutli user),完全功能模式;文本界面;
           4、預(yù)留級(jí)別:目前無(wú)特別使用目的,但習(xí)慣以同3級(jí)別功能使用;
           5、多用戶(hù)模式(multi user), 完全功能模式,圖形界面;
           6、重啟,reboot
                        
默認(rèn)級(jí)別:3, 5
                    
級(jí)別切換命令:init #
級(jí)別查看命令:
who -r

runlevel 

示例:

CentOS 6系統(tǒng)啟動(dòng)流程詳解


第七步:按照定義的系統(tǒng)運(yùn)行級(jí)別關(guān)閉對(duì)應(yīng)級(jí)別下需要停止的服務(wù),啟動(dòng)對(duì)應(yīng)級(jí)別下需要開(kāi)啟的服務(wù)。


在CentOS 5和6中,系統(tǒng)服務(wù)都被設(shè)計(jì)為一個(gè)單獨(dú)的服務(wù)腳本,可以通過(guò)運(yùn)行這些腳本來(lái)管理系統(tǒng)服務(wù)。


這些服務(wù)腳本都在/etc/rc.d/init.d/目錄下。

CentOS 6系統(tǒng)啟動(dòng)流程詳解

服務(wù)腳本的運(yùn)行方式:


1.腳本路徑加一個(gè)執(zhí)行參數(shù)
# /etc/rc.d/init.d/SRV_SCRIPT  {start|stop|restart|status}
# /etc/init.d/SRV_SCRIPT  {start|stop|restart|status}
/etc/init.d是/etc/rc.d/init.d目錄的軟鏈接
CentOS 6系統(tǒng)啟動(dòng)流程詳解

2.service命令
命令格式:                                        
# service  SRV_SCRIPT   {start|stop|restart|status}


在/etc/rc.d/目錄下面有7個(gè)rc#.d格式的子目錄(#為0-6的整數(shù),對(duì)應(yīng)著七個(gè)系統(tǒng)運(yùn)行級(jí)別)

CentOS 6系統(tǒng)啟動(dòng)流程詳解

這些目錄下面各有很多K##SCRIPT-NAME和S##SCRIPT-NAME的軟鏈接文件,
其鏈接對(duì)象都是/etc/rc.d/init.d/目錄下同SCRIPT-NAME的服務(wù)腳本文件。


CentOS 6系統(tǒng)啟動(dòng)流程詳解


CentOS 5和6中對(duì)單個(gè)運(yùn)行級(jí)別的服務(wù)環(huán)境的配置和系統(tǒng)運(yùn)行中級(jí)別切換后的服務(wù)環(huán)境配置正是基于以上基礎(chǔ)實(shí)現(xiàn)的。


單個(gè)運(yùn)行級(jí)別的服務(wù)環(huán)境的配置流程:


1.讀取/etc/init/rc.cof這個(gè)配置文件CentOS 6系統(tǒng)啟動(dòng)流程詳解


配置文件中通過(guò)運(yùn)行/etc/rc.d/rc這個(gè)腳本來(lái)實(shí)現(xiàn)單個(gè)運(yùn)行級(jí)別的系統(tǒng)服務(wù)環(huán)境配置,在運(yùn)行的同時(shí)傳遞了一個(gè)位置參數(shù) $RUNLEVEL,這個(gè)參數(shù)就是上一步中已經(jīng)定義過(guò)了的系統(tǒng)運(yùn)行級(jí)別。(注意:系統(tǒng)運(yùn)行中級(jí)別切換后的服務(wù)環(huán)境配置也是通過(guò)此腳本實(shí)現(xiàn))


CentOS 6系統(tǒng)啟動(dòng)流程詳解
/etc/rc.d/rc這個(gè)腳本執(zhí)行會(huì)按照給定的位置參數(shù)($RUNLEVEL)運(yùn)行對(duì)應(yīng)的/etc/rc.d/rc#.d/目錄下的那些K和S開(kāi)頭的腳本。其運(yùn)行方式是先依次運(yùn)行以K開(kāi)頭的腳本,順序是##從小到大,運(yùn)行時(shí)會(huì)傳遞一個(gè)執(zhí)行參數(shù)stop。之后再依次運(yùn)行以S開(kāi)頭的腳本,順序是##從小到大,運(yùn)行時(shí)會(huì)傳遞一個(gè)執(zhí)行參數(shù)start。(注:這只簡(jiǎn)要說(shuō)明,具體執(zhí)行方式請(qǐng)參照/etc/rc.d/rc腳本代碼)

因此:K表示是該系統(tǒng)級(jí)別要停止的服務(wù);##表示優(yōu)先級(jí),數(shù)字越小,越是優(yōu)先關(guān)閉,所以若這個(gè)服務(wù)依賴(lài)于其它服務(wù)就應(yīng)該設(shè)置為先關(guān)閉,而被其它服務(wù)所依賴(lài)的服務(wù)應(yīng)該設(shè)置為后關(guān)閉。

S表示該系統(tǒng)級(jí)別要啟動(dòng)的服務(wù);##表示優(yōu)先級(jí),數(shù)字越小,越是優(yōu)先啟動(dòng);所以若被其它服務(wù)所依賴(lài)的服務(wù)應(yīng)該設(shè)置為先啟動(dòng),而這個(gè)服務(wù)依賴(lài)于其它服務(wù)就應(yīng)該設(shè)置為后啟動(dòng)。(##為00-99)


對(duì)系統(tǒng)服務(wù)的管理可以通過(guò)chkconfig命令實(shí)現(xiàn)

chkconfig命令:管控/etc/rc.d/init.d/rc.d/下面每個(gè)服務(wù)腳本在各級(jí)別下的啟動(dòng)或關(guān)閉狀態(tài)

使用格式
查看:chkconfig  --list   [name]

CentOS 6系統(tǒng)啟動(dòng)流程詳解


修改指定的鏈接類(lèi)型:chkconfig  [--level  LEVELS]  name  <on|off|reset>
--level LEVELS:指定要控制的級(jí)別;默認(rèn)為2,3,4,5

CentOS 6系統(tǒng)啟動(dòng)流程詳解                                        
添加:chkconfig  --add  name
刪除:chkconfig  --del  name(只是刪除了服務(wù)腳本的那些軟鏈接)

因此如果想增加一個(gè)系統(tǒng)服務(wù),可以先寫(xiě)一個(gè)服務(wù)腳本,放到/etc/rc.d/init.d/目錄下,再通過(guò)chkconfig命令實(shí)現(xiàn)。

能被添加的服務(wù)的腳本定義格式之一:
#!/bin/bash
#
# chkconfig: LLL  NN NN
# description:  



注意:在rc2.d,rc3.d,rc4.d,rc5.d中都有一個(gè)S99local軟鏈接,即這是幾個(gè)級(jí)別中最后一個(gè)啟動(dòng)的系統(tǒng)服務(wù)。

CentOS 6系統(tǒng)啟動(dòng)流程詳解可以看到它鏈接的并不是/etc/rc.d/init.d/目錄下面的服務(wù)腳本,而是/etc/rc.d/rc.local這個(gè)腳本。

CentOS 6系統(tǒng)啟動(dòng)流程詳解
從腳本注釋中可以看出其功用

因此,如果希望一些程序能開(kāi)機(jī)自動(dòng)運(yùn)行時(shí),又想寫(xiě)服務(wù)腳本,可以直接寫(xiě)入這個(gè)腳本中實(shí)現(xiàn)。


第八步:?jiǎn)?dòng)終端
讀取/etc/init/start-ttys.conf這個(gè)配置文件,完成啟動(dòng)終端的流程。其中會(huì)判定,如果運(yùn)行級(jí)別為5的話,在啟動(dòng)tty1-6之后會(huì)再啟動(dòng)圖像終端。

CentOS 6系統(tǒng)啟動(dòng)流程詳解


自此,系統(tǒng)啟動(dòng)完成。


注:第六到八步,都是init程序通過(guò)配置文件實(shí)現(xiàn)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI