
計算機從開啟電源到用戶可以登錄,主要經歷了四個階段:
- 初始化BIOS
- 執行啟動加載程式
- 載入內核
- 啟動systemd服務
BIOS

計算機通電后,首先由BIOS進行POST自檢,然后依據BIOS內置的引導順序從引導設備中讀取引導模塊,
BIOS由兩部分組成:POST代碼和運行時服務,當POST完成之后,它被從記憶體中清理出來,但是BIOS運行時服務依然保留在記憶體中,目標作業系統可以使用這些服務,
通常,Linux系統都是從硬碟上引導,其中主引導記錄(MBR)中包含主引導加載程式,MBR是一個512B大小的扇區,位于磁盤上第一個扇區(0道,0柱面,1扇區),當MBR被加載到RAM中之后,BIOS就會將控制權交給MBR,
啟動加載程式
在單一MBR中只能存盤一個作業系統的引導記錄,當需要多個作業系統時就會出現問題,這時就需要更加靈活的引導加載程式,
Linux系統支持兩種常用的引導加載程式: LILO和GRUB,其中GRUB使用更加廣泛,
GNU GRUB(GRand Unified Bootloader簡稱“GRUB”)是一個來自GNU專案的多作業系統啟動程式,GRUB是多啟動規范的實作,它允許用戶可以在計算機內同時擁有多個作業系統,并在計算機啟動時選擇希望運行的作業系統,GRUB可用于選擇作業系統磁區上的不同內核,也可用于向這些內核傳遞啟動引數,
相比于LILO,GRUB的功能更多,其擁有互動式界面,支持網路引導,同時其使用更加安全,避免因組態檔出錯而出現系統無法啟動的問題,
載入內核
內核(Kernel)是作業系統最重要的組件,用來管理計算機中所有的軟硬體組件,以使作業系統具有基本能力,
Centos的許多功能,比如軟體磁盤陣列,LVM,磁盤配額等,都是由內核提供的,
載入內核的程序就是將內核映像加載到記憶體中,內核鏡像不是一個可執行的內核,內核映像的前面是一個例程,它實作少量硬體設定,并對內核映像中包含的內核進行解壓縮,然后將其放入高端記憶體中,然后該歷程會呼叫內核,開始啟動內核引導程序,
Linux內核啟動后,將依次完成四項作業:
- 檢查所有硬體設備
- 驅動硬體設備
- 以只讀方式掛載根檔案系統
- 啟動systemd服務
systemd 服務
在Centos7系統中,systemd行程是系統中所有行程的起點,是第一個運行的,而在Centos6中,第一個運行的行程是init,
systemd服務任務
- 建立系統使用環境,Centos7中所有的環境都是由systemd服務管控的,比如提供虛擬控制臺,切換到其他Target等,
- 確保系統正常運行,Centos7上所有的行程都可視為systemd服務的衍生后代,如果Linux上出現了僵尸行程(Orphan Process),則systemd服務必須結束這些僵尸行程,以確保Linux系統正常運行,
- 監控串行埠的周邊設備,systemd服務也會監控通過串行埠連接到的外部設備,比如UPS,調制解調器等,
- 扮演終結父行程的角色,系統總是可以確信systemd行程的存在,當出現孤兒行程的時候,孤兒行程會以systemd作為他們的父行程,
systemd服務的特點
- PID永遠為1,由于systemd服務是Centos7啟動后第一個被啟動的程式,因此,systemd服務第一個特性就是其行程識別符號(Process ID,PID)永遠為1,
- 無法被root用戶終止,Centos7系統上所有的行程都可視為systemd的子行程,如果systemd可以被任意終止的話,那么系統中所有的行程都將會被結束掉,為避免這種情況發生,systemd服務被設計為無法被任何用戶終止,包括超級用戶(root),
初始化系統環境
一般來說默認的default.target只是一個軟鏈接,它所指向的是一個服務集合,
一個服務集合一般依賴于另外一個或多個服務集合,
可以通過 systemctl list-dependencies <target> 進行查看
部分target的分析
local-fs.target 和 swap.target
這兩個target 主要用于管理本機 /etc/fstab 檔案所記錄的相關設備的掛載動作
sysinit.target
該target主要用于偵聽硬體,載入所需核心模塊,例如特殊檔案系統的掛載,包括dev-hugepages.mount,dev-mqueue.mount等,RAID磁盤陣列,iSCSI存盤,LVM邏輯卷等也使用該target管理,以及其他日志,終端字體,額外的核心引數等都用到該target
basic.target
該target用于加載主要的硬體驅動和防火墻等時,牽扯到firewalld防火墻,SELinux的安全設定,開機日志等模塊的加載
multi-user.target
對于一般系統服務的加載,該target所定義的系統服務可在/usr/systemd/system目錄下查看,一般性服務可在/etc/systemd/system目錄下查看,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287850.html
標籤:其他
上一篇:2021-06-15
