CentOS 5和6的啓動流程

1、Linux組成linux

    1. linux:kernel+rootfs
windows

        kernrl的做用:進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能
緩存

        rootfs:程序和glibc
安全

        庫:函數集合,function,調用接口(頭文件負責描述)
bash

            過程調用:procedure ,無返回值
網絡

            函數調用:function
ide

        程序:二進制執行文件
模塊化

    2.內核設計流派:函數

        單內核(monolithic kernel):Linux工具

            把全部功能集成於一個程序

        微內核(micro kernel):Windows,Solaris

            每種功能使用一個單獨子系統實現    

    3.內核特色:

        支持模塊化:.ko(內核對象)

            如:文件系統,硬件驅動,網絡協議等

        支持內核模塊的動態裝載和卸載

     4.內核組成部分:

        核心文件:/boot/vmlinuz-VERSION-release

            ramdisk:輔助的僞根系統

                CentOS 5:/booot/initrd-VERSION-release

                CentOS 6,7:/boot/initramfs-VERSION-release.img

            模塊文件:/lib/modules/VERSION-release

2、圖文簡述系統啓動流程

11111.PNG

    1.加載BIOS的硬件信息,獲取第一個啓動設備。

    2.讀取第一個啓動設備MBR的引導加載程序(grub)的啓動信息

    3.加載核心操做系統的核心信息,核心開始解壓縮,並嘗試驅動全部的硬件設備。

    4.核型執行init程序並獲取運行信息。

    5.Init執行/etc/rc.d/rc.sysinit文件。

    6.啓動核心的外掛模塊(/etc/modprobe.conf)。

    7.Init執行運行的各個批處理文件(scripts).

    8.Init執行/etc/rc.d/rc.local.

    9.執行/bin/login程序,等待用戶登陸。

    10.登陸以後開始以Shell控制主機。

3、啓動中部分過程詳解

    1.POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串並行接口、鍵盤、CD-ROM光驅等硬件狀況的檢測。

    

        1) ROM:BIOS,Basic Input and Output System,保存着有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和系統啓動自舉程序等。

        2) RAM:CMOS互補金屬氧化物半導體,保存各項參數的設定

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

    2.bootloader: 引導加載器,引導程序

        1)windows: ntloader,僅是啓動OS

        2)Linux:功能豐富,提供菜單,容許用戶選擇要啓動系統或不一樣的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,並把系統控制權移交給內核

            LILO:LInuxLOader

            

            GRUB: GRandUnified Bootloader

                GRUB 0.X: GRUB Legacy,GRUB2

    2.MBR:

        446: bootloader,64: 分區表, 2: 55AA

    3.GRUB:

        primary boot loader : 1st stage,1.5 stage

        secondary boot loader :2nd stage,分區文件

    4.kernel:

        自身初始化:

            

            探測可識別到的全部硬件設備

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

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

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

    5.init程序的類型:

            

         1)SysV: init, CentOS 5以前

            配置文件:/etc/inittab

        2)Upstart: init,CentOS6

            配置文件:/etc/inittab, /etc/init/*.conf

        3)Systemd:systemd, CentOS 7

            配置文件:/usr/lib/systemd/system

                 /etc/systemd/system   

        

    6.ramdisk:

        內核中的特性之一:使用緩衝和緩存來加速對磁盤上的文件訪問

        ramdisk--> ramfs提升速度

        CentOS 5: initrd, 工具程序:mkinitrd

        CentOS 6: initramfs,工具程序:mkinitrd, dracut

    7.系統初始化

        POST --> BootSequence(BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只讀) --> init(systemd)

        1.系統運行級別:爲系統運行或維護等目的而設定;0-6:7個級別

           

            0:關機

            1:單用戶模式(root自動登陸), single, 維護模式

            2: 多用戶模式,啓動網絡功能,但不會啓動NFS;維護模式

            3:多用戶模式,正常模式;文本界面

            4:預留級別;可同3級別

            5:多用戶模式,正常模式;圖形界面

            6:重啓

     

            

            默認級別:3, 5

            切換級別:init#

            查看級別:runlevel; who -r


        2.init初始化

            

            初始運行級別(RUN LEVEL)

            系統初始化腳本

            對應運行級別的腳本目錄

            捕獲某個關鍵字順序

            定義UPS電源終端/恢復腳本

            在虛擬控制檯生成getty

            在運行級別5初始化X


4、系統啓動相關的配置文件和腳本

    1.配置文件:/etc/inittab

        每一行定義一種action以及與之對應的process

        id:runlevel:action:process

        action:

            wait: 切換至此級別運行一次

            respawn:此process終止,就從新啓動之

            initdefault:設定默認運行級別;process省略

            sysinit:設定系統初始化方式,此處通常爲指定

                /etc/rc.d/rc.sysinit

            

            ca::ctrlaltdel:/sbin/shutdown -t3 -r now

        id:3:initdefault:

        si::sysinit:/etc/rc.d/rc.sysinit

        l0:0:wait:/etc/rc.d/rc0

        l1:1:wait:/etc/rc.d/rc1...

        l6:6:wait:/etc/rc.d/rc6

    2.其它相關配置文件

        

        /etc/inittab:設置系統默認的運行級別

            id:3:initdefault:

        /etc/init/control-alt-delete.conf:設備Ctrl+ALT+delete鍵的動做

             cat /etc/init/control-alt-delete.conf中控制Ctrl+ALT+del重啓,把其關閉比較好

        /etc/init/tty.conf:設備終端相關的信息

        /etc/init/start-ttys.conf:設備啓動終端相關的信息

        /etc/init/rc.conf:設備啓動文件相關的信息

        /etc/init/prefdm.conf

    3.系統初始化腳本:

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

        

            (1) 設置主機名

            (2) 設置歡迎信息

            (3) 激活udev和selinux

            (4) 掛載/etc/fstab文件中定義的文件系統

            (5) 檢測根文件系統,並以讀寫方式從新掛載根文件系統

            (6) 設置系統時鐘

            (7) 激活swap設備

            (8) 根據/etc/sysctl.conf文件設置內核參數

            (9) 激活lvm及software raid設備

            (10) 加載額外設備的驅動程序

            (11) 清理操做


    4.關於啓動腳本的一些說明

       

        說明:rcN --> 意味着讀取/etc/rc.d/rcN.d/

            K*: K##*:##運行次序;數字越小,越先運行;數字越小的服務,一般爲依賴到別的服務

            S*: S##*:##運行次序;數字越小,越先運行;數字越小的服務,一般爲被依賴到的服務

        for srvin /etc/rc.d/rcN.d/K*; do

            $srvstop

        done

        for srvin /etc/rc.d/rcN.d/S*; do

            $srvstart

        done

5、程序啓動關閉相關命令及服務    

    1.chkconfig命令

        查看服務在全部級別的啓動或關閉設定情形:

            chkconfig[--list] [name]

        添加:

            SysV的服務腳本放置於/etc/rc.d/init.d(/etc/init.d)

            chkconfig--add name

                #!/bin/bash

                #LLLL 表示初始在哪一個級別下啓動,-表示都不啓動

                # chkconfig: LLLL nnnn

        刪除:

            chkconfig--del name

        修改指定的連接類型:

            chkconfig[--level levels] name <on|off|reset>

                --level LLLL: 指定要設置的級別;省略時表示2345

            

    2.ntsysv命令:圖形化設置系統服務啓動的命令

    11111.PNG

    3.xinetd管理的服務

        service命令:手動管理服務

            service服務:start|stop|restart|

            service --status-all

        瞬態(Transient)服務被xinetd進程所管理

        進入的請求首先被xinetd代理

        配置文件:/etc/xinetd.conf、/etc/xinetd.d/<service>

        與libwrap.so文件連接

        用chkconfig控制的服務:

            chkconfig tftp on

    4.其它一些說明:

        注意:正常級別下,最後啓動一個服務S99local沒有連接至/etc/rc.d/init.d一個服務腳本,而是指向了/etc/rc.d/rc.local腳本

        不便或不需寫爲服務腳本放置於/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置於/etc/rc.d/rc.local文件中

        /etc/rc.d/rc.local在指定運行級別腳本後運行

        能夠根據狀況,進行自定義修改

        

        1:2345:respawn:/usr/sbin/mingettytty1

        2:2345:respawn:/usr/sbin/mingettytty2

        ...

        6:2345:respawn:/usr/sbin/mingettytty6

        mingetty會自動調用login程序

        x:5:respawn:/etc/X11/prefdm -nodaemon

 

 

6、GRUB legacy

    1.CentOS 6啓動流程

        POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) --> rootfs--> switchroot--> /sbin/init-->(/etc/inittab, /etc/init/*.conf) --> 設定默認運行級別--> 系統初始化腳本rc.sysinit--> 關閉或啓動對應級別的服務--> 啓動終端

    2.grub: GRandUnified Bootloader

        

        grub 0.x: grub legacy

        grub 1.x: grub2

        grub legacy:

            stage1: mbr

            stage1_5: mbr以後的扇區,讓stage1中的bootloader

        能識別stage2所在的分區上的文件系統

            stage2:磁盤分區(/boot/grub/)

    3.配置文件:/boot/grub/grub.conf<--/etc/grub.conf

    4.stage2及內核等一般放置於一個基本磁盤分區

    5.grub的功用:

        (1) 提供啓動菜單、並提供交互式接口

            a:內核參數

            b: 編輯模式,用於編輯菜單

            c: 命令模式,交互式接口

        (2) 加載用戶選擇的內核或操做系統

            容許傳遞參數給內核

            可隱藏啓動菜單

        (3) 爲菜單提供了保護機制

            爲編輯啓動菜單進行認證

            爲啓用內核或操做系統進行認證

    6.grub的命令行接口

    

        help: 獲取幫助列表

        help KEYWORD: 詳細幫助信息

        find (hd#,#)/PATH/TO/SOMEFILE:

        root (hd#,#)

        kernel /PATH/TO/KERNEL_FILE: 設定本次啓動時用到的內核文件;額外還可添加許多內核支持使用的cmdline參數

        例如:max_loop=100 selinux=0init=/path/to/init

        initrd/PATH/TO/INITRAMFS_FILE: 設定爲選定的內核提供額外文件的ramdisk;

        boot: 引導啓動選定的內核

    7.cat /proc/cmdline 查看內核參數

    8.內核參數文檔:/usr/share/doc/kernel-doc-2.6.32/Documentation/kernel-parameters.txt

     9.配置文件說明:/boot/grub/grub.conf

        

        default=#: 設定默認啓動的菜單項;落單項(title)編號從0開始

        timeout=#:指定菜單項等待選項選擇的時長

        splashp_w_picpath=(hd#,#)/PATH/TO/XPM_FILE:菜單背景圖片文件路徑

        hiddenmenu:隱藏菜單

        password [--md5] STRING: 啓動菜單編輯認證

        title TITLE:定義菜單項「標題」, 可出現屢次

        root (hd#,#):grub查找stage2及kernel文件所在設備分區;爲grub「根」

        kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:啓動的內核

        initrd/PATH/TO/INITRAMFS_FILE: 內核匹配的ramfs文件

        password [--md5] STRING: 啓動選定的內核或操做系統時進行認證

    10.密碼生成工具:grub-md5-crypt命令

    11.破解root口令:

        啓動系統時,設置其運行級別1

        進入單用戶模式:

            

            (1) 編輯grub菜單(選定要編輯的title,然後使用e命令);

            (2) 在選定的kernel後附加

                1, s, S或single均可以;

            (3) 在kernel所在行,鍵入「b」命令

            (4)進行密碼的從新設置


    12.安裝grub:

        

        (1) grub-install

        安裝grub stage1和stage1_5到/dev/DISK磁盤上,並複製GRUB相關文件到DIR/boot目錄下

            grub-install --root-directory=DIR /dev/DISK

        (2) grub

         

            grub> root (hd#,#)

            grub> setup (hd#)

相關文章
相關標籤/搜索