Windows啟動順序詳解
本文詳細闡述 windows 操作系統(tǒng)的啟動順序,以方便IT從業(yè)者對windows 啟動問題的分析和解決。
windows 的啟動過程包括以下幾個階段:
啟動自檢階段
這個階段主要是讀取 BIOS ,然后內(nèi)存,CPU,硬盤,鍵盤等設(shè)備進行自檢。這個階段在屏幕上顯示就是自檢的那些打印信息。
屏幕顯示:自檢的打印信息
初始化啟動階段
這個階段根據(jù) BIOS 指定的啟動順序,找到可以啟動的優(yōu)先啟動設(shè)備,比如本地磁盤,CD Driver , USB 設(shè)備等等,然后準備從這些設(shè)備啟動系統(tǒng)。
屏幕顯示:黑屏
Boot 加載階段
這個階段首先從啟動分區(qū)(比如 C 盤) 加載 Ntldr ,然后Ntldr 做如下設(shè)置:
- 設(shè)置內(nèi)存模式,如果是 x86 的處理器,并且操作系統(tǒng)是 32位,則設(shè)置為 32-bit flat memory mode, 如果是 64 位操作系統(tǒng) + 64位處理器,則設(shè)置為64位內(nèi)存模式。
- 啟動文件系統(tǒng)
- 讀取 boot.ini 文件
屏幕顯示:黑屏,如果按F8或者多系統(tǒng)時會顯示啟動選項菜單。
檢測和配置硬件階段
這個階段檢查和配置一些硬件設(shè)備,它們分別是:
- 系統(tǒng)固件,比如時間和日期
- 總線和適配器
- 顯示適配器
- 鍵盤
- 通訊端口
- 磁盤
- 軟盤
- 輸入設(shè)備(如鼠標)
- 并口
- 在ISA總線上運行的設(shè)備
屏幕顯示:黑屏
內(nèi)核加載階段
在內(nèi)核加載階段,Ntldr 將首先加載windows 內(nèi)核 Ntoskrnl.exe 和 硬件抽象層 (HAL). HAL 有點類似于嵌入式操作系統(tǒng)下的BSP(Borad support package),這個抽象層對硬件底層的特性進行隔離,對操作系統(tǒng)提供統(tǒng)一的調(diào)用接口,操作系統(tǒng)移植到不同硬件時只要改變相應(yīng)的 HAL 就可以,其它的內(nèi)核組件不需要修改,這個是操作系統(tǒng)通常的設(shè)計模式。
接下來Ntldr 從HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet 下讀取這臺機器安裝的驅(qū)動程序,然后依次加載驅(qū)動程序。
驅(qū)動程序加載完成后,windows 做如下設(shè)置:
- 創(chuàng)建系統(tǒng)環(huán)境變量
- 啟動 win32.sys ,這個是windows 子系統(tǒng)的內(nèi)核模式部分。
- 啟動 csrss.exe,這個是windows 子系統(tǒng)的用戶模式部分。
- 啟動 winlogon.exe
- 創(chuàng)建虛擬內(nèi)存頁面文件
- 對一些必要的文件進行改名,(主要是驅(qū)動文件,如果更新后,需要在下次重啟前改名)
屏幕顯示:顯示windows logo 界面和進度條
登錄階段
這個階段會做如下幾件事:
- 啟動機器上安裝的所有需要自動啟動的 windows 服務(wù)
- 啟動本地安全認證 Lsass.exe
- 顯示登錄界面
屏幕顯示:顯示登錄界面