Linux系統學習之系統啓動的5個過程

Linux 系統啓動過程

Linux系統的啓動過程可以分爲5個階段:

1. 內核引導

當計算機打開電源後,首先是BIOS開機自檢,按照BIOS中設置的啓動設備(通常是硬盤)來啓動。操作系統接管硬件以後,首先讀入 /boot 目錄下的內核文件。

 fd9239e22d88a1b67206247e87437260.png-wh_

2. 運行init

init 進程是系統所有進程的起點,你可以把它比擬成系統所有進程的老祖宗,沒有這個進程,系統中任何進程都不會啓動。init 程序首先是需要讀取配置文件 /etc/inittab。

nit程序的類型:

  • 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。

 8d2fb76c02904a095506a0d93f4d5546.png-wh_

3. 運行級別

許多程序需要開機啓動。它們在Windows叫做"服務"(service),在Linux就叫做"守護進程"(daemon)。

init進程的一大任務,就是去運行這些開機啓動的程序。

但是,不同的場合需要啓動不同的程序,比如用作服務器時,需要啓動Apache,用作桌面就不需要。

Linux允許爲不同的場合,分配不同的開機啓動程序,這就叫做"運行級別"(runlevel)。也就是說,啓動時根據"運行級別",確定要運行哪些程序。

5795840015d8c47ffaebac8ecb38f345.png-wh_

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參數來運行。

7a9a71490a6cb256009ca29082e344d0.png-wh_

5. 用戶登錄系統

一般來說,用戶的登錄方式有三種:

  • (1)命令行登錄

  • (2)ssh登錄

  • (3)圖形界面登錄

文本方式登錄的情況:當我們看到mingetty的登錄界面時,我們就可以輸入用戶名和密碼來登錄系統了。

Linux的賬號驗證程序是login,login會接收mingetty傳來的用戶名作爲用戶名參數。

然後login會對用戶名進行分析:如果用戶名不是root,且存在/etc/nologin文件,login將輸出nologin文件的內容,然後退出。

這通常用來系統維護時防止非root用戶登錄。只有/etc/securetty中登記了的終端才允許root用戶登錄,如果不存在這個文件,則root可以在任何終端上登錄。

/etc/usertty文件用於對用戶作出附加訪問限制,如果不存在這個文件,則沒有其他限制。

 91e293b04ec7297131c9474db73c81dc.png-wh_


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章