Centos7系統(tǒng)啟動流程
1、uefi或BIOS初始化,開始post(power on self test)開機(jī)自檢
這個過程是開機(jī)后,BIOS或UEFI進(jìn)行硬件檢查的階段。檢測:CPU, 內(nèi)存,硬盤等硬件信息。
?
2、加載MBR到內(nèi)存,這里以BIOS為例,BIOS將會直接找硬盤的第一個扇區(qū),找到前446字節(jié),將MBR加載到內(nèi)存中,MBR將告訴程序下一階段去哪里找系統(tǒng)的grub引導(dǎo)。此階段屬于grub第一階段。grub還有1.5階段和2階段。
三部分組成:
引導(dǎo)程序: 446字節(jié)(bootloader)
分區(qū)表: 64字節(jié)
魔數(shù): 2字節(jié)(55AA)
?
3、GRUB階段
grub第1.5和第2階段,信息默認(rèn)存放在扇區(qū)中,如果使用grub-install生成的第2階段的文件是存放在/boot分區(qū)中的。
為了加載內(nèi)核系統(tǒng),不得不加載/boot分區(qū),而加載/boot分區(qū),要有/boot分區(qū)的驅(qū)動,/boot分區(qū)驅(qū)動是放在/boot分區(qū)中的啊,我們好像進(jìn)入死循環(huán)了,Linux是怎么解決的呢?就是靠放在1.5階段中的數(shù)據(jù),放在第一個扇區(qū)后的后續(xù)扇區(qū)中,第1.5階段和2階段總共27個扇區(qū)。
第1.5階段:mbr之后的扇區(qū),識別stage2所在的分區(qū)上的文件系統(tǒng)。
第2階段:開機(jī)啟動的時候看到Grub選項、信息,還有修改GRUB背景等功能都是stage2提供的,stage2會去讀入/boot/grub/grub.conf或者menu.lst等配置文件。
?
4、加載內(nèi)核和initramfs模塊
加載內(nèi)核,核心開始解壓,啟動一些最核心的程序。
為了讓內(nèi)核足夠的輕小,硬件驅(qū)動并沒放在內(nèi)核文件里面。
?
5、內(nèi)核開始初始化,使用systemd來代替centos6以前的init程序
(1)執(zhí)行initrd.target
包括掛載/etc/fstab文件中的系統(tǒng),此時掛載后,就可以切換到根目錄了
(2)從initramfs根文件系統(tǒng)切換到磁盤根目錄
(3)systemd執(zhí)行默認(rèn)target配置
centos7表面是有“運行級別”這個概念,實際上是為了兼容以前的系統(tǒng),每個所謂的“運行級別”都有對應(yīng)的軟連接指向,默認(rèn)的啟動級別時/etc/systemd/system/default.target,根據(jù)它的指向可以找到系統(tǒng)要進(jìn)入哪個模式?
模式:
0 ==> runlevel0.target, poweroff.target
1 ==> runlevel1.target, rescue.target
2 ==> runlevel2.target, multi-user.target
3 ==> runlevel3.target, multi-user.target
4 ==> runlevel4.target, multi-user.target
5 ==> runlevel5.target, graphical.target
6 ==> runlevel6.target, reboot.target
(4)systemd執(zhí)行sysinit.target
有沒有很眼熟?是的,在CentOS6上是被叫做rc.sysint程序,初始化系統(tǒng)及basic.target準(zhǔn)備操作系統(tǒng)
(5)systemd啟動multi-user.target下的本機(jī)與服務(wù)器服務(wù)
(6)systemd執(zhí)行multi-user.target下的/etc/rc.d/rc.local
?
6、Systemd執(zhí)行multi-user.target下的getty.target及登錄服務(wù)
getty.target我們也眼熟,它是啟動終端的systemd對象。如果到此步驟,系統(tǒng)沒有被指定啟動圖形桌面,到此就可以結(jié)束了,如果要啟動圖形界面,需要在此基礎(chǔ)上啟動桌面程序
?
7、systemd執(zhí)行g(shù)raphical需要的服務(wù)
CentOS6,7啟動區(qū)別
系統(tǒng)啟動和服務(wù)器守護(hù)進(jìn)程管理器,它不同于centos5的Sysv init,centos6的Upstart(Ubuntu制作出來),systemd是由Redhat的一個員工首先提出來的,它在內(nèi)核啟動后,服務(wù)什么的全都被systemd接管,kernel只是用來管理硬件資源,相當(dāng)于內(nèi)核被架空了,因此linus很不滿意Redhat這種做法。
來源:http://www.icode9.com/content-3-190201.html