CentOS5和6開啟啟動
- CentoS5和6開機啟動基本相似的,到了CentOS7才有了大的改變
- 當CentOS和Windwos開機也是有很多相似的地方的,請看下圖
ROM
- ROM-Read Only Memory只讀存儲器,如我們主板的BIOS芯片
-BOIS(Basic Input and Output System),保存著有關(guān)計算機系統(tǒng)最重要的基本輸入輸出程序 - 斷電后信息不丟失,如計算機啟動用的BIOS芯片。存取速度很低,(較RAM而言)且不能改寫
- 由于不能改寫信息,不能升級,現(xiàn)已很少使用
- 還有系統(tǒng)信息設(shè)置、開機加電自檢程序和系統(tǒng)啟動自句舉程序等
RAM
- RAM-RamdomAccessMemory易揮發(fā)性隨機存取存儲器,高速存取,讀寫時間相等
- 且與地址無關(guān),如計算機內(nèi)存等
- 但是他一斷電數(shù)據(jù)就丟了,所以和他配合的有一塊CMOS電池,來保存里面的數(shù)據(jù)如時間等
啟動流程介紹
POST加電自檢
- POST(Power-On-Self-Test),翻譯出來就是加電自檢
- POST加電自檢也就是在我們主板上有一個ROM,也就是BIOS,他只是只讀的
- 他是固化在我們主板的ROM里面的,他的作用就是開機的時候幫我們來檢查各種硬件
- BOIS還有一個功能就是選擇第一啟動引導和等等修改硬件參數(shù)
- BOIS是不支持現(xiàn)在最新的GPT分區(qū),GPT分區(qū)只有UEFI引導才支持
MBR引導
- BIOS是配合的MBR引導,裝系統(tǒng)的時候千萬要注意哦,童鞋們
- MBR是比較傳統(tǒng)的引導了,一般適用與家庭電腦用戶
- MBR存放在我們硬盤的446字節(jié)的第一個扇區(qū),他對應(yīng)的MBR里面存放了,三部分內(nèi)容,446字節(jié),64字節(jié)的分區(qū)表,無為的標志位
bootloader:引導加載器,引導程序
- BootLoader是在操作系統(tǒng)內(nèi)核運行之前運行
- 可以初始化硬件設(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境
- 早起的系統(tǒng)用的是LILO(Linux LOader)不過已經(jīng)淘汰
- 最新的都用的是GRUB()GRand Unified Bootloader)現(xiàn)在已經(jīng)有很多版本,他還可以敲命令和加密等等,如我們現(xiàn)在的Linux系統(tǒng)
GRUB
- GNU GRUB 和GRUB是GRand Unified Bootloader的縮寫
- 它是一個多重操作系統(tǒng)啟動管理器。用來引導不同系統(tǒng),如windows,linux
- 上面所說的446字節(jié)里面就放這GRUB的一小部分
加載內(nèi)核
- GRUB 運行成功以后就開始加載內(nèi)核了
- 內(nèi)核加載完畢以后就開始運行我們第一個進程,init進程
- init進程運行的話,他有一些初始化腳本如/etc/inittab等等,最終你就會看到一個登錄界面出來了,中間的腳本一定要會
啟動流程進階
MBR:第一階段
- 446: bootloader, 64: 分區(qū)表, 2: 55AA
- 446字節(jié)不屬于任何分區(qū),他表現(xiàn)是二進制
1.5階段
- primary boot loader : 1st stage,1.5 stage
- 1.5階段,就在MBR后續(xù)的分區(qū)里面,也就是后續(xù)的扇區(qū)里面
- 因為一階段存放不了驅(qū)動,就沒法加載二階段
- 1.5階段就是為了支持二階段而存在
- 因為二階段,對應(yīng)的是/boot分區(qū),沒有1.5階段就進不去二階段,二階段的驅(qū)動你加載不了,進而就讀取不了二階段的相關(guān)文件,所以他的驅(qū)動就放在MBR后續(xù)的扇區(qū)里面
GRUB:第二階段
- 二階段是放在/boot/grub目錄下的文件 ,他是依賴于1.5階段
- secondary boot loader :2nd stage,分區(qū)文件
kernel:
- 自身初始化:
- vmlinz文件功能他主要探測可識別到的所有硬件設(shè)備,當然ext4的文件驅(qū)動也不可能會放在里面,因為他有一個單獨的文件來放那就是initramfs文件來放ext4驅(qū)動
- 內(nèi)核的文件驅(qū)動和FRUB的加載文件驅(qū)動是兩碼事
- 我們驅(qū)動一共是分三部分來存放:核心的是放在/boot/vmlinuz最重要的 、其二是在/boot/initramfs這里放的是額外的一些驅(qū)動、其三是放在/lib/modules剩下的大部分驅(qū)動是放在這個目錄下
- 硬件驅(qū)動程序借助于initramfs(虛擬文件系統(tǒng))加載必要的驅(qū)動他才能去掛載操作系統(tǒng)的根
-
initramfs
這個文件是安裝系統(tǒng)的時候生成的,不是從光盤里面拷出來的,所以他的時間是你剛安裝時候的時間,但是在CentOS5
上名字不一樣叫initrd
- 他們的區(qū)別是
CentOS5
直接模擬文件系統(tǒng),CentOS6
模擬磁盤通過文件系統(tǒng)讀取數(shù)據(jù) - 然而vmlinuz(內(nèi)核文件)文件是出廠的時候就自帶的,所以他的時間是出廠時候的時間
- 以只讀方式掛載根文件系統(tǒng)
- 運行用戶空間的第一個應(yīng)用程序:/sbin/init
ramdisk命令
內(nèi)核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問,并加載相應(yīng)的硬件驅(qū)動
- ramdisk --> ramfs 提高速度
- CentOS 5: initrd
- 工具程序:mkinitrd
- CentOS 6,7: initramfs
- 工具程序:mkinitrd, dracut-
ramdisk文件的制作:
- (1) mkinitrd命令
- 為當前正在使用的內(nèi)核重新制作ramdisk文件
- mkinitrd /boot/initramfs-
(uname -r)
- (2) dracut命令
- 為當前正在使用的內(nèi)核重新制作ramdisk文件
- dracut /boot/initramfs-
(uname -r)
詳情情況請看:錯誤方案解決區(qū)
系統(tǒng)初始化:
- POST-->BootSequence(BIOS)-->Bootloader(MBR)--> kernel(ramdisk)-->rootfs(只讀)--> init(systemd
init程序的類型
- 系統(tǒng)的第一個進程
- SysV: init, CentOS 5之前
- 配置文件:/etc/inittab
- Upstart: init,CentOS 6
- 配置文件:/etc/inittab, /etc/init
- Systemd:systemd, CentOS 7
- 配置文件:/usr/lib/systemd/system
- /etc/systemd/system