標籤:linux 作業系統 centos 開機流程
CentOS開機流程詳解
一、linux開機流程:
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/7E/80/wKiom1cCW7vjU_hWAAC8KD1ykwc014.png" title="啟動流程2.png" width="700" height="324" border="0" hspace="0" vspace="0" style="width:700px;height:324px;" alt="wKiom1cCW7vjU_hWAAC8KD1ykwc014.png" />
BIOS:(Basic Input Output System)基本輸出入系統 (BIOS),它是一組固化到電腦內主板上一個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),並依照此配置資訊來載入指定核心。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/7E/80/wKiom1cCXEaRzq4YAABXC8A_Oos886.png" title="grub.png" width="650" height="378" border="0" hspace="0" vspace="0" style="width:650px;height:378px;" alt="wKiom1cCXEaRzq4YAABXC8A_Oos886.png" />
第四步:載入核心
grub把系統控制權移交給核心,核心開始探測可識別到的所有硬體裝置及嘗試掛載根目錄以擷取其驅動程式。此時就需要首先載入磁碟驅動程式以便讀取磁碟,而磁碟驅動程式又儲存在磁碟內,這樣就會導致linux無法啟動。此時需要通過偽檔案系統來解決這一問題。
虛擬檔案系統 (Initial RAM Disk) 即/boot/initramfs-release.img ,這個檔案的特色是,能夠通過boot loader 來載入到記憶體中, 然後這個檔案會被解壓縮並且在記憶體當中類比成一個根目錄,且此類比在記憶體當中的檔案系統能夠提供一支可啟動並執行程式,透過該程式來載入啟動過程中所最需要的核心模組,通常這些模組就是 隨身碟, RAID, LVM, SCSI 等檔案系統與磁碟的驅動程式。等載入完成後, 會協助核心重新呼叫 /sbin/init 來開始後續的正常啟動流程。
註:RamDisk是輔助性檔案,並非必須,取決於核心是否能直接驅動根檔案系統所在的裝置。
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/7E/7D/wKioL1cCXRGiHT-lAAA5nTCn_IE349.png" title="initramfs.png" width="650" height="179" border="0" hspace="0" vspace="0" style="width:650px;height:179px;" alt="wKioL1cCXRGiHT-lAAA5nTCn_IE349.png" />
第五步:運行/sbin/init程式,設定linux的運行等級
核心載入完畢後,運行使用者空間內第一個應用程式就是/sbin/init,然後讀取/etc/inttab檔案,依據檔案配置設定系統運行等級;
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/7E/7D/wKioL1cCXTiTu_r6AACYkQQ5bLU894.png" title="RUNLEVEL.png" width="650" height="153" border="0" hspace="0" vspace="0" style="width:650px;height:153px;" alt="wKioL1cCXTiTu_r6AACYkQQ5bLU894.png" />
第六步: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中的相應的指令碼程式,來完成相應的初始化工作和啟動相應的服務。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/7E/80/wKiom1cCXNKS3A-WAAA47K-_ENc316.png" title="rc.d.png" width="650" height="311" border="0" hspace="0" vspace="0" style="width:650px;height:311px;" alt="wKiom1cCXNKS3A-WAAA47K-_ENc316.png" />
第九步:執行/etc/rc.d/rc.local
rc.local就是在一切初始化工作後,Linux留給使用者進行個人化的地方。你可以把你想設定和啟動的東西放到這裡。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/7E/7D/wKioL1cCXZ_C3uxBAAAbnHJ-VNY200.png" title="rc local.png" width="650" height="165" border="0" hspace="0" vspace="0" style="width:650px;height:165px;" alt="wKioL1cCXZ_C3uxBAAAbnHJ-VNY200.png" />
第十步:執行/bin/login程式,進入登入狀態
Linux 就會啟動終端機或者是 X Window 來等待使用者登陸。
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/7E/7D/wKioL1cCXdGxPjpZAAAImY-7hhw078.png" title="long.png" width="650" height="269" border="0" hspace="0" vspace="0" style="width:650px;height:269px;" alt="wKioL1cCXdGxPjpZAAAImY-7hhw078.png" />
CentOS開機流程詳解