天天看點

LINUX系統啟動流程(個人了解總結,錯誤歡迎指出)

系統啟動流程:

POST-->BIOS(Boot Sequence)--> BootLoader(MBR)--> Kernel(initrd,initramfs)--> init (/etc/inittab)

1、家電自檢:POST(PowerOnSelfTest)

 先載入一段程式,系統剛剛啟動時,能自動将某段rom中的程式映射到cpu可以尋址到的空間中去,并且讓cpu可以執行其中的指令。這些指令是為了完成系統檢測的。如果系統的基本硬體,核心硬體沒有問題的話,将進入下一步驟。

  注:BIOS:系統首先由POST(PowerOnSelfTest,上電自檢)程式來對内部各個裝置進行檢查;自檢後,就首先按照系統CMOS設定中儲存的啟動順序搜尋軟硬碟驅動器及CD—ROM、網絡伺服器等有效地啟動驅動器,讀入作業系統引導記錄,然後将系統控制權交給引導記錄,并由引導記錄來完成系統的順利啟動。

2、BIOS

 根據BIOS中所設定的系統啟用流程去找對應裝置的上的MBR,我們将這個啟動次序叫做(Boot Sequence)

3、MRB(BootLoader)

 根據以上面的引導次序去逐個的找對應的儲存設備上的MBR,如果MBR存在的話,則會去讀取MBR中的BootLoader,BootLoader是一段程式,在其中配置了所要引導的作業系統的核心的位子,是以,BIOS被載入記憶體以後,然後其将控制權限交給BootLoader以後,BootLoader就接收了整個系統的控制權限,是以其就根據使用者的選擇去讀取相應作業系統的核心,将核心裝載進記憶體中合适的位子,解壓縮并完成核心初始化以後,接下來BootLoader會将控制權限轉交給核心。

 注:

     硬碟主引導記錄MBR(MasterBootRecord):位于硬碟0磁道0柱面1扇區,該扇區共512bytes,其中MBR占446bytes ;MBR所做的唯一的事情就是裝載第二引導裝載程式。

     分區表DPT(Disk Partition Table)占64bytes;

     硬碟有效标志(Magic Number)占2bytes;

4、Kernel(initrd,initramfs)

 核心初始化:

    注:核心:子產品化設計,大部分裝置子產品是在需要時加載驅動,并且大部分子產品的驅動放置于根分區上。

  硬體探測

  裝載驅動

   --驅動可能在核心中 也可能在initrd中。紅帽5中叫做initrd,紅帽6中叫做initramfs.其中存儲着核心所依賴的額外的驅動,比如ext3,也就是根檔案系統。比如一些驅動在根檔案系統中,但是核心中沒有裝載讀取根檔案系統的驅動,那麼就是initrd的作用了,它首先給核心提供基本驅動去讀取根檔案系統。等核心豐滿以後,在逐漸失去其作用。

  挂載根檔案系統

  啟動使用者控件中的第一個程序init

5、執行init(/etc/inittab)

  注:在紅帽6中,init程式變為了upstart,其為項名稱,為了相容名字依然為init,它的配置檔案在/etc/inittab與/etc/init/*.conf

 inittab配置檔案的設定

  設定預設運作級别

  系統初始化腳本(/etc/rc.d/rc/sysinit)

  運作指定級别的服務腳本

   /etc/rc.d/init.d/都連結到/etc/rc.d/rc#.d

    init.d中的腳本都是連接配接的,連接配接的名字比較獨特

     K*    S*    表示執行次序--數字越小越先被執行 

      checkconfig幫助建立這些連結

     如3級别下啟動,先運作rc3.d裡面的以K98*開頭的服務,然後其會去rc.d/init.d裡面通過checkconfig來找腳本中98啟動級别的腳本來運作。如果腳本中有'. /etc/rc.d/init.d/functions'來讀取functions中的格式--定義顯示ok fauled格式

   注:

    rcN;表示用rc腳本去運作rcN.d目錄下的腳本;rc腳本就是去執行所需級别腳本的功能腳本;

    目錄下的檔案均為腳本連結檔案,指向/etc/rc.d/rcN.d/目錄,并且命名時以S或K開頭,後面跟上

    0-99的數字;S代表啟動時執行;K代表關閉時執行;01-99代表啟動或關閉的級别(數字越小越優先)

   初始化結束前執行最後一個檔案:/etc/rc.d/rc.local,系統會讀取該腳本中的所有指令并執行一遍;但是該腳本隻在啟動時執行一次,系統關閉時不能執行,是以不要為了實作開機啟動而将某些服務寫入這個腳本,那樣會造成服務關機時的非正常關閉。

   完成後設定ctrl alt delete的意義以及突然斷電怎麼辦,電源恢複怎麼辦

     啟動虛拟終端

     啟動圖形終端--運作級别5情況下

 /etc/rc.d/rc.sysinit:系統初始化--更進階化(後續服務可以由它完成)

    注:核心挂載根檔案系統的時候是隻讀方式挂載的,防止發生意外

    檢測,并以讀寫方式重新挂載根檔案系統;

    設定主機名;

    檢測并挂載/etc/fstab中的其他檔案系統;

    啟用swap分區;

    初始化外圍硬體裝置的驅動:如網卡驅動,顯示卡等

    根據/etc/sysctl.conf設定核心參數;

    激活udev和selinux;

    激活LVMhe RAID裝置;

    清理過期鎖和PID檔案;

    裝載鍵映射:如鍵盤上的每一個鍵的功能

是以第5步可以了解為:先讀取inittab中的運作級别,然後系統跑到rc.d中去找相應的運作級别的檔案如rc3.d,然後通過rc3.d中S98*開頭的檔案(裡面K開頭的可以為很多個一起去找)去rc.d/init.d中,通過checkconfig定義在腳本中的運作級别的檔案來讀取腳本并按照次序運作(如‘checkconfig 35   98 01’ 其中3 5  為運作級别'rc3.d為3級别',98對應rc3.d中S98開頭的檔案)。

本文轉自 陳延宗 51CTO部落格,原文連結:http://blog.51cto.com/407711169/1167660,如需轉載請自行聯系原作者

繼續閱讀