CentOS的啟動流程

                  一個操作系統的開啟與關閉不是我們手動的打開與關閉電源那么簡單。這個過程中涉及太多的內部服務的打開與關閉。而在這個過程中如果出現什么問題,那么以后的某些服務就可能被影響。所以我們就需要對CentOS的啟動流程了解清楚,這樣出現問題之后我們才會去解決它。

    CentOS的啟動流程總的順序如下(這里以CentOS 6為例):

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


   這么多步驟里我們可以把它分簡單的四大步來介紹: 

第一步:POST加電自檢

    主要實現的功能是檢測各個外圍硬件設備是否存在而且能夠正常運行起來,實現這一自檢功能的是固化在主板上的ROM(主要代表為CMOS)芯片上的BIOS(Basic Input/Output System)程序;例如BIOS會檢測CPU、Memory以及I/O設備是否能夠正常運行。而檢測完成之后就進行硬件設備的初始化。然后就會加載BIOS,它的主要功能是選擇要啟動的硬件設備,選擇了之后就可以讀取這個設備上位于MBR里頭的bootloader了。它是根據BIOS中對啟動順序的設定,BIOS自己會依次掃描各個引導設備,然后第一個被掃描到具有引導程序(bootloader)的設備就被作為要啟動的引導設備。


第二步:加載bootloader(MBR)

    這一步實現起來的步驟比較多,前面的BIOS通過讀取并執行啟動設備的MBR中的bootloader,而bootloader要實現的功能就是提供一個菜單給用戶,讓用戶去選擇要啟動的系統或不同的內核版本,然后把用戶選擇的內核版本加載至RAM中的特定空間,接著在RAM中解壓、展開,而后把系統控制權移交給內核。

    首先,bootloader是一個程序,它的執行肯定依賴于一個硬件之上,這個硬件就是硬盤,準確的說就是第一個可以啟動的硬盤的第一個扇區內。就是所說的MBR(Master Boot Record主引導記錄)中。

   而grub也是bootloader中的一種,它是為了打破在MBR中只有446Bytes用于存放bootloader這一限制,所以這一步的實現是這樣的:grub是通過三個階段來實現加載內核這一功能的,這三個階段分別是:stage1, stage1.5以及stage2。其中:

    stage1:存放于MBR的前446Bytes,用于加載stage1.5階段,目的是為了識別并驅動stage2(或者/boot)所在分區的文件系統;

    stage1.5:存放于MBR之后的扇區,加載stage2所在分區的文件系統驅動,讓stage1中的bootloader能識別stage2所在分區的文件系統;

    stage2:存放于磁盤分區之上,具體存放于/boot/grub目錄下,grub目錄下又有一個/grub.confwenj ,它主要用于加載內核文件(vmlinuz-VERSION-RELEASE)以及ramdisk這個臨時根文件系統(initrd-VERSION-RELEASE.img或initramfs-VERSION-RELEASE.img)。

    下面就是grub.conf的配置文件:

CentOS的啟動流程

第三步:加載Kernel,執行系統初始化

    Kerenl在得到系統控制權之后,首先要進行自身初始化,而初始化的主要作用是:

    (1)探測可識別到的所有硬件設備;

        bootloader將系統控制權移交給內核就好比如后朝推翻前朝,統治者(內核)當權之后,首先要檢查一下有哪些是前朝所留下的,例如有哪些領土、人力、財力、兵力可用等等。

    (2)加載硬件驅動程序,即加載真正的根文件系統所在設備的驅動程序(有可能會借助于ramdisk加載驅動);

        這就像統治者(內核)在得知底下存在的人力、財力之后,開始將可以“為我所用”的人力納入麾下,聽自己使喚,而不聽使喚的殺掉;

    (3)以只讀方式掛載根文件系統;

        如果有借助于ramdisk這個臨時文件系統(虛根),則在這一步之后會執行根切換;否則不執行根切換。

    (4)運行用戶空間的第一個應用程序:/sbin/init.

        到這里內核空間的啟動流程就結束了,而接下來是用戶空間完成后續的系統啟動流程。


第四步:執行/sbin/init來管理用戶空間服務進程

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

    1)init可以理解成是內核用來管理用戶空間的,init這個初始化程序會根據其配置文件執行一系列操作。雖然CentOS 5、CentOS 6以及CentOS 7的init配置文件各不相同,但總體的啟動流程是不變的。這里它會根據inittab這個文件來定義啟動的運行級別

    CentOS的啟動流程

    2)運行初始化腳本/etc/rc.d/rc.sysinit,它是為了初始化系統環境,這一步初始化包括:

       ①設置主機名;

       ②設置歡迎信息;

      ③激活udev和selinux;

       ④掛載/etc/fstab文件中定義的所有文件系統;

       ⑤檢測根文件系統,以讀寫方式重新掛載根文件系統;

       ⑥設置系統時鐘;

       ⑦根據/etc/sysctl.conf文件來設置內核參數;

       激活lvm及軟raid設備;

       ⑨激活swap設備;

       ⑩加載額外設備的驅動程序(因為內核只加載根文件系統所在分區的驅動程序);

      

    3)關閉或啟動用戶選定的默認運行級別下所對應的服務

      它要實現的功能是:根據前面用戶通過init配置文件對默認運行級別的設定,關閉或啟動這個運行級別下的服務。

   4)啟動終端,打印登錄提示符

    根據前面獲取的運行級別來啟動終端,mingetty程序是用于啟動終端的,它會調用登錄程序login,這樣就能顯示出登錄提示符了,類似mingetty這種用于打開終端的程序還有getty等。

    如果默認運行級別為5,則會打開圖形界面。

    最后用戶登錄,系統啟動完成。

              

原創文章,作者:gong,如若轉載,請注明出處:http://www.www58058.com/85783

(0)
gonggong
上一篇 2017-09-01 14:58
下一篇 2017-09-01

相關推薦

  • 馬哥教育網絡班第22期+第14周作業

    week14: 系統的INPUT和OUTPUT默認策略為DROP; 1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒; web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機; 2、在工作時間,即周一到周五的8:30-18:00,開放本機的ftp服務給172.16.0.0網絡中的主機訪問; 數據…

    Linux干貨 2016-12-12
  • N25-第十一周博客作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 點對點加密過程如下: 發送方根據單向加密算法計算數據的特征碼 用私鑰加密這段特征碼,生產數字簽名,將數字簽名附著在數據后面 發送方生產臨時對稱密鑰,用對稱加密算法結合對稱加密密鑰加密整段數據(數據+數字簽名) 為保證接收方可以解密,發送方用接收方的公鑰加密對稱加密密鑰,附加在數據后面 接收方用自己的私鑰解密數據…

    Linux干貨 2017-03-30
  • shell腳本編程基礎

    變量的種類 ——–shell—–父shell                      &…

    Linux干貨 2017-04-16
  • 馬哥教育網絡第21期-第十周課程練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 1.post加電自檢,bios檢測基礎硬件設備 2.boot sequence:按次序查找各引導設備,第一個有引導程序的設備即為本次啟動用到設備;讀取啟動設備MBR中 的bootloader,啟動GRUB,選擇內核加載到內存中。 3.kernel:自身初始化:探測可識別到的…

    Linux干貨 2016-11-14
  • 網絡接口配置bonding

    Bonding 就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可能的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改為相同的MAC地址。 Bonding的工作模式 Mode 0 (balance-rr)     輪轉(…

    Linux干貨 2016-09-09
  • 堡壘機-麒麟開源堡壘機蘋果 Mac支持版本發布

      近日,麒麟開源堡壘機團隊開發測試了支持Mac OS蘋果操作系統的Web插件,蘋果系統用戶可以直接和Windows用戶一樣,登錄到Web平臺,使用點擊的方式調動運維工具并且登錄到目標系統進行操作運維。 Mac OS插件支持ssh、telnet、rdp、vnc、x11、sftp、ftp、應用發布等所有協議。   注:麒…

    Linux干貨 2016-05-19
欧美性久久久久