Centos系統啓動流程


Centos系統啓動流程


  啓動流程: POST --> BootSequence(BIOS) --> Bootloader (MBR) ->kernel (ramdisk) --> rootfs (switch_root) --> /sbin/init (/etc/inittab,/etc/init/*.conf, /usr/lib/systemd/system/)--> 默認運行級別、系統初始化、關閉及啓動服務、啓動終端(圖形終端)


圖解:

wKiom1PQxc6SML8nAAFcDmK4XC0648.jpg(1)POST

第一步首先加電自檢,計算機本身不會執行程序,由此它會載入一段程序,它會在開機時自動實現將某個RAM中的程序映射到cpu可以尋址的地址空間中去,並且可以讓cpu可以執行其中的指令,而這些指令是完成系統檢測的,檢測完成之後,當所有的硬件或基本的核心硬件沒有問題的話就進行BIOS。

(2)BIOS

根據BIOS中所設定的程序啓動流程去找與其對應設備上的MBR,按照引導次序執行(Boot Sequence),根據引導次序逐個查找對應的存儲設備上的MBR,若MBR存在,則讀取MBR上的BootLoader,BootLoader是一段程序,早期的MBR總共512字節,但它留給BootLoader空間大小是446字節,在BootLoader當中配置了所有引導的操作系統的內核的位置,因此BIOS在載入內存以後,當它實現將控制流程或控制權限轉交給BootLoader以後,BootLoader就接收了整個系統的控制權限,而後根據用戶的選擇,去讀取相應操作系統的內核。

 wKiom1b2fHLj0Ou-AAFUo5VjAZY297.jpg

grub: GRand Unified Bootloader

grub 0.x: grub legacy

grub 1.x: grub2 grub legacy:

stage1: mbr

stage1_5: mbr之後的扇區,讓stage1中的bootloader能識別stage2所在的分區上的文件系統;

stage2:磁盤分區(/boot/grub/)配置文件:/boot/grub/grub.conf <-- /etc/grub.confstage2及內核等通常放置於一個基本磁盤分區;

/boot/grub/grub.conf:

wKiom1b2eAaDFenVAAGnb-53uAg525.jpg

(3)第三步:將內核裝載進內核中合適的位置,解壓縮並完成內核初始化,BootLoader會把控制權限轉交給內核。

wKiom1b2eCPxqirGAACTeRptGwA534.jpg

(4)第四步:如果內核訪問根文件系統的設備需要用到某個驅動程序,而內核中也沒有,就需要到根文件中去找這個驅動程序,但這文件系統本身又沒有掛載,因此要想訪問根文件系統得先找到驅動,要訪問驅動得先找到根文件系統,這就出現了一個難題,這時就要藉助於initrd,爲內核提供訪問真正的根文件系統所需要的基本驅動程序。因此initrd是一個輔助性的、過渡性的中間層。它能夠實現將kernel與真正的根文件系統連接起來,當連接完成之後它就沒有任何意義了。

Linux Kernel:

        CentOS啓動流程:POST--> Bootloader(BIOS, MBR) --> Kernel(initrd) --> rootfs -->switch_root --> /sbin/init

內核設計體系:單內核、微內核

Linux:單內核設計,但充分借鑑了微內核體系的設計的優點;爲內核引入了模塊化機制;

內核的組成部分:

kernel:內核核心,一般爲bzImage,通常位於/boot目錄,名稱爲vmlinuz-VERSION-release

kernel object:內核對象,即內核模塊,一般放置於/lib/modules/VERSION-release/

wKioL1b2ePXyUAzEAACWXUpf5tY823.jpg

 (5)第五步:執行init進程,而init程序本身的配置文件是/etc/inittab(而在Centos 6上init不在是傳統的init,而是upstart,而upstart的配置文件在/etc/inittab和/etc/init/.*conf下的所有文件

1.  根據boot loader的設置加載Kernel 會主動調用init進程,而init會取得run-level信息

2.  init執行/etc/rc.d/rc.sysinit文件來準備軟件執行的操作環境(如網絡、時區等)

3.  init執行run-level的各個服務的啓動(script方式)

4.  init執行/etc/rc.d/rc.local文件

5.  init執行終端機模擬程序mingetty來啓動login進程,最後就等待用戶登錄


wKiom1b2eFfAeVdUAAJEhgnedtU729.jpg


字符界面:


wKiom1b2d9_SXFT9AABApAL10KU941.jpg


圖形界面:


wKioL1b2eH6RoIFGAABbaWDBhs8157.jpg

 

 

 


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