1. 程式人生 > >CentOS 6 啟動流程

CentOS 6 啟動流程

water 出現 asi tput 系統運維 entos size type 建立

一臺電腦主機,由按下電源開關、硬件加電到完全由軟件層面的操作系統控制,這個啟動過程是復雜的。但是,作為Linux系統運維的我們,這是我們必須掌握的一個基礎知識點。因為深入掌握操作系統的啟動原理,有助於我們很好的解決各種啟動出現的錯誤,同時也會加深我們隊整個操作系統運作原理的理解。
準備:

虛擬機:VMware Workstation Pro 14
操作系統:CentOS 6.10

一.開機自檢

??當用戶按下電源開關,POST加電自檢,檢查設備上的硬件設備是否能夠正常工作,如果正常則把控制權交給BIOS。

二.BIOS

??BIOS(Basic Input and Output System)是基本輸入輸出系統的簡稱,是一個燒錄在ROM上的小程序,保留著有關計算機系統最基本的輸入輸出程序,是不可修改的。BIOS通過引導設置,尋找到第一個啟動設備,並加載啟動設備中的第一個扇區中的內容。

三.MBR和Stage1階段

??MBR是位於硬盤的第0磁道第0扇區的一段代碼,大小為512Byte,其中前446Byte記錄了引導操作系統用的Bootloader,後64Byte記錄了硬盤的分區信息,最後以55AA兩個Byte作為結束標誌信息。Bootloader有兩個功能,直接引導加載內核文件,或者轉交給其他Bootloader。
技術分享圖片
?? ???????? MBR查看截圖
??在CentOS 6中,引導操作系統的整個程序稱為GRUB,GRUB程序遠大於MBR中的446Byte,因此,在MBR中的引導信息稱之為Stage1,其主要作用是系統啟動裝載stage2。
MBR對於一個操作系統而言是很重要的,我們可以使用一下的命令查看、備份MBR信息、恢復

查看

hexdump -C /dev/sda -n 512

備份

dd if=/dev/sda of=/root/mbr.bak bs=1 count=512 把MBR備份到/root/mbr.bak,或者備份到別的主機上。

恢復

dd if=/root/mbr.bak of=/dev/sda bs=1 count=512

四.GRUB和內核

??Stage2位於/boot/grub下,Stage1並沒有識別文件系統的能力,所以stage1和stage2之間還有一個Stage1.5作為兩者的中間橋梁。Stage1.5位於硬盤第一個扇區後面的扇區裏,具有識別啟動區分文件系統的能力,Stage1.5為Stage1到Stage2做了一個良好的過渡。Stage2加載入內存後,相當於整個GRUB加載完成。

??GRUB首先會解析/boot/grub/grub.conf文件,在啟動界面會用戶提供啟動菜單或者直接進入默認選項。然後加載內核鏡像到內存中,再通過initrd建立偽根文件系統。Linux內核采用的是單內核的思想,但也借鑒了一些微內核的思想。在/boot/下的vmlinuz內核文件中存放的是一些特別重要的驅動文件等等,還有很多是存放在/lib/modules中。建立了偽根系統之後,內核開始驅動基本硬件,完成之後內核會根據grub.conf配置文件中“root=(hd0,0)”指定的硬盤信息創建一個根設備,然後將根文件系統以只讀的方式掛載,並切換到真正的根文件系統上。同時開啟第一個進程/sbin/init(PID=1),開始系統初始化。

五.系統初始化

??內核首先讀取/etc/inittab文件,該文件決定了系統啟動默認的運行級別。之後讀取/etc/rc/rc.sysinit腳本,完成設置主機名、歡迎信息、激活udev、掛載/etc/fstab文件中定義的文件系統等基礎操作。接著根據系統默認的運行級別,讀取/etc/rc.d/下對應的rcN.d文件,這裏N代表著運行級別。rcN.d文件裏有關於這個運行級別需要啟動和停止的服務腳本,其中K開頭表示該服務停止,S開頭表示該服務啟動。最後再執行兜底腳本/etc/rc.d/rc.local,這樣就完成了系統初始化。

六.啟動終端,登錄shell

??完成了系統初始化之後,系統會執行/sbin/mingetty打開終端,讓用戶輸入用戶名和密碼。再調用login程序,核對密碼。如果密碼正確,就從文件/etc/passwd 中讀取用戶指定的shell,然後啟動shell,最後把控制權交給shell,這樣就完成了整個系統的啟動過程。

CentOS 6 啟動流程