Centos系統啓動流程


Centos系統啓動流程ios


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


圖解:ide

wKiom1PQxc6SML8nAAFcDmK4XC0648.jpg(1)POST模塊化

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

(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 Bootloaderorm

grub 0.x: grub legacy對象

grub 1.x: grub2 grub legacy:blog

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

相關文章
相關標籤/搜索