CentOS 開機流程詳解

來自:51CTO 博客,作者:zpgood

https://blog.51cto.com/zhangpenglinux/176020

一、Linux 開機流程:

BIOS:

(Basic Input Output System) 基本輸入輸出系統, 它是一組固化到計算機內主板上一個 ROM 芯片 上的程序,保存着計算機最重要的基本輸入輸出的程序、開機後自檢程序和系統自啓動程序,可從 CMOS 中讀寫系統設置的具體信息。

MBR: Master Boot Record,主要引導記錄區。

Boot Loader:啓動引導程序。

二、詳細流程

**第一步:**加載 BIOS

打開計算機電源,計算機硬件會自動加載 BIOS,讀取 BIOS 內相關硬件信息及進行硬件系統的自檢,隨後根據 BIOS 配置找到第一個有引導程序的的設備。

**第二步:**讀取 MBR

硬盤上第 0 磁道第一個扇區被稱爲 MBR,即主引導記錄,大小是 512 字節,存放了預啓動信息、分區表信息。系統找到 BIOS 所指定的硬盤的 MBR 後,就會將其複製到物理內存中,被複制到物理內存的內容就是 Boot Loader(lilo 或者 grub)。

**第三步:**啓動 Boot Loader

Boot Loader 就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便爲最終調用操作系統內核做好一切準備。
Boot Loader 有若干種,其中 Grub、Lilo 是常見的 Loader。
本文以 Grub 爲例講解,grub 功能:提供一個菜單,允許用戶選擇要啓動的系統或不同的內核版本;把用戶選定的內核裝載到 RAM 中的特定空間中,解壓、展開。

系統讀取內存中的 grub 配置信息(一般爲 menu.lst 或 grub.conf),並依照此配置信息來加載指定內核。

**第四步:**加載內核

grub 把系統控制權移交給內核,內核開始探測可識別到的所有硬件設備及嘗試掛載根目錄以獲取其驅動程序。此時就需要首先加載磁盤驅動程序以便讀取磁盤,而磁盤驅動程序又保存在磁盤內,這樣就會導致 linux 無法啓動。此時需要通過僞文件系統來解決這一問題。

虛擬文件系統 (Initial RAM Disk) 即 / boot/initramfs-release.img ,這個文件的特色是,能夠通過 boot loader 來加載到內存中, 然後這個文件會被解壓縮並且在內存當中模擬成一個根目錄,且此模擬在內存當中的文件系統能夠提供一支可運行的程序,透過該程序來加載啓動過程中所最需要的核心模塊,通常這些模塊就是 U 盤, RAID, LVM, SCSI 等文件系統與磁盤的驅動程序。等加載完成後, 會幫助核心重新呼叫 /sbin/init 來開始後續的正常啓動流程。

 注:RamDisk 是輔助性文件,並非必須,取決於內核是否能直接驅動根文件系統所在的設備。

**第五步:**運行 / sbin/init 程序,設定 linux 的運行等級

內核加載完畢後,運行用戶空間內第一個應用程序就是 / sbin/init,然後讀取 / etc/inttab 文件,依據文件配置設定系統運行等級;

第六步:init 進程執行 rc.sysinit

設定了運行等級後,Linux 系統執行 / etc/rc.d/rc.sysinit 系統初始化腳本程序。初始化包括:設置主機名、設置歡迎信息、激活 Udex 和 seliux、掛載 / etc/fstab 文件中定義的所有文件系統、檢測根文件系統、設置系統時鐘、根據 / etc/sysctl.conf 文件來設置內核參數、激活 LVM 及軟 RAID 設備、激活 swap 設備、加載額外設備的驅動程序、執行清理操作。

**第七步:**啓動內核模塊

具體是依據 / etc/sysconfig/modules 文件目錄下的文件來裝載內核模塊。

**第八步:**執行 run-level 的各個服務啓動 (script 方式)

根據運行級別的不同,系統會運行 rc0.d 到 rc6.d 中的相應的腳本程序,來完成相應的初始化工作和啓動相應的服務。

**第九步:**執行 / etc/rc.d/rc.local

rc.local 就是在一切初始化工作後,Linux 留給用戶進行個性化的地方。你可以把你想設置和啓動的東西放到這裏。

**第十步:**執行 / bin/login 程序,進入登錄狀態

Linux 就會啓動終端機或者是 X Window 來等待使用者登陸。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/zITXx14SDJZ0mm2JCZLM5Q