CentOS系統啓動流程

CentOS的啓動流程

  任何系統必然電源加電,計算機硬件會主動的讀取BIOS來加載硬件信息以及進行硬件設備的自我檢測,之後系統會主動的讀取第一個有引導程序的設備,該引導程序可以指定使用那個內核來啓動,並將其加載至內存當中運行,同時內核還要加載其他硬件設備以及對應驅動程序,來使主機各個組件開始運行,等所有硬件設備完全加載完成後,稍後系統會操作一些外部程序準備軟件環境,加載系統運行所需要的軟件程序,等待用戶登陸操作。

> POST --> Boot Sequence --> bootloader(MBR) --> Kernel --> 加載rootfs --> switchroot --> /sbin/init --> (配置文件:/etc/inittab, /etc/init/.conf) --> 根據init配置文件設置默認運行級別 --> 運行系統初始化腳本/etc/rc.d/rc.sysinit,完成系統初始化 --> 開啓或關閉用戶選定的對應運行級別下所對應的服務 --> 啓動終端,打印登錄提示符。

POST加電自檢

  檢測各個外圍硬件設備是否存在而且能夠正常運行起來,自檢功能的是固化在主板上的ROM芯片上的BIOS程序;BIOS即基本輸入輸出系統實現,它是裝載與一個硬件芯片CMOS之上,過程就是給CMOS通電,然後啓動其上的BIOS程序,BIOS程序會根據CMOS上面的一些配置信息區讀取其他的硬件設備信息並檢測是否存在並能正常運行,之後進行硬件設備的初始化。BIOS會檢測CPU以及I/O設備是否能夠正常運行。CPU就會自動去加載ROM芯片上的BIOS程序,檢測完成之後就進行硬件設備的初始化。

選擇啓動順序

  選擇要啓動的硬件設備,選擇之後就可以讀取這個設備上位於MBR裏頭的Boot Loade。根據BIOS中對啓動順序的設定,BIOS自己會依次掃描各個引導設備,然後第一個被掃描到具有引導程序的設備就被作爲要啓動的引導設備。硬件設備初始化之後,BIOS會列出可以啓動的裝置順序,開始讀取第一個可以啓動的設備中操作系統的核心文件,由於不同的操作系統其文件格式不同,爲了避免格式信息的不兼容,要以一個啓動管理程序來處理這些核心文件的加載問題:Boot Loader。Boot Loader是一個程序,依賴於一個硬件硬盤第一個可以啓動的硬盤的第一個扇區內的MBR當中。
  Boot Loader 識別加載操作系統中的核心文件,提交到內存中運行,啓動對應的操作系統。磁盤分區都有一塊兒啓動扇區,啓動扇區用來爲操作系統安裝Boot Loader。操作系統會默認安裝一份Boot Loader到他的根目錄所在分區的扇區當中。在linux系統安裝時,會提示我們是否將Boot Loader安裝到MBR上去,如果選擇安裝到MBR的話,理論上在MBR和對應分區上的啓動扇區上同時都有一份Boot Loader程序。

加載bootloader(MBR)

  BIOS通過讀取並執行啓動設備的MBR中的Boot Loader,Boot Loader提供一個菜單給用戶,讓用戶去選擇要啓動的系統或不同的內核版本,然後把用戶選擇的內核版本加載至RAM中的特定空間,接着在RAM中解壓、展開,而後把系統控制權移交給內核。grub是Boot Loader中的一種,爲了打破在MBR中只有446Bytes用於存放Boot Loader這一限制。

grub三個階加載內核:
  stage1:運行Boot Loader主程序安裝在啓動區MBR中,MBR空間有限,在MBR中僅安裝bootloader最小主程序,並沒有安裝相關配置文件。存放於MBR的前446Bytes,用於加載stage1.5階段,目的是爲了識別並驅動stage2所在分區的文件系統;
  stage1.5:在MBR隨後的扇區存放,加載stage2所在分區的文件系統驅動,讓stage1中的bootloader能識別stage2所在分區的文件系統,主要用於與stage所在分區的文件系統進行交互。
  stage2:存放於磁盤分區之上,具體存放於/boot/grub目錄之下,主要用於加載內核文件以及ramdisk這個臨時根文件系統。通過Boot Loader加載所有配置文件以及相關環境參數信息。

  BIOS加載硬盤中的Boot Loader,而Boot Loader自身加載後識別主機的硬盤設備;能夠識別硬盤設備不代表能夠識別硬盤設備中的文件系統,文件系統是額外附加的一層軟件組織的文件結構,所以要對接一種文件系統,就必須要有文件系統驅動。而stage1.5就是向grub提供文件系統驅動的。kernel和initrd的文件路徑均以grub的根作爲起始目錄,且存放於stage2所在分區上;stage2、內核以及ramdisk文件通常放置於一個基本磁盤分區之上,因爲grub無法驅動lvm、高級軟raid等複雜邏輯設備,除非提供一個複雜的驅動接口,否則如果stage2及內核等文件都存放在lvm等複雜邏輯設備上將無法被stage1所識別。

加載系統內核Kernel,執行系統初始化信息

Kerenl在得到系統控制權之後,首先要進行自身初始化,而初始化的主要作用是:
  (1)探測可識別到的所有硬件設備;
  (2)加載硬件驅動程序,即加載真正的根文件系統所在設備的驅動程序;
  (3)以只讀方式掛載根文件系統;
  (4)運行用戶空間的第一個應用程序:/sbin/init;

  ramdisk和內核是由bootloader一同加載到內存當中的,ramdisk是用於實現系統初始化的、基於內存的磁盤設備,即加載至內存後把內存當磁盤使用,並在內存中作爲臨時根文件系統提供給內核使用,幫助內核掛載真正的根文件系統。而之所以能夠幫助內核掛載根文件系統是因爲在ramdisk這個臨時文件系統的/lib/modules目錄下有真正的根文件系統所在設備的驅動程序。
  在Boot Loader開始讀取操作系統內核文件後,將內核文件解壓縮後裝在到內存當中,然後根據內核提供的功能開始測試與加載各個設備。虛擬文件系統特點:能夠通過Boot Loader程序將其加載到內存當中,然後這個文件會被解壓縮並且在內存中模擬一個根系統,這個根目錄系統能夠提供一個可以運行的程序,通過該程序可以加載在啓動過程當中所需要的核心模塊。
  Boot Loader可以加載kernel與initrd,然後在內存中讓initrd解壓縮成根目錄,然後內核可以在這個虛擬的根文件系統之上加載合適的驅動程序,來加載硬盤等設備,之後釋放虛擬的跟文件系統,並以只讀方式掛載磁盤上真是的根文件系統。

啓動用戶空間第一個執行程序/sbin/init

  啓動用戶空間第一個執行程序/sbin/init
內核、硬件及驅動信息加載完畢後,內核會呼叫用戶控件的第一個執行程序/sbin/init,init程序主要功能是尊卑軟件運行環境,包括系統的主機名稱、網絡配置、文件系統格式等其他服務的啓動管理。這些所有操作都是通過init的配置文件來定義。init這個初始化程序會根據其配置文件執行一系列操作。

/sbin/init --> 根據init配置文件設置默認運行級別 --> 運行系統初始化腳本/etc/rc.d/rc.sysinit,完成系統初始化 --> 關閉或啓動用戶選定的默認運行級別所對應的服務 --> 啓動終端,打印登錄提示符

  CentOS 5初始化程序init是SysV init,其配置文件爲:/etc/inittab;
  CentOS 6初始化程序init是upstart,其配置文件爲:/etc/inittab, /etc/init/.conf;
  CentOS 7初始化程序init是systemd,其配置文件爲:/usr/lib/system/systemd/, /etc/systemd/system/;

運行級別:
  0:關閉所有服務,關機;
  1:單用戶模式:不需要通過認證,允許root用戶直接登陸而無需認證;
  2:多用戶模式:需要用戶認證,會啓動網絡功能,但不支持使用啓動NFS;
  3:多用戶模式:爲完全功能模式,提供文本界面;
  4:預留級別,目前無特別使用目的;
  5:多用戶模式:爲完全功能模式,提供圖形界面;
  6:重啓模式,reboot;

grub 配置文件(CentOS6)

CentOS系統啓動流程

default=0
設定默認啓動的內核或操作系統,0表示定義的第一個title系統
timeout=5
表示可供選擇的等待時間,超時時長則使用默認啓動條目
splashimage=(hd0,0) /grub/splash.xpm.gz
啓動時的背景圖片信息
title CentOS 6 (2.6.32-696.el6.x86_64)
定義操作系統的名稱
root (hd0,0)
指明引導當前操作系統或內核文件所在的分區
kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=/dev/sda2
內核文件路徑、根文件系統所在設備,以及傳遞給內核的參數
initrd /initramfs-2.6.32-696.el6.x86_64.img
指明用於輔助內核完成系統啓動的ramdisk文件路徑再次在內存緩存

實驗:刪除centos6中的/boot/grub。conf文件重啓使系統臨時啓動並重新編寫grub.conf

CentOS系統啓動流程
1、硬盤代號以小括號()括起來
2、硬盤以hd表示,後面的數字之間以逗號隔開
3、以搜索到的順序來作爲磁盤的編號

CentOS系統啓動流程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章