Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 系統啟動流程深度剖析:從 BIOS 到 Shell 的完整鏈路

編輯:Linux 教學

整體流程宏觀視角

以 RedHat 9.0 / i386 為例,啟動鏈路劃分為六大階段:

  1. 硬體自檢與引導載入:BIOS POST → MBR 引導區 → LILO/GRUB
  2. 核心引導:壓縮核心解壓 → 保護模式進入 → start_kernel() 初始化核心子系統
  3. init 進程誕生:PID 1 進程啟動,讀取 /etc/inittab
  4. 系統初始化:rc.sysinit 完成交換分區、磁碟檢查、模組載入等
  5. 運行級別服務啟動:rc 腳本啟動對應 runlevel 守護進程
  6. 終端建立與用戶登入:mingetty 開啟虛擬終端 → login 驗證 → Shell 環境建立

階段一:核心引導

引導載入器階段

  • bootsect.S:載入引導扇區,跳轉 setup.S
  • setup.S:收集 BIOS 回傳硬體參數(記憶體、磁碟)至特定記憶體、偵測顯示模式、切換保護模式、跳轉 0x100000

核心解壓與初始化

  • 0x100000 存放解壓後核心(bzImage 格式),由 arch/i386/boot/compressed/head.S 呼叫 decompress_kernel() 解壓
  • CPU 跳轉 0x100000 執行 arch/i386/kernel/head.S::startup_32 → start_kernel()(init/main.c)
  • start_kernel() 執行大量初始化:記憶體管理、陷阱門、定時器、中斷、調度器、VFS、驅動模型等
  • 末尾呼叫 init() 創建首個核心執行緒(PID 1),完成外設驅動載入、根檔案系統掛載
  • init() 重定向標準輸入輸出至 /dev/console,execve() 載入用戶空間 /sbin/init

階段二:init 進程與 inittab 解析

/etc/inittab 格式:id:runlevel:action:process

欄位含義關鍵值說明
id入口識別符getty 項需與 tty 編號對應
runlevel運行級別0 停機、1 單用戶、3 多用戶文字、5 圖形、6 重啟;S/s 單用戶無需 inittab
action執行模式initdefault 預設級別、sysinit 無條件啟動、wait 等待結束、respawn 終止後重啟、ctrlaltdel 捕捉重啟鍵
process執行程式可帶參數

RedHat 典型 inittab 關鍵行

id:5:initdefault:                    # 預設運行級別 5 (圖形)
si::sysinit:/etc/rc.d/rc.sysinit     # 系統初始化腳本
l5:5:wait:/etc/rc.d/rc 5             # 級別 5 啟動 rc 腳本
1:2345:respawn:/sbin/mingetty tty1   # 6 個文字終端
x:5:respawn:/etc/X11/prefdm -nodaemon # 圖形登入管理器

階段三:系統初始化

/etc/rc.d/rc.sysinit(850+ 行 Bash 腳本)核心任務:

  • 啟用交換分區
  • 磁碟檢查
  • 載入硬體模組
  • 設定主機名、網路、防火牆等優先任務

建議管理員直接閱讀本機腳本理解細節。

階段四:運行級別服務啟動

/etc/rc.d/rc 接受級別參數(如 5),執行 /etc/rc.d/rc5.d/ 下腳本鏈結:

  • S* 開頭:start 參數啟動
  • K* 開頭:若服務已運行(/var/lock/subsys/ 有鎖文件),先 stop 再 start,確保級別切換時服務重啟

真實腳本位於 /etc/rc.d/init.d/,通用參數:start|stop|restart|status。常見守護進程:network, syslog, crond, sshd, httpd, smb, nfs, xinetd...。透過 chkconfig 或 setup 管理各級別服務清單。

階段五:終端建立

mingetty 以 respawn 模式在 tty1-6 運行,提供文字登入介面,接收用戶名傳遞給 login 驗證。

階段六:用戶登入與 Shell 環境建立

  1. login 驗證邏輯:非 root 檢查 /etc/nologin、root 限制 /etc/securetty、/etc/usertty 附加限制
  2. 查閱 /etc/passwd、/etc/shadow 驗證密碼、取得家目錄與 Shell(預設 /bin/bash)
  3. 顯示上次登入資訊、檢查郵件
  4. 環境變數建立順序:/etc/profile → ~/.bash_profile → 其引用的其他配置
  5. 呈現命令提示符,啟動完成

圖示總結

Linux 啟動流程圖

掌握此鏈路,可精準定位啟動故障、客製化啟動流程、深入理解 Linux 核心與用戶空間交互機制。

Copyright © Windows教程網 All Rights Reserved