一文講透 CentOS 開機流程


做者:zpgood
原文:https://blog.51cto.com/zhangp...linux

1、Linux開機流程:

BIOS:面試

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

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

Boot Loader:啓動引導程序。小程序

2、詳細流程

第一步:加載BIOS 微信

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

第二步:讀取MBRapp

硬盤上第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 來等待使用者登錄。

最新整理的 2TB 技術乾貨:包括架構師實戰教程、大數據、Docker容器、系統運維、數據庫、redis、MongoDB、電子書、Java基礎課程、Java實戰項目、ELK Stack、機器學習、BAT面試精講視頻等。只需在 民工哥技術之路」微信公衆號對話框回覆關鍵字:1024 便可獲取所有資料。

相關文章
相關標籤/搜索