一、Linux內(nèi)核的組成
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的內(nèi)蒙古網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!相關(guān)概念:
Linux系統(tǒng)的組成部分:內(nèi)核+根文件系統(tǒng)
內(nèi)核:進程管理、內(nèi)存管理、網(wǎng)絡(luò)協(xié)議棧、文件系統(tǒng)、驅(qū)動程序。
IPC(Inter-Process Communication進程間通信):就是指多個進程之間相互通信,交換信息的方法。Linux IPC基本上都是從Unix平臺上繼承而來的。主要包括最初的Unix IPC,System V IPC以及基于Socket的IPC。另外,Linux也支持POSIX IPC。
運行中的系統(tǒng)環(huán)境可分為兩層:內(nèi)核空間、用戶空間;
內(nèi)核空間:內(nèi)核代碼(系統(tǒng)調(diào)用)
用戶空間:應(yīng)用程序(進程或線程)
內(nèi)核設(shè)計流派:
單內(nèi)核設(shè)計:把所有的功能集成于同一個程序;(Linux)
微內(nèi)核設(shè)計:每種功能都使用一個單獨的子系統(tǒng)實現(xiàn);(Windows solarls)
Linux內(nèi)核特點:
(1)支持模塊化:.KO(kernel object)
(2)支持模塊運動時動態(tài)裝載或卸載
組成部分:
核心文件:/boot/Vmliuz-VERSION-release
ramdirk:
CentOS5:/boot/initrd-VERSION-release.img
CentOS6,7:/boot/initramfs-VERSION-release.img
二、CentOS系統(tǒng)啟動流程
總體啟動順序:
POST(加點自檢)-->Boot Sequence(BIOS:基本輸入輸出系統(tǒng))-->Boot Loader(MBR:主引導(dǎo)記錄)-->Kernel(ramdisk)-->rootfs(根文件系統(tǒng))-->switchchroot-->/sbin/init/(/etc/inittab /etc/init/*.conf)-->設(shè)定運行級別-->系統(tǒng)初始化腳本-->關(guān)閉啟動相應(yīng)服務(wù)-->啟動終端
總流程圖:
各流程細化說明:
1、POST加電自檢
主要是檢測硬件設(shè)別是否能正常的運行,然而實現(xiàn)自檢功能主要是由鑲嵌在主板芯片(CMOS)上的BIOS(basic input output system)程序,檢測沒問題之后進行硬件設(shè)備的初始化。
2、Boot Sequence(啟動管理程序):選擇啟動順序加載MBR
Boot Sequence是一個程序,它依賴于某個硬盤硬件,準確的說是第一個硬盤扇區(qū)的MBR,從而按次序查找各引導(dǎo)設(shè)備。
3、MBR引導(dǎo),bootloader引導(dǎo)加載器,啟動程序
MBR(Master Boot Record):此記錄在0磁道1扇區(qū),總共為512字節(jié),前446字節(jié)為bootloder,后64字節(jié)為分區(qū)表信息,主分區(qū)加上擴展分區(qū)不能大于四個,最后2個字節(jié)為校驗信息,為55AA。提供一個菜單,允許用戶選擇要啟動的系統(tǒng)或不同的內(nèi)核版本;把用戶選定的內(nèi)核裝載到RAM中的特定空間中,解壓、展開,而后把系統(tǒng)控制權(quán)移交給內(nèi)核。
4、kernel內(nèi)核實現(xiàn)
kernel自身初始化,實現(xiàn)功能,借助ramdisk探測可識別的程序,以自讀方式掛載根文件系統(tǒng),運行應(yīng)用程序:/sbin/init
5、/sbin/init/管理用戶空間服務(wù)進程
設(shè)定運行級別,進行初始化腳本,關(guān)閉或啟動相應(yīng)的程序,啟動終端。
GRUB(GRand Unified Bootloader)加載內(nèi)核,就是MBR中的前 446 個字節(jié),是BooTLoader的一種,它的作用是要選擇要啟動的內(nèi)核。
GRUB相關(guān)說明:
演示:
………………………………………………………………………………………………………………………
主要是由device.map,menulst,stage1,stage2,以及一系列的stage1_5組成。
device.map:存放的是內(nèi)核文件的根分區(qū)
menu.lis:為菜單列表,里面為可選擇的菜單列表,存放于stage2中。
stage:用于grub引導(dǎo)程序過大,所以分2段引導(dǎo),第一段存放在MBR中,第二段存放于內(nèi)核文件系統(tǒng)中,第一段引導(dǎo)完成后可以找到第二段。 但是,第二段是存放于內(nèi)核文件系統(tǒng)中的,此時還沒有格式化文件系統(tǒng),如何可以訪問到第二段的menu.lst,就需要借助于中間層 stage1_5,有它來協(xié)助 stage1 段來訪問stage2階段。stage1_5通常位于stage1 字段后的 63 個扇區(qū)。 由于stage2 在內(nèi)存中存放可以使用的文件系統(tǒng)不確定,所以這就是有多個stage1_5 的原因。
Grub Legacy:分三階段
stage1:存放在MBR上
stage1_5:存放在MBR之后的扇區(qū),讓stage1中的bootloader能識別stage2所在的分區(qū)上的文件系統(tǒng);
stage2:磁盤分區(qū)(/boot/grub/)
引導(dǎo)加載程序先讀取MBR上的gurb第一階段,由于MBR很小只有512字節(jié)采用grub這種方式引導(dǎo)程序,隨后讀取扇區(qū)中的stage1.5階段,讀取1.5階段以后從而就能驅(qū)動第二階段stage2所在的磁盤分區(qū),stage2是存放在磁盤分區(qū)上的還包括了內(nèi)核文件及ramdisk等都在這個分區(qū)上存放的;這就是為什么通過Bootloader之grub就能夠加載內(nèi)核文件的原因。
注意:當(dāng)前硬件平臺,主板BIOS必須能識別硬盤,然后BIOS才能加載硬盤中的Bootloader,磁盤中的Bootloader自身加載完以后,就能夠識別當(dāng)前主機上的硬盤設(shè)備了。
但硬盤設(shè)備能識別,并不代表硬盤上的文件系統(tǒng)能識別,因為文件系統(tǒng)是額外附加的一層軟件組織的文件結(jié)構(gòu),所以要能夠?qū)右环N文件系統(tǒng),必須要用到文件系統(tǒng)驅(qū)動;對應(yīng)的應(yīng)用程序必須能識別和理解這樣的文件系統(tǒng)才可以,這種程序就稱為文件系統(tǒng)驅(qū)動;grub的1.5階段就是給gurb提供了文件系統(tǒng)驅(qū)動的,從而就能夠訪問對應(yīng)的第二階段和內(nèi)核所在的分區(qū)了,這通常是一個基本磁盤分區(qū);所以grub第二階段以及內(nèi)核和ramdisk文件通常都會放在一個基本磁盤分區(qū)上;因為grub驅(qū)動不了邏輯卷這種高級接口。
stage2一般是掛載至/boot/grub/目錄下;grub也有自己的配置文件:/boot/grub/grub.conf且通常有個符號鏈接文件:/etc/grub.conf;
stage2的功用:
(1)提供菜單或交互式接口;
(2)能加載用戶選擇的內(nèi)核或操作系統(tǒng);
(3)為菜單通過了保護機制。
/boot/grub/grub.conf配置文件詳解:
[root@centos6 grub]# ll /etc/grub.conf #/etc/grub.conf /boot/grub/grub.conf為連接文件 lrwxrwxrwx. 1 root root 22 8月 11 03:29 /etc/grub.conf -> ../boot/grub/grub.conf [root@centos6 grub]# cat /boot/grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 #設(shè)定默認啟動菜單項,默認為0開始 timeout=5 #指定菜單等待選擇的時長 splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz #指定菜單的背景圖片的路徑,為xpm格式,采用gzip壓縮 hiddenmenu #是否影藏菜單 password [--md5] $1$JO0kw$z.qtBMH.KL4A6qZ7dK4N30 #菜單編輯認證 title CentOS 6 (2.6.32-642.el6.x86_64) #定義菜單項 root (hd0,0) #本次grub查找stage2及其kernel文件所在設(shè)備分區(qū),指定grub的根 kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=240533cf-b37f-4460-974f-702bab867da5 nomodeset rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet #需要啟動的內(nèi)核 initrd /initramfs-2.6.32-642.el6.x86_64.img #內(nèi)核匹配的ramfs文件 password [--md5] STRING #啟動內(nèi)核選定的內(nèi)核或操作系統(tǒng)是進行的認證 [root@centos6 grub]#
進入單用戶模式:
1)編輯grub菜單,選定要編輯的title,而后使用e命令
2)在選定的kernel后附加1 ,s 或single
3)在kernel所在的行,鍵入b鍵
演示:
啟動時按e鍵:
上下選擇到kernel后按e編輯輸入1或s、S、single,再次按b鍵重啟
6、根切換
在掛載根文件系統(tǒng)時為了避免內(nèi)核中有bug或操作過程中有bug導(dǎo)致根文件系統(tǒng)被損壞,先只讀掛載根文件系統(tǒng),加載完成后才讀寫掛載,完成整個掛載根文件系統(tǒng)后,直接去找/sbin/init程序,即開始運行用戶空間的第一個程序。
用戶空間啟動流程
7、/sbin/init程序
init程序主要依賴于配置文件:/etc/inittab,大體分為:設(shè)定默認啟動級別 --> 設(shè)定系統(tǒng)初始化腳本 --> 啟動對應(yīng)級別的服務(wù) --> 打印各終端登錄界面(如果級別為3處理提供文本登錄界面,如果級別為5還提供圖形登錄界面)
8、設(shè)置默認運行級別
(1)運行級別:為了系統(tǒng)的運行或維護等目的而設(shè)定的機制;
0-6:共7個級別;
0:關(guān)機,shutdown
1:單用戶模式(single user),root用戶,無須認證,維護模式;
2:多用戶模式(multi user),會啟動網(wǎng)絡(luò)功能,但不會啟動NFS,維護模式;
3:多用戶模式(multi user),完全功能模式,文本界面;
4:預(yù)留級別:目前無特別使用目的,但習(xí)慣以同3級別功能使用;
5:多用戶模式(multi user),完全功能模式,圖形界面;
6:重啟,reboot
圖示:
讀取配置文件:/etc/inittab
(2)配置文件:/etc/inittab定義了很多功能,每一行定義一種操作(action)以及與之對應(yīng)的process(僅適用于CentOS 5),一行就定義了init要執(zhí)行的任務(wù),甚至是一堆任務(wù),每一行的語法格式為: id:runlevels:action:process
id為一個任務(wù)的標識符;
runlevels:在哪些運行級別下啟動此任務(wù);例:3,2345,也可為空表示所有級別;
action:在什么條件下啟動此任務(wù);
wait:等待切換至此任務(wù)所在的級別時執(zhí)行一次(剛剛切換進來時);
respawn:一旦此任務(wù)終止時,就自動重啟;(如:登錄終端執(zhí)行l(wèi)ogout登出后會再次啟動)
initdefault:設(shè)定默認允許級別;此時process省略為空;
sysinit:設(shè)定系統(tǒng)初始化方式,此處一般為指定/etc/rc.d/rc.sysinit腳本;(CentOS 5,6都用到此腳本,CentOS 7是靠systemd完成的),在CentOS 6中僅保留此配置文件中設(shè)定啟動運行級別的功能。
process:具體任務(wù);通常為應(yīng)用程序,或腳本,或二進制的程序,取決于自定義。
演示:
9、系統(tǒng)初始化腳本
系統(tǒng)初始化腳本:/etc/rc.d/rc.sysinit
(1)設(shè)置主機名;
(2)設(shè)置歡迎信息;
(3)激活udev和selinux;
(4)掛載/etc/fstab文件中定義的所有文件系統(tǒng);
(5)檢測根文件系統(tǒng),并以讀寫方式重新掛載根文件系統(tǒng);(重新掛載是指根文件檢測完之后)
(6)設(shè)置系統(tǒng)時鐘;
(7)根據(jù)/etc/sysctl.conf文件來設(shè)置內(nèi)核參數(shù);
(8)激活lvm即軟raid設(shè)備;
(9)激活swap設(shè)備;
(10)加載額外設(shè)備的驅(qū)動程序;(內(nèi)核加載驅(qū)動只加載根文件系統(tǒng)的)
(11)清理操作;
注意:在init配置文件:/etc/inittab中,有一行內(nèi)容是定義/etc/rc.d/rc.sysinit,此腳本文件是負責(zé)完成系統(tǒng)初始化的腳本文件。
10、關(guān)閉/啟動對應(yīng)級別下的服務(wù)
腳本文件/etc/rc.d/rc作用為當(dāng)級別切換時啟動或停止服務(wù);此腳本接受傳遞的參數(shù)給腳本中$runlevel變量,然后,讀取/etc/rc$runlevel.d/K*和/etc/rc$runlevel.d/S*所有文件,這些文件就是為什么開機啟動后,有些服務(wù)會自動啟動,有些服務(wù)沒有啟動的原因。
K*:要停止的服務(wù),K##*,優(yōu)先級,數(shù)字越小,越優(yōu)先關(guān)閉,依賴的服務(wù)先關(guān)閉,然后再關(guān)閉被依賴的。
S*:要啟動的服務(wù),S##*,優(yōu)先級,數(shù)字越小,越是優(yōu)先啟動,被依賴的服務(wù)先啟動,而依賴的服務(wù)后啟動。
/etc/rc.d/init.d目錄還有個鏈接目錄為/etc/init.d目錄,這兩目錄下文件相同。
如上訴定義將會啟動3級別下的以S打頭的進程:
圖示:
11、啟動終端(圖形終端)
操作系統(tǒng)啟動完成
三、系統(tǒng)啟動流程總結(jié)。
內(nèi)核級別:
1.POST做開機啟動時候的硬件檢測功能
2.BootSequence(BIOS)啟動加載主引導(dǎo)分區(qū)MBR中的引導(dǎo)加載器程序BootLoader
在LInux現(xiàn)行的BootLoader是三段劃分(打破446字節(jié)限制)的GRUB程序,
第1段寫在BootLoader中
第1.5段在其后扇區(qū)用于文件系統(tǒng)的引導(dǎo)
第2段在boot/grub中提供內(nèi)部接口和調(diào)用系統(tǒng)內(nèi)核kernel
3.Kernel識別硬件、加載驅(qū)動、只讀掛載根文件系統(tǒng)、同時交付給用戶空間第一個程序/sbin/init
此處特別要注意,系統(tǒng)發(fā)行商為了適應(yīng)多種硬件接口驅(qū)動調(diào)用,會在第一次安裝系統(tǒng)時候,自動識別硬件接口,并調(diào)用唯一驅(qū)動程序來生成ramdisk文件,以內(nèi)存當(dāng)磁盤做虛根,驅(qū)動接口后會切換到真實的根文件系統(tǒng)上
CentOS 5系列是initrd,當(dāng)磁盤映像文件會造成二次緩存緩沖
CentOS 6/7系列改進為initramfs,以文件系統(tǒng)形式可以不二次占用緩存和緩沖
用戶空間級別
4./sbin/init接管后更具其配置文件來初始化
5.根據(jù)/sbin/init中的配置會設(shè)置默認運行級別,以及一些在/etc/init.d/設(shè)置的開機服務(wù)
6./etc/rc.d/rc.sysinit運行系統(tǒng)初始化腳本,完成系統(tǒng)初始化
7.關(guān)閉對應(yīng)級別下需要停止的服務(wù),啟動對應(yīng)級別下需要開啟的服務(wù)
8.設(shè)置登錄終端
本文出自小耳朵綜合總結(jié),如有相識之處可留言小耳朵管理員:)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞名稱:CentOS系統(tǒng)啟動流程你懂否-創(chuàng)新互聯(lián)
路徑分享:http://bm7419.com/article16/ddhhdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、軟件開發(fā)、網(wǎng)站營銷、品牌網(wǎng)站建設(shè)、面包屑導(dǎo)航、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容