一、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 來等待使用者登陸。
責任編輯:pj
-
BIOS
+關注
關注
5文章
468瀏覽量
45614 -
設備
+關注
關注
2文章
4472瀏覽量
70537
發布評論請先 登錄
相關推薦
評論