Centos系統啟動流程

來源:互聯網
上載者:User

標籤:程式   電腦   檢測   system   bootloader   


Centos系統啟動流程


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


圖解:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/41/1D/wKiom1PQxc6SML8nAAFcDmK4XC0648.jpg" width="886" height="482" alt="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就接收了整個系統的控制許可權,而後根據使用者的選擇,去讀取相應作業系統的核心。

 650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/7E/13/wKiom1b2fHLj0Ou-AAFUo5VjAZY297.jpg" title="bios.jpg" alt="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:

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/7E/13/wKiom1b2eAaDFenVAAGnb-53uAg525.jpg" style="float:none;" title="grub.jpg" alt="wKiom1b2eAaDFenVAAGnb-53uAg525.jpg" />

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

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/7E/13/wKiom1b2eCPxqirGAACTeRptGwA534.jpg" title="gru是b.jpg" style="float:none;" alt="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/

650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/7E/0F/wKioL1b2ePXyUAzEAACWXUpf5tY823.jpg" title="lsboot.jpg" style="float:none;" alt="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進程,最後就等待使用者登入


650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/7E/13/wKiom1b2eFfAeVdUAAJEhgnedtU729.jpg" title="init.jpg" style="float:none;" alt="wKiom1b2eFfAeVdUAAJEhgnedtU729.jpg" />


字元介面:


650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/7E/13/wKiom1b2d9_SXFT9AABApAL10KU941.jpg" title="3.jpg" style="float:none;" alt="wKiom1b2d9_SXFT9AABApAL10KU941.jpg" />


圖形介面:


650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/7E/0F/wKioL1b2eH6RoIFGAABbaWDBhs8157.jpg" title="5.jpg" style="float:none;" alt="wKioL1b2eH6RoIFGAABbaWDBhs8157.jpg" />

 

 

 


Centos系統啟動流程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.