1. 程式人生 > >Centos7的啟動流程

Centos7的啟動流程

記錄 當前 屏幕 systemd grub.conf 翻譯 我們 自啟 磁盤操作

第一步 BIOS或UEFI初始化,post開機加電自檢

  解釋一下什麽是BIOS、uefi和post:

  BIOS(Basic Input Output System)翻譯過來就是基本輸入輸出系統,它是一組固化到計算機內主板上一個ROM芯片上的程序(不需要進入系統,通電即啟動),它保存著計算機最重要的基本輸入輸出的程序、開機後自檢程序和系統自啟動程序,它可從CMOS中讀寫系統設置的具體信息。

  UEFI (Unified Extensible Firmware Interface)可稱為統一的可擴展固件接口,是 Intel 為 PC 固件的體系結構、接口和服務提出的建議標準。其主要目的是為了提供一組在 OS 加載之前(啟動前)在所有平臺上一致的、正確指定的啟動服務,被看做是有近20多年歷史的 BIOS 的繼任者。

  上電自檢:(POST:Power-On-Self-Test)是BIOS功能的一個主要部分。它負責完成對CPU、主板、內存、軟硬盤子系統、顯示子系統(包括顯示緩存)、串並行接口、鍵盤、CD-ROM光驅等的檢測。主要檢查硬件的好壞。POST自檢測過程大致為:加電-CPU-ROM-BIOS-System Clock-DMA-64KB RAM-IRQ-顯卡等。檢測顯卡以前的過程稱過關鍵部件測試,如果關鍵部件有問題,計算機會處於掛起狀態,習慣上稱為核心故障。另一類故障稱為非關鍵性故障,檢測完顯卡後,計算機將對64KB以上內存、I/O口、軟硬盤驅動器、鍵盤、即插即用設備、CMOS設置等進行檢測,並在屏幕上顯示各種信息和出錯報告。在正常情況下,POST過程進行得非常快,我們幾乎無法感覺到這個過程

簡述來說就是固話到主板上的一個程序系統 BIOS或UEFI 在開機時通電啟動,然後裏面的post開始對電腦的硬件開始進行檢測。

第二步 加載 MBR到內存

再說過程之前還是先來了解一下什麽是MBR:主引導記錄(MBR,Main Boot Record)是位於磁盤最前邊的一段引導(Loader)代碼。它負責磁盤操作系統(DOS)對磁盤進行讀寫時分區合法性的判別、分區引導信息的定位,它由磁盤操作系統(DOS)在對硬盤進行初始化時產生的。

硬盤的0柱面、0磁頭、1扇區稱為主引導扇區(也叫主引導記錄MBR)。它由三個部分組成,主引導程序、硬盤分區表DPT(Disk Partition table)和分區有效標誌(55AA)。在總共512字節的主引導扇區裏主引導程序(boot loader)

占446個字節,第二部分是Partition table區(分區表),即DPT,占64個字節,硬盤中分區有多少以及每一分區的大小都記在其中。第三部分是魔數(magic number),占2個字節,固定為55AA。

分區編號:主分區1-4 ,邏輯分區5……

LINUX規定:邏輯分區必須建立在擴展分區之上,而不是建立在主分區上

第三步 GRUB 階段

GNU GRUB(GRand Unified Bootloader簡稱“GRUB”)是一個來自GNU項目的多操作系統啟動程序。GRUB是多啟動規範的實現,它允許用戶可以在計算機內同時擁有多個操作系統,並在計算機啟動時選擇希望運行的操作系統。GRUB可用於選擇操作系統分區上的不同內核,也可用於向這些內核傳遞啟動參數。

grub第1.5和第2階段,信息默認存放在扇區中,如果使用grub-install生成的第2階段的文件是存放在/boot分區中的。

為了加載內核系統,不得不加載/boot分區,而加載/boot分區,要有/boot分區的驅動,/boot分區驅動是放在/boot分區中的啊,我們好像進入死循環了,Linux是怎麽解決的呢?就是靠放在1.5階段中的數據,放在第一個扇區後的後續扇區中,第1.5階段和2階段總共27個扇區。

第1階段: MBR中前 446個字節,如果把這裏面的內容損壞,那麽系統會認為當前磁盤沒有啟動引導功能,會嘗試從光盤或者網絡啟動系統

第1.5階段:mbr之後的扇區,識別stage2所在的分區上的文件系統。

第2階段:開機啟動的時候看到Grub選項、信息,還有修改GRUB背景等功能都是stage2提供的,stage2會去讀入/boot/grub/grub.conf或者menu.lst等配置文件。

第四步 加載內核和inintamfs模塊

加載內核,核心開始解壓,啟動一些最核心的程序。

為了讓內核足夠的輕小,硬件驅動並沒放在內核文件裏面。

kernel在內存中加載時,為了模擬系統環境,會生成一個ramdisk文件,來進行下一步操作,等到加載到真正的根文件系統時,就會退出ramdisk,切換到真正的根文件系統中去。

第五步 kernel內核開始初始化,用systemd來代替centos6以前的init程序

Centos7的啟動流程