溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統(tǒng)啟動流程

發(fā)布時間:2020-07-05 04:40:12 來源:網(wǎng)絡 閱讀:547 作者:何小帥 欄目:系統(tǒng)運維

CentOS6系統(tǒng)啟動流程

??操作系統(tǒng)(OS)也是一個程序,如果在硬件通電后讓這個特殊的程序運行起來,以及這個特殊的程序在啟動過程中做了什么,如下圖:
Linux系統(tǒng)啟動流程

??從圖中可知,系統(tǒng)啟動(不僅僅是Linux系統(tǒng))大致可分為幾個主要過程:硬件初始化-->找到并加載操作系統(tǒng)的內核-->內核初始化-->操作系統(tǒng)運行環(huán)境初始化-->登錄初始化-->登錄成功后的用戶初始化(包含圖形界面初始化或shell的初始化)-->最終用戶成功進入
操作系統(tǒng)并開始使用操作系統(tǒng)。

下面以CentOS6系統(tǒng)進入命令行為例簡單描述一下上面的幾個主要過程。

1.按下電源通電。主板通電后,CPU開始工作,它執(zhí)行固定地址處的一段非常小的硬編碼程序:BIOS,于是BIOS掌握了CPU控制權。

2.BIOS程序會進行硬件的上電自檢(Power-On Self-Test,POST)以確認有哪些硬件以及這些硬件是否故障。對于我們要探索的操作系統(tǒng)啟動流程來說,最重要的是會根據(jù)檢測到磁盤順序(除了磁盤,也可以是其它硬件設備,比如U盤、光盤、網(wǎng)卡等),按順序找到這些磁盤上正確的MBR,于是MBR開始掌握CPU控制權。

3.MBR是引導系統(tǒng)內核啟動的第一段代碼,它的位置固定處于磁盤的第一個扇區(qū)位置處(如果不固定,就不知道怎么找到MBR)。引導內核啟動的代碼段稱為Boot Loader,除MBR外,還需要通過其它引導系統(tǒng)的代碼段來一步步引導啟動內核,所以要引導一個內核的啟動,需要跳轉并執(zhí)行多段BootLoader。根據(jù)使用的啟動管理工具(如LILIO、GRUB、GRUB2等)不同,這一段段的引導代碼段稱呼和存放位置都不一樣,但第一個引導內核啟動的代碼段一定稱為MBR,也一定處于磁盤的第一個扇區(qū)位置,所以MBR才稱為主引導記錄(Master Boot Record)。

4.當找到內核映像后,將內核映像裝載到內存中并解壓(如果被壓縮的話),內核開始掌握CPU控制權并運行起來,期間內核會做很多工作,包括內核的初始化、掛載真正的根目錄并從臨時根目錄切換到真正的根目錄、啟動一些重要的進程,例如idle、進程調度器、init進程等。然后開始執(zhí)行用戶空間的第一個進程:init進程,于是init進程掌握了CPU的控制權,也從此開始進入用戶空間。

5.init進程開始運行后就表示操作系統(tǒng)真正已經(jīng)啟動成功了,但它仍然需要做系統(tǒng)級別的初始化,比如設置主機名、設置硬件參數(shù)、加載硬件驅動、掛載/etc/fstab中的一些文件系統(tǒng)等等。系統(tǒng)級別的運行環(huán)境一切初始化完成后,于是提供用戶登錄的界面,即init啟動getty類的進程。

6.getty類的進程啟動后,將打開一個終端,并提示用戶輸入用戶名,然后啟動一個login進程讓用戶輸入密碼并驗證密碼,密碼驗證通過后再審核用戶是否有權登錄,如果允許登錄,將根據(jù)/etc/passwd中的配置啟動該用戶對應的shell進程,例如bash進程。

7.shell進程啟動后讀取該shell對應的配置文件,并按照登錄式、交互式的shell運行模式進行初始化,初始化完成后將進入登錄式、交互式的shell,也就是命令行下。

8.至此,用戶可以通過shell命令行來使用操作系統(tǒng)。

CentOS7系統(tǒng)啟動流程

CentOS7的啟動與CentOS6啟動不同之處有兩大點:
1)內核引導階段,CentOS7默認使用grub2引導,而CentOS6默認使用傳統(tǒng)的grub引導。
2)系統(tǒng)環(huán)境初始化和后面的過程。內核初始化完成后,啟動PID=1的過程,而CentOS7中這個進程是systemd,它和CentOS6中的init進程的初始化方式大不相同。

systemd特性:
1)系統(tǒng)初始化時實現(xiàn)服務并行啟動;
2)按需啟動守護進程;
3)自動化的服務依賴關系管理;
4)同時采用socket式與D-Bus總線式激活服務;
5)系統(tǒng)狀態(tài)快照。

以下簡述CentOS7的啟動流程,詳細內容參考:man bootup幫助手冊。
1)UEFI或BIOS初始化,運行POST開機自檢;
2)選擇啟動設備;
3)引導內核,做部分內核初始化工作,加載initramfs;
4)啟動systemd進程,systemd進程此時工作在initramfs環(huán)境下;
5)systemd執(zhí)行initrd.target所有單元,包括掛載/etc/fstab、從ramdisk的虛根文件系統(tǒng)切換到真正的根文件系統(tǒng);
6)systemd執(zhí)行默認target配置,其配置文件為/etc/systemd/system/default.target;
7)systemd執(zhí)行sysinit.target初始化系統(tǒng)及basic.target準備操作系統(tǒng);
8)systemd啟動multi-user.target下的本機與服務器服務;
9)systemd執(zhí)行multi-user.target下的/etc/rc.d/rc.local;
10)systemd執(zhí)行multi-user.target下的getty.target讓用戶登錄;
11)啟動shell進程并初始化,最終進入命令行;

??上面的過程中最需要關注的便是大大提前了systemd的工作:在內核初始化階段就參與了剩下的工作。等到systemd完成了根文件系統(tǒng)的切換后,將正式進入操作系統(tǒng)的初始化過程,這時將進入步驟6),即根據(jù)默認target配置文件default.targe選擇默認的“運行級別”。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI