CentOS 系統啟動流程:
POST 加電自檢 外部硬件是否都能存在和是否能正常工作
ROM:COMS 芯片上的
BIOS 基本輸入輸出
BOOT Sequence:
引導加載次序,也就磁盤上的MBR,bootloader
按次序查找各引導設備,第一人有引導程序的設備即為本次啟動用到的設備。
bootloaderr:引導加載器,程序
windows: ntloader
linux:
LILO:用于小型存儲設備上,如手機
GRUB:用于桌面環境
GRUB 0.x:傳統版本,5,6上在用
GRUB 1.x:7
功能:提供一個菜單,允許用戶選擇要啟動系統或不同的內核版本,把用戶選定的內核裝載到內在中的特定空間中,解壓、展開、并把系統控制權移交給內核。從此BIOS終止。
GRUB:
bootloader: 1st stage 找到硬盤上的第二階段
1.5st : 就是用來加載文件系統驅動 ?。阋L問文件系統,但是文件系統又在硬件分區上) 在你安裝操作系統時,就匹配好了一個1.5的文件放在mbr后面的扇區,讓bootloader能夠識別并訪問這個文件驅動。
disk : 2nd stage
MBR:
446:bootloader
64: 分驅信息
2: 55AA 標記位
kernel:
第一次掛載根的時候,內核不確定是否安全,它會以只讀的方式來掛載根,等一切如init等進程啟動完成后,在次重新以讀寫的方式掛載根。
自身初始化:
探測可識別到的所有硬件設備
加載硬件驅動程序:(有可能會借助于ramdisk加載驅動)
以只讀方式掛載根文件系統,
運行/sbin/init 用戶空間的第一個應用程序
init程序的類型:
SysV: init 5以前都用的,所有用戶進程都是按順序的開啟,所以啟動很慢,b會等a啟動完成之后在啟動
配置文件:/etc/inittab
Upstart: 接近并行的方式來啟動,如果b依賴a,只要a一啟動,b就認為依賴問題解決了,就可以啟動了
配置文件:/etc/inittab , /etc/init/*.conf
Systemd:需要啟動很多腳本服務,只有你第一次去訪問時,它才會去啟動它,所以開機很快,
配置文件:/usr/lib/systemd/system,/etc/systemd/system
ramdisk:
在啟動時,要加載根文件系統,根文件所在的設備,內核可能無法訪問,所以這時候我要借助ramdisk的輔助來完成,我們所需要的依賴的驅動程序的加載,而一但能夠加載這個驅動程序,就能掛載真正的根了。切換根。
內核的特性之一:使用緩沖和緩存來對磁盤上的文件訪問。
ramdisk —> ramfs
centos5:initrd 工具程序:mkinitrd
centos6:initramfs 工具程序:dracut
centos 5 :/sbin/init –> (/etc/inittab) | (CentOS6:/etc/init/*.conf) –> 設置默認運行級別 –> 運行系統初始化腳本、完成系統初始化 –> 關閉對應下需要關閉的服務,啟動需要啟動服務 –> 設置登錄終端
原創文章,作者:dance_man,如若轉載,請注明出處:http://www.www58058.com/75409