CentOS5和6的系統啓動流程


CentOS 56的啓動流程linux

咱們在啓動linux後,等待輸入用戶名和密碼就能夠進入系統了。那麼linux系統在內部是怎樣啓動的呢?下面咱們就來介紹下linux系統的啓動流程。c#

下面以CentOS6爲例詳細介紹下Linux系統的啓動流程緩存

Linux啓動流程的大體過程網絡

wKiom1XpFtOwZm5cAAIhlBjg9F0978.jpg

  (1)POST加電自檢
ide

    POST(PowerOnSelfTest)首先對每個設備進行檢查。完成後會交給BIOS尋找存有引導記錄的設備,找到後讀入操做系統引導記錄,而後將系統控制權交給引導記錄,並由引導記錄來完成系統的順利啓動。工具

  (2)MBR引導
測試

    MBR(Master Boot Record) MBR記錄通常是在磁盤 0 磁道 1 扇區,共512個字節。前446個字節是BootLoder,後 4*16 的 64 個字節是存放分區信息的,最後 2 個字節是校驗信息,通常是 55AA。spa

  (3)GRUB(GRand Unified Bootloader)、加載內核操作系統

    就是MBR中的前 446 個字節,是BooTLoader的一種,它的做用是要選擇要啓動和加載內核的。blog

  (4)kernel

    Linux屬於單核系統:Kernel+各類外圍模塊組成。經過grub加載內核後(有可能會藉助於ramdisk加載驅動),內核開始自我解壓並工做經過虛擬根文件系統initrfs 調用init工做。

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

    CentOS 5: initrd,  工具程序:mkinitrd

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

  (5)啓動init程序(/sbin/init)

    init程序的類型:

    SysV: init, CentOS 5

  配置文件:/etc/inittab

Upstart: init, CentOS 6

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

        Systemd:systemd, CentOS 7

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

   /sbin/init程序有0-6,七個級別

   0:關機

    1:單用戶模式(root, 無須登陸), single, 維護模式;

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

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

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

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

    6:重啓

    默認級別爲3,5,配置文件是/etc/inittab

    wKioL1XpNMixh2IbAANOK5IGzZ8359.jpg

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

配置文件中四個字段的定義:id:runlevel:action:process


   action:(action的選項)

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

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

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

    sysinit:設定系統初始化方式,此處通常爲指定/etc/rc.d/rc.sysinit;

 init程序啓動之後首先運行腳本/etc/inittab來讀取級別,若是你指定級別,就按指定級別運行,不是就是用默認的3級別;

 而後運行/etc/rc.d/rc.sysinit這來初始化腳本;

運行完後會執行/etc/rc.d/rc#.d
    /etc/rc.d 目錄中存放着123456運行級別的目錄,

wKioL1XpODvg1YuKAAKhUM6KesU599.jpg


每個rc#.d裏都包含不少K或S開頭的文件這些都是連接文件,這些文件表明這個級別須要啓動和關閉的服務,K開頭表示須要關閉的服務,S開頭表示須要關閉的服務

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

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

    chkconfig命令:查看和管理每一個級別下的服務的狀態

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

        chkconfig [--list] [name]或者直接chkconfig

wKiom1XpODzxVvjLAATxy9TiRWA802.jpg

        添加:  chkconfig --add name  能夠將本身寫的一些腳本,讓此命令統一管理

    這條命令是在每一個級別裏面建立對應的K或S開頭的文件,建立什麼類型的文件要根據/etc/rc.d/init.d (/etc/init.d)的配置文件

咱們測試一下,編輯一個配置文件/etc/rc.d/init.d/testsrv

wKioL1XpQHbw9txtAADFu_eK2SM143.jpg

wKiom1XpPlKQj1BmAAGDYl3NfGE470.jpg


        刪除:  chkconfig --del name 服務不禁chkconfig這種機制來管理

      修改指定的連接類型:

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

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

wKiom1XpP5PBawHcAAL0p97WxS4593.jpg

使用這個命令修改下chkconfig --level 45 testsrv off

wKioL1XpQerAvdXcAAItqhG_HnA203.jpg

    

    前面執行完了,會執行/etc/rc.d/rc.local腳本,此腳本是啓動過程當中最後啓動的一個腳本。

       所以不便或不需寫爲服務腳本放置於/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令能夠放在/etc/rc.d/rc.local中

    最後會執行 /bin/login 登陸用戶。至此系統啓動過程完成

相關文章
相關標籤/搜索