CentOS6系統啓動流程


CentOS 6 啓動流程 | root密碼重置 | 添加系統服務



一、CentOS 6 啓動流程:


    1)POST加電自檢

        Power-On-Self-Test,主板在接通電源後,系統首先由BIOS程序來對對CPU、主板、內存、硬盤子系統、顯示子系統、串並行接口、鍵盤、CD-ROM光驅等硬件情況的檢測。

        自檢中如發現有錯誤,將按兩種情況處理:對於嚴重故障則停機,對於非嚴重故障則給出提示或聲音報警信號,等待用戶處理。

        主板上 ROM:保存了BIOS程序    RAM:保存各項參數設定

        BIOS按設定次序查找引導設備,第一個有引導程序的設備爲本次啓動設備


    2)讀取 MBR

        讀取第一個啓動設備MBR中的bootloader(前446字節),CentOS 6爲grub程序,bootloader空間有限僅保存了grub第一階段stage1。


    3)引導加載程序 GRUB

        stage1:存在於MBR前446字節中,加載stage1_5,stage2,initramfs*.img

        stage1_5:在MBR之後62個扇區中,保存了必要的文件系統驅動程序等,讓stage1能識別stage2所在分區上的文件系統;

        stage2:提供菜單交互接口,讓用戶以選項方式加載內核、改變參數、修改選項,獲取grub.conf以及menu.lst等文件的內容,可提供認證保護機制。


    4)加載內核

        自身初始化:

        探測可識別到的所有硬件設備

        加載硬件驅動程序(可能藉助於ramdisk加載驅動)

    內核無法識別硬盤上各驅動程序所在的設備,藉助已識別的boot分區中的initramfs-VERSION-RELEASE.img文件(一個壓縮的小型根目錄,包含啓動階段必須的驅動模塊,可執行文件和啓動腳本),

將其掛載爲臨時根目錄,執行啓動腳本,加載真實文件系統以掛載真正的根目錄並切換根目錄。

        以只讀方式掛載根文件系統

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


    5)啓動 init

        內核加載完畢,運行init程序,系統啓動的控制權移交給init進程

        init進程是所有進程的父進程,它會讀取配置文件/etc/inittab,進行以下工作:

        1.執行系統初始化腳本(/etc/rc.d/rc.sysinit),對系統進行基本的配置,以讀寫方式掛載根文件系統及其它文件系統,進行運行級別的確定及相應服務的啓動;
        2.確定啓動後進入的運行級別,共7個,默認3,5;
        3.執行/etc/rc.d/rc,定義服務啓動的順序是先K後S,具體的每個運行級別的服務狀態是放在/etc/rc.d/rc#.d(#=0~6)目錄下,所有的文件均鏈接至/etc/init.d下的相應文件。
        4.有關key sequence的設置
        5.有關UPS的腳本定義
        6.啓動虛擬終端/sbin/mingetty 
        7.在運行級別5上運行X


    系統初始化:

   POST-->BootSequence(BIOS)-->Bootloader(MBR)-->kernel(ramdisk)-->rootfs-->/sbin/init


    在rc.loacl中添加自定義開機運行腳本:

        正常級別下,最後啓動的一個服務S99local沒有鏈接至/etc/init.d下的某腳本,而是鏈接至了/etc/rc.d/rc.local (/etc/rc.local)腳本;因此,不便或不需寫爲服務腳本的程序期望能開機自動運行時,可直接放置於此腳本文件中。




二、root密碼重置

    1.進入單用戶模式

        開機時鍵入 e ,進入grub菜單頁面,鍵入 a,在kernel行尾添加1,s,S,sigle任意一個,即單用戶模式,回車啓動系統

    2.直接用passwd更改密碼

        進入命令行後直接鍵入passwd即可更改密碼




三、添加系統服務

    CentOS 6中系統服務腳本都放在/etc/init.d目錄下,當用戶使用service命令對某個服務進行操作時,實際上是調用了該目錄下的腳本,所以我們也可以添加自己的服務腳本。

    1.編寫服務腳本

        前三行基本格式:vi testsrv

            #!bin/bash

            #chkconfig: 35 91 09

            #description:testsrv..

    腳本第一行爲shellbang

    第二行chkconfig後跟3個數,第1個數爲需啓動的級別,35表運行級別爲3或5時啓動;第2個數爲啓動優先級,數字越大優先級越低,越在後面啓動;第3個數爲關閉優先級,數字越小優先級越高,越先關閉;

    一般後兩個數之和爲100,被依賴性不高的服務可以後啓動,後啓動的先關閉;後兩位若爲一位數(0-9),應寫成08格式

    第三行爲描述信息,可根據需要修改。

        服務腳本應能識別基本的參數 [ start|stop|restart|status ]

        將寫好的腳本放在/etc/init.d目錄下

    2.添加爲系統服務

        chkconfig --add /etc/init.d/testsrv

        該命令將腳本添加爲系統服務,讓chkconfig可以管理它,並在每個運行等級啓動服務(/etc/rc.d/rc#.d)目錄下創建對應符號鏈接K/S入口,K開頭表關閉,S開頭表啓動


    3.服務操作

        chkconfig --level 35 testsrv on    修改服務的默認啓動等級

        service testsrv restart    重啓服務









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章