CentOS5和6開啟啟動
- CentoS5和6開機(jī)啟動基本相似的诬滩,到了CentOS7才有了大的改變
- 當(dāng)CentOS和Windwos開機(jī)也是有很多相似的地方的,請看下圖
ROM
- ROM-Read Only Memory只讀存儲器几莽,如我們主板的BIOS芯片
-BOIS(Basic Input and Output System),保存著有關(guān)計(jì)算機(jī)系統(tǒng)最重要的基本輸入輸出程序 - 斷電后信息不丟失,如計(jì)算機(jī)啟動用的BIOS芯片沸久。存取速度很低磷醋,(較RAM而言)且不能改寫
- 由于不能改寫信息,不能升級墓猎,現(xiàn)已很少使用
- 還有系統(tǒng)信息設(shè)置捆昏、開機(jī)加電自檢程序和系統(tǒng)啟動自句舉程序等
RAM
- RAM-RamdomAccessMemory易揮發(fā)性隨機(jī)存取存儲器,高速存取毙沾,讀寫時間相等
- 且與地址無關(guān)骗卜,如計(jì)算機(jī)內(nèi)存等
- 但是他一斷電數(shù)據(jù)就丟了,所以和他配合的有一塊CMOS電池左胞,來保存里面的數(shù)據(jù)如時間等
啟動流程介紹
POST加電自檢
- POST(Power-On-Self-Test)寇仓,翻譯出來就是加電自檢
- POST加電自檢也就是在我們主板上有一個ROM,也就是BIOS烤宙,他只是只讀的
- 他是固化在我們主板的ROM里面的遍烦,他的作用就是開機(jī)的時候幫我們來檢查各種硬件
- BOIS還有一個功能就是選擇第一啟動引導(dǎo)和等等修改硬件參數(shù)
- BOIS是不支持現(xiàn)在最新的GPT分區(qū),GPT分區(qū)只有UEFI引導(dǎo)才支持
MBR引導(dǎo)
- BIOS是配合的MBR引導(dǎo)躺枕,裝系統(tǒng)的時候千萬要注意哦服猪,童鞋們
- MBR是比較傳統(tǒng)的引導(dǎo)了供填,一般適用與家庭電腦用戶
- MBR存放在我們硬盤的446字節(jié)的第一個扇區(qū),他對應(yīng)的MBR里面存放了罢猪,三部分內(nèi)容近她,446字節(jié),64字節(jié)的分區(qū)表膳帕,無為的標(biāo)志位
bootloader:引導(dǎo)加載器粘捎,引導(dǎo)程序
- BootLoader是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行
- 可以初始化硬件設(shè)備、建立內(nèi)存空間映射圖备闲,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài)晌端,以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(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)啟動管理器咧纠。用來引導(dǎo)不同系統(tǒng),如windows泻骤,linux
- 上面所說的446字節(jié)里面就放這GRUB的一小部分
加載內(nèi)核
- GRUB 運(yùn)行成功以后就開始加載內(nèi)核了
- 內(nèi)核加載完畢以后就開始運(yùn)行我們第一個進(jìn)程漆羔,init進(jìn)程
- init進(jìn)程運(yùn)行的話,他有一些初始化腳本如/etc/inittab等等狱掂,最終你就會看到一個登錄界面出來了演痒,中間的腳本一定要會
啟動流程進(jìn)階
MBR:第一階段
- 446: bootloader, 64: 分區(qū)表, 2: 55AA
- 446字節(jié)不屬于任何分區(qū),他表現(xiàn)是二進(jìn)制
1.5階段
- primary boot loader : 1st stage趋惨,1.5 stage
- 1.5階段鸟顺,就在MBR后續(xù)的分區(qū)里面,也就是后續(xù)的扇區(qū)里面
- 因?yàn)橐浑A段存放不了驅(qū)動器虾,就沒法加載二階段
- 1.5階段就是為了支持二階段而存在
- 因?yàn)槎A段讯嫂,對應(yīng)的是/boot分區(qū),沒有1.5階段就進(jìn)不去二階段兆沙,二階段的驅(qū)動你加載不了欧芽,進(jìn)而就讀取不了二階段的相關(guān)文件,所以他的驅(qū)動就放在MBR后續(xù)的扇區(qū)里面
GRUB:第二階段
- 二階段是放在/boot/grub目錄下的文件 葛圃,他是依賴于1.5階段
- secondary boot loader :2nd stage千扔,分區(qū)文件
kernel:
- 自身初始化:
- vmlinz文件功能他主要探測可識別到的所有硬件設(shè)備,當(dāng)然ext4的文件驅(qū)動也不可能會放在里面库正,因?yàn)樗幸粋€單獨(dú)的文件來放那就是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ùn)行用戶空間的第一個應(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命令
- 為當(dāng)前正在使用的內(nèi)核重新制作ramdisk文件
- mkinitrd /boot/initramfs-
(uname -r)
- (2) dracut命令
- 為當(dāng)前正在使用的內(nèi)核重新制作ramdisk文件
- dracut /boot/initramfs-
(uname -r)
詳情情況請看:錯誤方案解決區(qū)
系統(tǒng)初始化:
- POST-->BootSequence(BIOS)-->Bootloader(MBR)--> kernel(ramdisk)-->rootfs(只讀)--> init(systemd
init程序的類型
- 系統(tǒng)的第一個進(jìn)程
- 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