CentOS 5/6啓動流程linux
1.加電自檢(post)
按開機電源後經過CMOS芯片的BIOS系統檢測系統硬件是否正常centos
2.查找系統引導
2.1 經過BIOS中的引導設置BOOT Sequence按次序查找引導程序,經過第一個有引導程序的設備啓動;安全
2.2 加載bootloader,經過bootloader選擇須要加載的內核版本,將用戶選擇的內核版本加載到內存中特定的位置,解壓展開,而後將控制全轉交給內核
(1)MBR引導程序
446字節:bootloader
64字節:分區表
2:結束標示 55AA
(2)GRUB:多操做系統管理器
bootloader:1st stage
disk:2nd stage服務器
3.啓動內核
3.1 內核的功能:進程管理、內存管理、網絡管理、驅動管理、文件系統、安全功能網絡
3.2 linux內核特色:
(1)模塊化設計,並且各模塊能夠動態卸載和加載;
(2)內核核心文件有 /boot/vmlinuz-VERSION-release 和ramdisk。ramdisk在CentOS 5中的路徑爲 /boot/initrd.VERSION-release.img,在CentOS 6中的路徑爲 /boot/initramfs-VERSION-release.img
(3)模塊文件存在路徑 /lib/modules/VERSION-release
3.3 kenel自身初始化過程
(1)探測可識別的全部硬件設備;
(2)加載硬件驅動程序;(有可能會藉助於ramdisk加載驅動)
(3)以只讀的方式掛載跟文件系統
(4)運行用戶空間第一個應用程序/sbin/init
3.4 init程序類型根據系統不一樣有如下幾種:
(1)centos 5使用的是Sysv,配置文件路徑 /etc/inittab
(2)centos 6使用的是Upstart,配置文件路徑/etc/inittab /etc/init/*.conf
(3)centos 7使用的是systemd,配置文件路徑 /usr/lib/systemd/system /etc/systemd/system
3.5 CentOS 5/6運行級別
分爲0-6,七個級別
0:關機,
1:單用戶模式(登陸即爲root用戶,無需用戶密碼驗證),可輸入命令1或single進入,也可稱爲維護模式
2:多用戶模式,會啓動網絡功能,但不會啓動NFS,也可稱爲維護模式
3:多用戶模式,3屬於正常模式,僅啓動文本界面
4:預留級別,同3;
5:多用戶模式,可啓動圖形界面;
6:重啓
3.6 init 的切換命令和配置解析
(1)init #:通常模式級別爲3,5,#爲級別編號;
(2)runlevel:查看當前運行級別與最近一次切換前的級別
(5)who -r:相似與runlevel
3.7 /etc/inittab 配置文件解析
id:runlevel:action:process
id:每一登記項的惟一表示符
runlevel:對應0-6,7個運行級別
action:表示對應登記項在必定條件下運行process的條件
wait:當進入指定runlevel後process會運行一次且在離開此runlevel時process停止
respawn:當process終止後,馬上啓動一個新的
initdefault:設定默認運行級別,process省略
sysinit:系統初始化,只有系統開機或重啓的時候纔會運行一次,此處通常爲指定/etc/rc.d/rc.sysinit
分析:
id:3:initdefault: ------->表示開機後默認會進入3模式(即命令行模式)
si::sysinit:/etc/rc.d/rc.sysinit ----->在全部的運行級別下init都會依賴/etc/rc.d/rc.sysinit這個腳本對系統進行初始化
/etc/rc.d/rc.sysinit的做用以下:
1,激活udev和selinux
2,根據/etc/sysctl.conf文件設定內核參數
3,設定系統時鐘
4,鍵盤的鍵映射,即識別鍵盤
5,啓用swap分區
6,設定主機名
7,根文件系統檢測及從新以讀寫方式掛載
8,激活RAID和LVM設備
9,啓用磁盤配額
10,檢測及掛載其餘文件系統(掛載/etc/fstab中定義的設備)
11,清除過時的鎖和PID文件
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
上述10-16表示當進入n級別時將 /etc/rc.d/rc*.d下的S*文件啓用,K*文件禁用,並且僅針對於對應的級別執行一次,退出此級別失效。每一個/etc/rc.d/rc*.d
K*:K##:##表示關閉次序,數字越大越先運行,數字越小的服務,一般爲依賴比人的服務
S*:S##:##表示啓動次序,數字越小越先運行,數字越小的服務,一般爲被別人依賴的服務。ide
3.8 chkconfig命令
用途:用於查看服務所在級別出於啓動或關閉的狀態,和設置各服務在各啓動級別時的狀態
使用場景1:
(1)chkconfig --list:查看全部服務器在各級別時狀態,頂部的數字表示啓動級別,on表示啓動,off表示關閉
(2)chkconfig --list name:表示查看此項服務在各級別時的狀態。
(3)chkconfig --level # name <on,off,reset>:修改服務在指定級別#時的狀態,當#號省略時表示2345。
(4)添加新服務和刪除服務的方法:
先將增長的腳本放置於/etc/rc.d/(/etc/init.d),編輯腳本在各級別中的狀態 chkconfig :LLLL NN NN
使用chkconfig --add name 添加腳本
使用chkconfig --del name 刪除腳本
注:正常級別下,最後啓動一個服務S99local沒有連接至/etc/rc.d/init.d一個服務腳本,而是指向了/etc/rc.d/rc.local腳本;所以,不便或不需寫爲服務腳本放置於/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置於/etc/rc.d/rc.local文件中;模塊化