按下電源鍵到看見桌面,中間經歷了精密的硬體初始化、載入程式接力與核心建構。理解這個流程,是進階除錯與優化的基石。
NTLDR; FAT: BOOTSECT.DOS) 載入 NTLDR 至記憶體並移交控制權。2.1 初始引導載入器
2.2 作業系統選擇
C:\Boot.ini。[boot loader]timeout=30default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetectmulti(0) = IDE/SCSI 控制器編號;disk(0)rdisk(0) = 實體磁碟;partition(1) = 分割區編號;後接系統根目錄。timeout=0 直接跳過選單。2.3 硬體偵測
NTDETECT.COM (實模式 16-bit 程式),收集:電腦 ID、總記憶體、總線/介面卡資訊、磁碟/滑鼠/鍵盤/平行埠/序列埠/顯示卡等。HKLM\HARDWARE。2.4 硬體設定檔選擇
引導階段用到的關鍵檔案:NTLDR, Boot.ini, NTDETECT.COM, NTOSKRNL.EXE, NTBOOTDD.SYS (SCSI 啟動專用), BOOTSECT.DOS (多重開機 DOS 區段)。
NTOSKRNL.EXE (核心映像) 至記憶體,但尚未初始化。HAL.DLL (硬體抽象層),隔離硬體差異。HKLM\SYSTEM:Select 鍵決定載入哪個 ControlSet (Current / Default / LastKnownGood)。ControlSet\Services 中 Start=0 (Boot 啟動) 的驅動程式 (檔案系統、磁碟過濾器等)。KiSystemStartup,進入核心初始化。核心執行四大任務:
HKLM\HARDWARE (揮發性,每次開機重建)。Clone,作為「最後正確配置」的備份基準,不包含本次開機的變更。Start=0 驅動。Start=1 (System 啟動) 驅動並初始化。ErrorControl 決定:3 (Critical):首次錯誤 → 重開機用 LastKnownGood;再錯 → 停止 0x7B/0xC000021A。2 (Severe):開機失敗 → 重開機用 LastKnownGood;已用 LKG → 忽略繼續。1 (Normal):記錄錯誤事件 → 忽略繼續。0 (Ignore):不記錄、繼續。Start=2 (Auto) 及 Start=3 (Manual) 服務,依 DependOnService/Group 順序啟動。Clone Control Set 複製覆寫 LastKnownGood Control Set,標記本次開機成功。| 檔案 | 角色 | 階段 |
|---|---|---|
| NTLDR | 引導載入器、切換保護模式、讀取 Boot.ini | 引導 |
| Boot.ini | 開機選單、核心載入路徑、啟動參數 | 引導 |
| NTDETECT.COM | 硬體偵測 (16-bit 實模式) | 引導 |
| NTOSKRNL.EXE | 核心映像 (含核心、執行主體、裝置驅動介面) | 核心載入/初始化 |
| HAL.DLL | 硬體抽象層 | 核心載入 |
| SMSS.EXE | 工作階段管理員、建立環境、啟動 CSRSS/Winlogon | 核心初始化 |
| CSRSS.EXE | 用戶端/伺服器執行階段子系統、Win32 圖形/視窗 | 核心初始化 |
| Winlogon.exe | 登入/登出/鎖定/安全性互動 | 登入 |
| LSASS.exe | 本機安全性授權、權杖產生、驗證 | 登入 |
| Services.exe | 服務控制管理員、啟動自動/手動服務 | 登入 |
Boot.ini ARC 路徑、病毒感染 MBR/VBR。HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell。