CentOS5和6開機啟動流程篇第一章

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).img(uname -r)
    • (2) dracut命令
    • 為當前正在使用的內(nèi)核重新制作ramdisk文件
    • dracut /boot/initramfs-(uname -r).img(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容