CentOS 5.0系統啟動流程

注:CentOS系統5.x,6.x和7.x的啟動流程不同,所以本文僅討論CentOS 5.x的啟動流程。

1. POST加電自檢

服務器在開機之后首先會先進行硬件的檢測,在開機界面我們可能會看到檢測硬盤,cpu或raid卡等信息,此界面即硬件自檢界面。

2. BIOS引導

BIOS(BootSequence)用于通過指定的引導裝置引導系統啟動。

3. Bootloader(MBR)

在所有可以引導系統啟動的介質都會存在引導啟動程序,即MBR。當然現在也可能會有UEFI引導啟動的系統,此處只討論MBR引導啟動方式。

  1. MBR為于硬盤0柱面0扇區的前446字節,隨后的64字節為分區表信息和分區標識位。

CentOS 5.0系統啟動流程
此處即為系統引導盤的前512字節,這512字節如果被破壞的話系統將無法啟動。

  1. BootLoader分為多種類型,如LiLo,grub等,其中CentOS 系統采用的為grub。 

    • grub程序為于/boot/grub/目錄下

CentOS 5.0系統啟動流程
其中存放有stage1,stage2,grub.conf等信息。

  • stage1存放的是MBR的備份信息,如下:

CentOS 5.0系統啟動流程

  • grub.conf即開機引導啟動的菜單,其內容如下,用戶也可以自己定義:

CentOS 5.0系統啟動流程

  • grub啟動系統分為多個階段,首先會通過grub.conf文件尋找內核和initrd文件引導系統,然后內核通過initrd文件加載硬盤的根文件系統。

4./sbin/init

/sbin/init為系統的第一個進程,內核加載完畢之后會只讀掛載rootfs,然后尋找/sbin/init,然后內核啟動階段結束,轉由用戶空間啟動階段。

CentOS 5.0系統啟動流程

5./etc/inittab

系統啟動之后會運行/etc/inittab文件,此文件定義如下信息:

  • 系統默認運行級別;
  • 執行/etc/rc.d/rc.sysinit腳本進行系統初始化;
  • 關閉對應級別下需要停止的服務,以k*開頭,啟動對應級別下需要運行的服務,以S*開頭;
  • 通過mingetty加載指定的tty;
  • 加載圖形終端;
  • 定義ctrl+alt+del是否可以重啟系統;
  • 定義系統斷電和電力恢復的動作; 
    其中/etc/rc.d/rc.sysinit定義如下內容:
  • 設置主機名;
  • 設置歡迎信息;
  • 激活udev和selinux;
  • 掛載/etc/fstab文件中定義的所有文件系統;
  • 檢測根文件系統,并以讀寫方式重新掛載根文件系統;
  • 設置系統時鐘;
  • 根據/etc/sysctl.conf文件設置內核參數;
  • 激活lvm及軟raid設備;
  • 激活各swap設備;
  • 加載額外設備的驅動程序;
  • 清理等操作;

6. 詳解系統服務加載過程:

系統所有的服務都存放于/etc/init.d/目錄下,然而在/etc/rc.d/存放多個rc#.d命名的目錄,這些目錄定義的就是對應的運行級別下所有需要停止和啟動的服務:

CentOS 5.0系統啟動流程
以上為3級別下需要啟動和停止的服務,可以看到所有的服務都是以軟連接的形式存在的。 
以軟連接存在原因:

  • 所有服務腳本都存放在/etc/init.d/目錄下
  • 所有服務腳本都有一個共同過的特性,腳本開頭必須定義如下兩行信息: 
    #chkconfig 運行級別 啟動優先級 停止優先級 
    description:***** 
    如atd服務的腳本:

CentOS 5.0系統啟動流程

  • 此類腳本收chkconfig管理,當執行以下指定命令之后會在相應rc#.d目錄下創建指定的以K*或S*開頭的腳本軟連接,系統就是通過加載這些腳本的軟連接啟動服務: 
    chkconfig –add 腳本名 #添加服務 
    chkconfig –del 腳本名 #刪除服務 
    chkconfig –level 運行級別 on|off #定義指定服務在指定級別下是否運行 
    chkconfig –list #列出所有服務信息

以上便是CentOS 5.x的啟動流程總結。

原創文章,作者:王子豪,如若轉載,請注明出處:http://www.www58058.com/75515

(0)
王子豪王子豪
上一篇 2017-05-14 09:20
下一篇 2017-05-14 14:53

相關推薦

  • PHP字符串的編碼問題

        大家都知道,不同字符編碼,其在內存占用的字節數不一樣。如ASCII編碼字符占用1個字節,UTF-8編碼的中文字符是3字節,GBK為2個字節。     PHP 也自帶幾種字符串截取函數,其中常用到的就是 substr 和 mb_substr。     使用substr截取中…

    Linux干貨 2015-10-22
  • 2016年8月11號學習博客

    shell腳本編程 shell腳本是包含一些命令或聲明,并符合一定格式的文本文件 shell腳本的用途有: 自動化常用命令 執行系統管理和故障排除 創建簡單的應用程序 處理文本或文件 命令查詢過程:別名–>內部變量–>hash–>$PATH ~]#bash -n 檢測腳本語法錯誤 ~]#bash -x 順…

    Linux干貨 2016-08-15
  • SElinux管理

                                                      &nbsp…

    系統運維 2016-09-26
  • mongodb數據庫切分

    前言:  相信維護過有大數據的MySQL的運維人員一定對sharding這個非常了解,MySQL數據庫切分自身沒有工具需要借助第三方工具進行;MySQL切片是一件非常頭疼而又難做的一件事,一旦切分錯誤,不僅不能優化數據庫,反而會加劇數據庫負載;mongodb相對于MySQL來說,數據庫切分是mongodb與生俱來的功能,mongodb會自動切分數據…

    Linux干貨 2015-09-05
  • tcp socket文件句柄泄漏

    今天發現有臺redis機器上出現socket個數告警,這是很奇怪的現象。因為一臺redis服務器上就部署了幾個redis實例,打開的端口應該是有限。 1、netstat顯示的tcp連接數正常 netstat -n | awk '/^tcp/ {++state[$NF]} END …

    Linux干貨 2016-04-13
  • 新鮮出爐的一篇好PPT,MySQL Optimizer團隊力作

    新鮮出爐的一篇好PPT,MySQL Optimizer團隊Senior Principal Software Engineer ?ystein同學親自操刀完成的《How to Analyze and Tune MySQL Queries for Better Performance》內容值得期待,有實現分析,有實戰用例。有需要的朋友可以點擊下載! 下載地址:…

    Linux干貨 2015-02-27
欧美性久久久久