您好,登錄后才能下訂單哦!
第一步: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è)備.
第二步:加載運(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中使用)
功能:提供一個(gè)菜單,允許用戶(hù)選擇要啟動(dòng)的系統(tǒng)或不同的內(nèi)核版本; 把用戶(hù)選定的內(nèi)核裝載到RAM中的特定空間中,解壓、展開(kāi),而后把系統(tǒng)控制權(quán)移交給內(nèi)核.
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 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)初始化及之后的流程
運(yùn)行流程:
首先讀取/etc/init/rcS.conf配置文件,此配置文件共定義完成兩個(gè)功能
1.實(shí)現(xiàn)系統(tǒng)初始化
通過(guò)運(yùn)行系統(tǒng)初始化腳本實(shí)現(xiàn)系統(tǒng)初始化
系統(tǒng)初始化腳本:/etc/rc.d/rc.sysinit
其功能:(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í)別
注意:(如果在第二步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
示例:
第七步:按照定義的系統(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/目錄下。
服務(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目錄的軟鏈接
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í)別)
這些目錄下面各有很多K##SCRIPT-NAME和S##SCRIPT-NAME的軟鏈接文件,
其鏈接對(duì)象都是/etc/rc.d/init.d/目錄下同SCRIPT-NAME的服務(wù)腳本文件。
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è)配置文件
配置文件中通過(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))
/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]
修改指定的鏈接類(lèi)型:chkconfig [--level LEVELS] name <on|off|reset>
--level LEVELS:指定要控制的級(jí)別;默認(rèn)為2,3,4,5
添加: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ù)。
可以看到它鏈接的并不是/etc/rc.d/init.d/目錄下面的服務(wù)腳本,而是/etc/rc.d/rc.local這個(gè)腳本。
從腳本注釋中可以看出其功用
因此,如果希望一些程序能開(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)圖像終端。
自此,系統(tǒng)啟動(dòng)完成。
注:第六到八步,都是init程序通過(guò)配置文件實(shí)現(xiàn)。
免責(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)容。