Linux 系統啓動過程shell
Linux系統的啓動過程能夠分爲5個階段:bash
1. 內核引導服務器
當計算機打開電源後,首先是BIOS開機自檢,按照BIOS中設置的啓動設備(一般是硬盤)來啓動。操做系統接管硬件之後,首先讀入 /boot 目錄下的內核文件。ssh
2. 運行initide
init 進程是系統全部進程的起點,你能夠把它比擬成系統全部進程的老祖宗,沒有這個進程,系統中任何進程都不會啓動。init 程序首先是須要讀取配置文件 /etc/inittab。spa
nit程序的類型:操作系統
SysV: init, CentOS 5以前, 配置文件: /etc/inittab。命令行
Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。orm
Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。blog
許多程序須要開機啓動。它們在Windows叫作"服務"(service),在Linux就叫作"守護進程"(daemon)。
init進程的一大任務,就是去運行這些開機啓動的程序。
可是,不一樣的場合須要啓動不一樣的程序,好比用做服務器時,須要啓動Apache,用做桌面就不須要。
Linux容許爲不一樣的場合,分配不一樣的開機啓動程序,這就叫作"運行級別"(runlevel)。也就是說,啓動時根據"運行級別",肯定要運行哪些程序。
Linux系統有7個運行級別(runlevel):
運行級別0:系統停機狀態,系統默認運行級別不能設爲0,不然不能正常啓動
運行級別1:單用戶工做狀態,root權限,用於系統維護,禁止遠程登錄
運行級別2:多用戶狀態(沒有NFS)
運行級別3:徹底的多用戶狀態(有NFS),登錄後進入控制檯命令行模式
運行級別4:系統未使用,保留
運行級別5:X11控制檯,登錄後進入圖形GUI模式
運行級別6:系統正常關閉並重啓,默認運行級別不能設爲6,不然不能正常啓動
4. 系統初始化
在init的配置文件中有這麼一行: si::sysinit:/etc/rc.d/rc.sysinit 它調用執行了/etc/rc.d/rc.sysinit,而rc.sysinit是一個bash shell的腳本,它主要是完成一些系統初始化的工做,rc.sysinit是每個運行級別都要首先運行的重要腳本。
它主要完成的工做有:激活交換分區,檢查磁盤,加載硬件模塊以及其它一些須要優先執行任務。
/etc/rc.d/rc5.d/中的rc啓動腳本一般是K或S開頭的鏈接文件,對於以以S開頭的啓動腳本,將以start參數來運行。
5. 用戶登陸系統
通常來講,用戶的登陸方式有三種:
(1)命令行登陸
(2)ssh登陸
(3)圖形界面登陸
文本方式登陸的狀況:當咱們看到mingetty的登陸界面時,咱們就能夠輸入用戶名和密碼來登陸系統了。
Linux的帳號驗證程序是login,login會接收mingetty傳來的用戶名做爲用戶名參數。
而後login會對用戶名進行分析:若是用戶名不是root,且存在/etc/nologin文件,login將輸出nologin文件的內容,而後退出。
這一般用來系統維護時防止非root用戶登陸。只有/etc/securetty中登記了的終端才容許root用戶登陸,若是不存在這個文件,則root能夠在任何終端上登陸。
/etc/usertty文件用於對用戶做出附加訪問限制,若是不存在這個文件,則沒有其餘限制。