1. 程式人生 > >centos6,7的啟動流程

centos6,7的啟動流程

centos

CentOS 6 系統啟動流程:

POST --> BootSequence(BIOS) --> Bootloader --> kernel [-->ramfs] -->rootfs(ro) --> /sbin/init --> 設定默認運行級別 --> 系統初始化 --> 可以並行執行ctrl+alt+del熱鍵功能定義,系統服務的開啟和關閉,電源管理,dbus管理等 --> 登錄提示符

CentOS 7:

Init程序:systemd,與經典的Init程序完全不同;其配置文件:

/etc/systemd/system/*

/usr/lib/systemd/system/*:systemd的UNIT文件;


/etc/inittab:徹底被廢棄;


systemd完全兼容SysV風格的Init程序及其腳本;因此,service類的命令在CentOS7中依然可用;但是,建議使用CentOS7標配的systemctl命令來控制和管理系統服務;


systemctl命令:

systemctl - Control the systemd system and service manager

systemctl [OPTIONS...] COMMAND [NAME...]


使用systemctl管理服務的一般方式:

systemctl {start|stop|restart|status} name[.service]


設置CentOS 7的默認運行級別:

~]# systemctl set-default {multi-user.target | graphical.target}


查看CentOS 7的默認運行級別:

~]# systemctl get-default

系統初始化流程(內核級別)

POST --> BootSequence(BIOS) --> BootLoader(MBR) --> kernel(內核核心文件只能放置在基本分區上) [--> ramdisk] --> rootfs(read-only) --> /sbin/init


CentOS 5的SysV Init的工作過程:

CentOS 5 SysV Init:

運行級別(run level):為了系統的運行或維護等目的而設置的管理機制;

0-6 : 七個運行級別;

# 0 - 關機,halt,shutdown

# 1 - 單用戶模式(Single user mode),root,無需驗證;維護模式;

# 2 - 多用戶模式(Multiuser),會啟動網絡功能;但不會啟動NFS,維護模式;

# 3 - 多用戶模式(Full multiuser mode),完全的功能模式,僅使用CLI,不激活GUI;

# 4 - 預留級別,目前無特別使用的目的;但是習慣上認為與3運行級別相同;

# 5 - 多用戶模式(Full multiuser mode),完全的功能模式,默認激活GUI和CLI,默認使用的是GUI;

# 6 - 重啟,reboot


通常會使用3,5運行級別作為此次系統啟動的默認運行級別;

查看當前系統的運行級別:

who -r

runlevel


切換運行級別:

init [0-6]


Init的配置文件:/etc/inittab,此配置文件有如下功能:

1.在整個系統初始化的過程中要做哪些任務;

啟動或關閉哪些後臺服務;

如何進行系統初始化;

在驗證用戶的身份無誤之後,如何為用戶提供登錄提示符,還要區分是圖形界面還是文件界面;

當備用電源失效或重新生效時,如何指揮系統操作;

定義了按下"Ctrl + Alt + Delete"組合鍵時,系統將采取什麽行為;


2.所有規定的任務如何執行;

每一行定義一種操作,格式如下:

id:runlevels:action:process


id:一種操作的唯一標識符;

l#, id, pf, pr, #, x,

runlevel:指定任務執行所依賴的運行級別;

####, #, 留空

action:在何種條件下啟動此任務;

wait:等待切換至此任務所在的運行級別時,運行一次;

respawn:一旦此任務結束,就自動重新啟動此任務;

initdefault:用於設定默認的運行級別,通常後面的process省略

sysinit:設置系統初始化的方式,一般情況下此處運行/etc/rc.d/rc.sysinit腳本;

powerfail:

powerokwait:

ctrlaltdel:


/etc/rc.d/rc.sysinit:

1.設置主機名稱;

2.設置啟動的歡迎信息;

3.激活udev和SELinux

4.掛載/etc/fstab文件中定義的所有有效文件系統;

5.激活各個swap設備;

6.檢測rootfs,並且以讀寫的方式重新掛載rootfs;

7.設置系統時間;

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

9.激活lvm和軟RAID等高級邏輯設備;

10.加載額外的設備的驅動程序;

11.完成清理工作;


/etc/rc.d/rc:

根據特定的運行級別,啟動或關閉/etc/rc.d/rc$runlevel.d/*

K*:要停止的服務;K字母後面的兩位數字表示優先級;數字越小優先級越高;依賴其他服務的服務應該優先關閉,被其他服務依賴的服務應該稍後關閉;


S*:要啟動的服務;S字母後面的兩位數字表示優先級;數字越小優先級越高;被其他服務依賴的服務應該優先啟動,依賴其他服務的服務應該稍後啟動;


rc腳本可以接受一個運行級別作為其參數運行內容的;


腳本框架:

for i in /etc/rc.d/rc#.d/K* ; do

$i stop

done


for i in /etc/rc.d/rc#.d/S* ; do

$i start

done


所有由rc腳本關閉或啟動的鏈接文件的源文件都存在於/etc/rc.d/init.d,系統為了方便使用,為此目錄創建了鏈接/etc/init.d


所有/etc/init.d(/etc/rc.d/init.d)目錄中的腳本執行方式:

# /etc/init.d/SRV_SCRIPT {start|stop|restart|status}

# service SRV_SCRIPT {start|stop|restart|status}


chkconfig命令:

chkconfig - updates and queries runlevel information for system services

查看系統服務相關運行級別下的運行狀態:

chkconfig --list [name]


本文出自 “12481507” 博客,請務必保留此出處http://12491507.blog.51cto.com/12481507/1950546

centos6,7的啟動流程