如果有一天你們公司很重要的一臺linux服務器突然啟動不了了,重裝系統又浪費時間,如果是啟動過程有問題,那么你知道啟動過程可以快速定位系統問題,很快就可以解決。
Linux 系統啟動是一個復雜而有序的過程,它是系統從硬件啟動到軟件運行的全過程。了解 Linux 的啟動過程可以幫助我們更好地理解操作系統如何管理計算機資源,以及如何優(yōu)化系統性能。本文將詳細介紹 Linux 系統啟動的各個階段。
一、內核引導
當計算機打開電源后,首先是 BIOS 開機自檢,按照 BIOS 中設置的啟動設備(通常是硬盤)來啟動。緊接著由啟動設備上的 GRUB 程序開始引導 Linux,當引導程序成功完成引導任務后,Linux 從它們手中接管了 CPU 的控制權,然后 CPU 就開始執(zhí)行 Linux 的核心映象代碼,開始了 Linux 啟動過程。
二、運行 init 進程
在內核加載完畢后,會啟動Linux操作系統第一個守護進程init,這個進程的PID是1,所有的進程都是它的子進程。
通過這個進程讀取/etc/inittab文件,/etc/inittab文件的作用是設定Linux的運行等級,文件內容大致如下:
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have.NETworking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
...
從文件內容知道Linux系統運行等級一共有7種:
0:關機模式,運行等級為0,系統會立即關機,在系統啟動后可以利用這種等級對系統進行關機操作,但是不允許將系統下次啟動時的等級設定為0,否則系統將無法正常啟動(啟動后立即關機)。
1:單用戶模式,類似于windows系統下的安全模式,具有ROOT權限。
2:無網絡支持的多用戶模式,顧名思義就是支持多用戶登錄
3:字符界面多用戶模式,文本命令行界面,一般服務器都是此模式
4:保留,未使用模式
5:圖形界面多用戶模式,系統啟動之后會進入到圖形化桌面系統中
6:重新引導系統,重啟模式,千萬不要設置為6,和0相似。
/etc/inittab文件內容中的設定的行:
id:3:initdefault:
表示啟動的層級為3,即圖形界面多用戶模式。一般3和5比較常用,如果需要其它等級,可以手動修改這個值。
每一個運行級別都在/etc目錄下有一個對應的子目錄,可以指定每一個運行級別需要加載哪些程序,rcN.d的字母d是directory的意思,表示這是一個目錄。
init 進程是系統所有進程的起點,你可以把它比擬成系統所有進程的老祖宗,沒有這個進程,系統中任何進程都不會啟動。init 進程在內核引導完成后立即運行,它的任務是初始化系統環(huán)境,創(chuàng)建一些必要的進程和設備,以及為后續(xù)的啟動步驟做好準備。
三、系統初始化
系統初始化主要通過 rc.sysinit 來進行。這個腳本會進行一些系統特定的初始化操作,比如設置系統時間、掛載文件系統、啟動磁盤檢查等。此外,rc.sysinit 還會加載并啟動一些必要的守護進程和服務,以便在系統啟動的后續(xù)階段能夠正常運行。
四、建立終端
rc.sysinit 執(zhí)行完畢后,返回 init。這時基本系統環(huán)境設置好了,各種守護進程也已經啟動了。init 接下來會打開 6 個終端,以便用戶登錄系統。這些終端分別是:tty1、tty2、tty3、tty4、tty5 和 tty6。用戶可以通過這些終端進行命令行登錄或遠程登錄。
五、用戶登錄
一般來說,用戶的登錄方式有三種:命令行登陸、SSH 登陸、圖形界面登陸。當用戶通過這些方式成功登錄后,就可以開始使用 Linux 系統了。
總之,Linux 系統啟動過程是一個從硬件到軟件、從引導到登錄的復雜過程。通過深入了解這個過程,我們可以更好地理解和優(yōu)化系統的性能,同時也有助于我們解決系統啟動過程中可能遇到的問題。