Linux: 引導過程與服務控制 理論乾貨

2020-10-23 14:00:13

引導過程

  • CentOS7系統中,由systemd掌管系統的初始化工作,系統的啟動過程與之前的版本相比有了新的變化
  • 在這裡插入圖片描述

開機自檢(BIOS)

  • 伺服器主機開機以後,將根據主機板BIOS(Basic Input/Output System,基本輸入輸出系統)中的設定對CPU。記憶體。顯示卡,鍵盤等裝置進行初步檢測,並初始化部分硬體(加電自檢)
  • 檢測成功後根據預設的啟動順序移交系統控制權,大多數時候會移交給本機硬碟(載入部分驅動)
  • 自檢過程中可以根據主機的POST資訊進入設定,通常按某一組合鍵進入,常用F2或者Delete

MBR引導

  • 當從本機硬碟中啟動系統時,首先根據硬碟的第一個磁區中MBR(Master Boot Record,主開機記錄)的設定,將系統控制權傳遞給包含作業系統引導檔案的分割區
  • 或者直接根據MBR記錄中的引導資訊呼叫啟動選單(CentOS7中為grub2)
  • 若安裝雙系統,則兩個系統需要分別安裝在不同的碟符當中

GRUB選單

  • 對於Linux系統來說,GRUB算是使用最廣泛的多系統引導器程式
  • 系統控制權傳遞給GRUB以後,將會顯示啟動選單提供給使用者選擇,並根據所選項(或採用預設值)載入Linux核心檔案,然後將系統控制權轉交給核心

載入核心(Kernel)

  • 系統引導器程式會從本地硬碟中載入核心以及記憶體檔案系統(CentOS 7 中使用initramfs)
  • Linux核心是一個預先編譯好的特殊二進位制檔案,介於各種硬體資源與系統程式之間,負責資源分配與排程
  • 核心接過系統控制權以後,將完全掌控整個Linux作業系統的執行過程
  • 記憶體檔案系統initramfs 是經過gzip 的cpio歸檔,其中包含啟動時所有必要的硬體核心模組,初始化指令碼等。
  • 核心放在/boot目錄下,/boot目錄相當於Windows的system32

init程序初始化

  • 載入硬體驅動以及初始化程序(載入全部驅動)
  • 由Linux核心載入執行/sbin/init程式
  • 是系統中第一個程序
  • PID(程序標記)號永遠為1
  • 核心初始化在initramfs中找到驅動程式的所有硬體,然後作為PID1從initramfs執行/sbin/init,CentOS 7中將其複製為systemd,systemd啟動initrd.target中所有單元,並掛載根檔案系統/sysroot,核心與檔案系統由記憶體檔案系統切換至系統根檔案系統,並重新執行/sysroot.systemd。
  • systemd啟動預設target(圖形或者字元終端),最後等待使用者進行登入

systemd單元型別

  • 在systemd中不同型別的systemd物件被統一稱為單元,是讓系統知道該如何進行操作和管理資源的主要物件,所以systemd有許多單元型別

  • systemd單元檔案最初預設存放在/lib/systemd/system目錄中,每當安裝新的軟體都會自動在這個目錄中新增一個組態檔

  • systemctl 命令用於管理各種型別的systemd單元,可以使用「systemctl -t help」命令來查詢systemd支援的單元型別
    Systemd 單元型別

單元型別擴充套件名說明
Service.service描述一個系統服務
Socket.socket描述一個程序間通訊的通訊端(通訊協定的載體)
Device.device描述一個核心識別的裝置檔案
Mount.mount描述一個檔案系統的掛載點
Automount.automount描述一個檔案系統的自動掛載點
Swap.swap描述一個記憶體交換裝置或目錄
Timer.timer描述一個定時器(用於實現類似cron的排程任務)
Path.path描述一個檔案系統中檔案或目錄(path 路徑)
Snapshot.snapshot用於儲存一個systemd的狀態(snapshot 快照)
Scope.scope使用systemd的匯流排介面以程式設計的方式建立外部程序
Slice.slice描述居於Cgroup的一組通過層次組織的管理系統程序
Target.target描述一組systemd的單元(target 目標)
  • Init執行級別所對應的Systemd目標
init執行級別Systemd 的 target說明
0target關機狀態,使用該級別時會關閉主機
1rescue.target單使用者模式,不需要密碼驗證即可登入系統,多用於系統維護
2multi-user.target使用者定義/域特定執行級別,預設等同於3
3multi-user.target字元介面的完整使用者模式,大多數伺服器主機執行在此級別
4multi-user.target使用者定義/域特定執行級別,預設等同於3
5graphical.target圖形介面的多使用者模式,提供了圖形桌面操作環境
6reboot.target重新啟動,使用該級別時將會重新啟動主機