系統的啟動流程

代码你敲我不敲發表於2024-05-05

系統的啟動流程

初始化系統

在rhel7之前使用init初始化系統,在rhel7之後使用systemd初始化系統

init和systemd的區別

  1. init是從上到下依次啟動,如果一個點出現問題,那麼它後面的點都不會啟動
  2. systemd是並行啟動,按需啟動,可以一次性同步啟動多個服務
  3. systemd會自動解決依賴問題(例如,啟動hfs就會先啟動rpc-bind和mountd

系統的啟動目標

指的是啟動時的操作頁面

啟動流程

  1. 開機
  2. bios開啟自檢並載入硬體
  3. bios根據啟動順序選擇對應的啟動裝置(硬碟,cdrom,網路等等)
  4. 從硬碟去載入引導程式碼(載入程式)
    • 引導程式碼 > 載入程式 > grub2
    • 存放在硬碟的前446位元組的位置(mbr分割槽的最前面)
  5. 載入程式載入啟動引導分割槽中的配置檔案(引導配置檔案 /boot/grub2/grub2.cfg
  6. grub2會載入核心 > 要掛載的根檔案系統,然後執行systemd來初始化(啟動服務,根據啟動目標獲得操作頁面)
    grub2會載入initramfs,目的是為了幫助核心掛載根檔案系統,提供檔案系統的驅動以及硬體驅動
    核心不能夠掛載根檔案系統,想掛載根檔案系統是需要對應的檔案系統驅動(xfs,ext4等等)
  7. initramfs會執行自己的sysytemd並且將磁碟上的根檔案系統掛載到/sysroot(簡單來說就是,將自己的根檔案系統掛載到/sysroot)
  8. 核心會將initramfs的假根切換為/sysroot(真正的根),然後執行systemd,進行初始化系統。
  9. systemd透過啟動目標來獲得操作頁面(字元頁面,圖形化頁面)

相關文章