Linux操作系統(tǒng)啟動流程
前言
在上一章節(jié),我們學習了與操作系統(tǒng)啟動相關的幾個概念,今天,一起探討操作系統(tǒng)的啟動流程。
注:本文是之前學習Linux時的學習筆記,部分內容參考書籍《曝光:Linux企業(yè)運維實戰(zhàn)》,在此感謝吳光科老師和京峰教育的優(yōu)質教學。
Linux操作系統(tǒng)啟動流程
本文以 CentOS 系列為例,為大家詳解Linux操作系統(tǒng)啟動流程。
02 CentOS 6 啟動流程
- 1、加載BIOS
當計算機打開電源后,首先是BIOS開機自檢,按照BIOS中設置的啟動設備(通常是硬盤)來啟動。
- 2、讀取MBR
加載完BIOS信息后,計算機將會查找BIOS所指定的硬盤,讀取該磁盤的MBR存儲記錄信息,引導系統(tǒng)啟動。
- 3、GRUB引導
選擇啟動的內核/進行單用戶模式重置密碼
- 4、 加載Kernel
計算機讀取內存映像,當屏幕輸出“OK,booting the kernel”。系統(tǒng)將內核放置在內存中,并調用 start_kernel()函數來啟動一系列的初始化函數并初始化各種設備,完成Linux核心環(huán)境的建立。
- 5、設定系統(tǒng)運行級別
內核加載完畢,將啟動第一個守護進程 init,然后通過讀取該進程讀取/etc/inittab文件,設定inittab運行等級。
- Linux 常見運行級別如下:
- 1、 0:關機模式
- 2、 1:單用戶模式
- 3、 2:無網絡支持的多用戶模式
- 4、 3:字符界面多用戶模式
- 5、 4:保留,未使用
- 6、 5:圖形界面多用戶模式
- 7、 6:重新引導系統(tǒng),重啟模式
- 6、 加載rc.sysinit(系統(tǒng)初始化)
讀取完運行級別,系統(tǒng)將執(zhí)行第一個用戶層文件/etc/rc.d/rc.sysinit,該文件功能包括:設定PATH運行變更、設定網絡配置、啟動swap分區(qū)、設定/proc、系統(tǒng)函數、配置SELinux等。
- 7、加載內核模塊
讀取/etc/modules.conf文件及/etc/modules.d目錄下的文件夾來加載系統(tǒng)內核模塊。該模塊文件,可以后期添加或者修改及刪除。
- 8、啟動運行級別程序
根據第5步讀取到的運行級別,操作系統(tǒng)會運行rc0.d到rc6.d中相應的腳本程序,來完成相應的初始化工作和啟動相應的服務。
- 9、讀取 rc.local文件
操作系統(tǒng)啟動完相應服務后,會讀取執(zhí)行/etc/rc.d/rc.local文件,可以將需要開機啟動的任務加入到該文件末尾,系統(tǒng)會逐行去執(zhí)行并啟動相應命令。如下圖所示:
- 10、執(zhí)行/bin/login程序
執(zhí)行/bin/login程序,啟動到系統(tǒng)登錄界面,如下圖所示,輸入用戶名、密碼即可登錄Linux操作系統(tǒng)。至此該操作系統(tǒng)完整啟動流程完畢。
03 CentOS 7 啟動流程
CentOS 7 和CentOS 6 啟動流程差不多,只不過到init程序時候,改為了systemd。
CentOS 7 引導順序:
- UEFi或BIOS初始化,運行POST開機自檢
- 選擇啟動設備
- 引導裝載程序, centos7是grub2
- 加載裝載程序的配置文件:/etc/grub.d/、/etc/default/grub、/boot/grub2/grub.cfg
- 加載內核選項
- 加載initramfs初始化偽文件系統(tǒng)
- 內核初始化,centos7使用systemd代替init
- 執(zhí)行initrd.target所有單元,包括掛載/etc/fstab
- 從initramfs根文件系統(tǒng)切換到磁盤根目錄
- systemd執(zhí)行默認target配置,配置文件/etc/systemd/system/default.target
- systemd執(zhí)行sysinit.target初始化系統(tǒng)及basic.target準備操作系統(tǒng)
- systemd啟動multi-user.target下的本機與服務器服務
- systemd執(zhí)行multi-user.target下的/etc/rc.d/rc.local
- Systemd執(zhí)行multi-user.target下的getty.target及登錄服務
- systemd執(zhí)行graphical需要的服務
下圖是我在網上看到的,總結很詳細,分享給大家。僅供學習,若存在版權問題,請聯(lián)系處理。謝謝
本文轉載自微信公眾號「開源Linux」,可以通過以下二維碼關注。轉載本文請聯(lián)系開源Linux公眾號。