CentOS 5和6的啓動流程linux
咱們在啓動linux後,等待輸入用戶名和密碼就能夠進入系統了。那麼linux系統在內部是怎樣啓動的呢?下面咱們就來介紹下linux系統的啓動流程。c#
下面以CentOS6爲例詳細介紹下Linux系統的啓動流程緩存
Linux啓動流程的大體過程網絡
(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
每一行定義一種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運行級別的目錄,
每個rc#.d裏都包含不少K或S開頭的文件這些都是連接文件,這些文件表明這個級別須要啓動和關閉的服務,K開頭表示須要關閉的服務,S開頭表示須要關閉的服務
K*: K##*:##運行次序;數字越小,越先運行;數字越小的服務,一般爲依賴到別的服務;
S*: S##*:##運行次序;數字越小,越先運行;數字越小的服務,一般爲被依賴到的服務;
chkconfig命令:查看和管理每一個級別下的服務的狀態
查看服務在全部級別的啓動或關閉設定情形:
chkconfig [--list] [name]或者直接chkconfig
添加: chkconfig --add name 能夠將本身寫的一些腳本,讓此命令統一管理
這條命令是在每一個級別裏面建立對應的K或S開頭的文件,建立什麼類型的文件要根據/etc/rc.d/init.d (/etc/init.d)的配置文件
咱們測試一下,編輯一個配置文件/etc/rc.d/init.d/testsrv
刪除: chkconfig --del name 服務不禁chkconfig這種機制來管理
修改指定的連接類型:
chkconfig [--level levels] name <on|off|reset>
--level LLLL: 指定要設置的級別;省略時表示2345
使用這個命令修改下chkconfig --level 45 testsrv off
前面執行完了,會執行/etc/rc.d/rc.local腳本,此腳本是啓動過程當中最後啓動的一個腳本。
所以不便或不需寫爲服務腳本放置於/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令能夠放在/etc/rc.d/rc.local中
最後會執行 /bin/login 登陸用戶。至此系統啓動過程完成