摘要:在Windows Server 2003啟動過程中,會出現各種各樣的問題,本文介紹了操作系統啟動過程的幾個階段,收集了一些經常出現的錯誤,并結合 Windows 操作系統啟動過程,針對這些錯誤提出了解決方法。
當診斷一個系統啟動錯誤時,判斷系統是在哪一階段出現錯誤非常關鍵,系統啟動過程根據 CPU 架構不同略微有些差異,下面我們簡單介紹一下 x86-based 系統啟動過程的幾個階段:
1. Pre-Boot Sequence
2. Boot Sequence
3. Kernel Load Sequence
4. Kernel Initialization Sequence
5. Logon Sequence
6. Plug and Play detection
階段 1: Pre-Boot Sequence
在計算機加電后開始準備啟動操作系統之前,有一個 Pre-Boot Sequence 的過程,主要是計算機的 BIOS 中配置的設備引導順序尋找啟動設備,Pre-Boot Sequence 可以分下以下步驟:
(1)系統加電自檢:主要監測主板、CPU,內存及其他計算機所使用的硬件設備的信息;
(2)找到合適的啟動設備并加載MBR,MBR中有分區表和主引導代碼,通過主引導代碼定位到活動分區;
(3)通過 MBR 找到活動分區后,從活動分區中加載 BOOT SECTOR 到內存并執行其中的代碼;
(4)通過 BOOT SECTOR 找到 NTLDR 文件,加載 NTLDR 到內存中并執行;
可能出現的問題及解決方法:
(1)MBR 損壞
現象 - 分區表不正確
現象 - 主引導代碼損壞
現象 - NTDETECT.COM 搜集硬件信息失敗
原因:
由于病毒或者其他人為的誤編輯導致引導硬盤的 MBR 損害;
解決方法:
利用Windows PE系統引導計算機后,使用 WinHex 工具對引導磁盤的 MBR 進行修復操作;
(2)硬件配置不正確
現象:主板報錯;
原因:關鍵的硬件損害或者配置不正確,如內存條損壞;
解決方法:要通過進一步硬件故障檢測,針對不同硬件故障做不同處理;
(3)找不到活動分區
現象:按照設備啟動順序遍歷后,最后停在如下界面:
原因:可能是通過 fdisk 工具編輯磁盤分區表后沒有指定活動分區;
解決方法:利用Windows PE系統引導計算機后,使用 WinHex 工具對引導磁盤的 MBR 的分區表進行編輯,指定正確的分區表條目的屬性為活動分區,然后重新引導操作系統;
(4)NTLDR 文件缺失或損壞
現象:如下圖所示,輸出錯誤信息“NTLDR is missing”;
原因:NTLDR 文件被病毒刪除或損害,或者文件系統損壞,導致了 NTLDR 文件的損壞;
解決方法:可以通過系統恢復或者 Windows Server 2003 引導盤 NTLDR 文件;
(2)BIOS 配置不正確
現象:
原因:
解決方法:根據實際情況調整 BIOS 配置;
階段 2: Boot Sequence
當 Pre-Boot Sequence 的階段完成后,開始進入 Boot Sequence 階段??梢苑窒乱韵虏襟E:
(1)NTLDR 將 CPU 工作模式從 Real-Mode 切換至 Protected-Mode,然后啟動文件系統驅動用于 支持計算機上的文件系統;
(2)NTLDR 讀取 BOOT.INI 文件內容,用于創建初始化引導選項,如果選擇的是 Windows Server 2003, Windows NT 之外的操作系統,BOOTSECT.DOS 文件被讀入內存,用于加載其他的操作系統,Windows Server 2003 引導過程中斷;
(3)當系統初始化引導選項被選中后,根據該引導項對應的磁盤號和分區號定位啟動卷;
(4)從啟動卷中找到 NTDETECT.COM 文件,NTDETECT.COM 檢測系統基本的硬件配置信息并且把配置信息寫入注冊表中的 HKEY_LOCAL_MACHINE 鍵,NTDETECT.COM 識別的硬件包括并不僅限于 串口、并口、鍵盤、鼠標、軟盤、SCSI 適配器 和 顯卡;
(5)將控制權交給 NTOSKRNL.EXE,進入下一階段;
可能出現的問題及解決方法:
(1)啟動文件缺失或損壞
現象:
原因:NTLDR,BOOT.INI,BOOTSECT.DOC,NTDETECT.COM 或 NTOSKRNL.EXE中的一個缺失或損壞,導致操作系統無法正常啟動,一般情況下,通過錯誤信息能準確的判斷是那個文件缺失或損壞;
解決方法:可以通過系統恢復自動修復;
(2)BOOT.INI 配置不正確
現象:
原因:人為誤編輯 BOOT.INI 文件或者修改了磁盤配置;
解決方法:利用Windows PE系統引導計算機后,檢查 BOOT.INI 文件內容,并根據實際情況重新配置;
(3)硬件無法識別或者配置不正確
現象:界面錯誤信息指向 NTDETECT.COM
原因:
解決方法:需要進一步排查具體原因,可以通過逐個移除新加硬件和相應驅動程序來定位;
關于此階段中一些重要的啟動文件說明:
BOOT.INI
用于在系統啟動過程中創建系統選擇菜單,每個系統項在文件中都有對應的條目與之對應,記錄了該系統的啟動分區。BOOT.INI 文件一般為位于根目錄,具有系統屬性和隱藏屬性。
BOOTSECT.DOS
一個選項配置文件,在部署了多操作系統的環境中,如果選擇引導的是 Windows Server 2003, Windows NT 之外的操作系統,這個文件會被加載。BOOTSECT.DOS 文件位于根目錄下,具有系統屬性和隱藏屬性。
NTDETECT.COM
用于檢測操作系統已經安裝的硬件設備,并且將這些硬件設備的信息添加到注冊表。NTDETECT.COM 文件位于系統分區的根目錄下,具有系統屬性、隱藏屬性和只讀屬性。
NTOSKRNL.EXE
用于加載 Windows Server 2003 操作系統,NTOSKRNL.EXE 文件位于 %windir%/system32。
階段 3: Kernel Load Sequence
當 Boot Sequence 的階段完成后,NTDETECT.COM 搜集的所有信息都傳遞給了 NTOSKRNL.EXE,Kernel Load Sequence 可以分下以下步驟:
(1)NTOSKRNL.EXE 加載并初始化;
(2)初始化執行子系統,啟動類型為 System-Start 的設備驅動程序;
備注:這里說的執行子系統,是指 Process And Thread Manager、Virtual Memory Manager、I/O Manager、Object Manager、Runtime Libraries 以及其他需要工作在內核態的服務。
(3)為運行原生應用程序準備系統環境;
備注:這里說的原生應用程序,需要解釋一下,Windows 操作系統提供兩種類型的 API,一種是我們通常所說的 Windows API,所有的 Windows 程序都需要依賴 Windows API,另一種是 Native API,一些 Windows 組件如內核驅動程序 和 系統進程(如csrss.exe)依賴 Native API 。
(4)運行 SMSS.EXE
關于此階段中一些重要的啟動文件說明:
NTOSKRNL.EXE 在這一階段的作用非常關鍵,它主要用于完成以下功能:
(1)加載 HAL.DLL (Hardware Abstraction Layer,是一個 Kernel-Mode 庫),用于提供低級別的硬件交互接口,Windows 組件和第三方的設備驅動程序依賴 HAL 與底層硬件設備通信;
(2)加載操作系統Control Set,Control Set 用于控制系統配置信息(如列出需要被加載的設備驅動程序);
(3)加載低級別的設備驅動程序(如磁盤驅動程序 disk.sys);
可能出現的問題及解決方法:
現象:
原因:硬件設備驅動程序不匹配,或者安裝了有 BUG 的安全、加密、過濾、第三方磁盤管理軟件、存儲管理軟件;
解決方法:知道是做了什么變更后出現的就比較好解決,回退操作,也可以借組于系統的 “最后一次正確配置”的高級選項;
階段 4: Kernel Initialization Sequence
Kernel Initialization Sequence 主要創建 HKEY_LOCAL_MACHINE/HARDWARE 注冊表項,運行高優先級的子系統和服務,可以分下以下步驟:
(1)一旦 Kernel 成功加載后,會創建 HKEY_LOCAL_MACHINE/HARDWARE 注冊表項,這個注冊表項用于指定系統啟動時的硬件設備的配置信息;
(2)初始化隨 Kernel 加載的設備驅動程序;
(3)運行高優先級的子系統和服務;
備注:高優先級的子系統包括并不僅限于 POSIX Subsystem,OS/2 Subsystem。
可能出現的問題解決方法:知道是做了什么變更后出現的就比較好解決,回退操作,也可以借組于系統的 “最后一次正確配置”的高級選項;
階段 5: Logon Sequence
smss.exe(Session Manager System)是 Logon Sequence 中的一個非常關鍵的角色,可以分下以下步驟:
(1)創建系統環境變量;
(2)啟動 Win32 Subsystem 的 Kernel-Mode 部分(win32k.sys)和 User-Mode 部分(csrss.exe);
(3)啟動在注冊表項 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/SubSystems 中列出的子系統;
(4)smss.exe 運行 winlogon.exe(Windows Logon Manager);
備注:附上對 winlogon.exe 程序功能的說明:
winlogon.exe is a system service that enables logging on and off of users. It is also responsible for loading user profile.
It invokes GINA( Graphical Identification and Authentication) which displays login prompt. The GINA accepts the user login credentials and passes it back to Winlogon.
Winlogon then Starts Lsass.exe (the Local Security Authority) and passes login credentials to LSA. LSA determine which user account databases is to be used for authentication eg: Local SAM or Active Directory in case you are in a windows domain.
(5)用戶權限驗證通過后, smss.exe 運行 Service.exe(Services Subsystem,SCM);
(6)Service.exe 遍歷 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services,啟動類型為“自動運行”的服務。
可能出現的問題及解決方法:
(1)登陸失敗
現象:
原因:用戶權限信息驗證不通過;
解決方法:嘗試找回權限信息,注意是否是域控導致,終極解決方案就是利用 PE 進入系統后用工具重置密碼;
(2)服務啟動失敗
現象:
原因:原因太多,不一一枚舉,cmd 輸入 eventvwr.msc 打開 System Log 查看具體詳情;
解決方法:根據 System Log 記錄對癥下藥;
階段 6: Plug and Play Device Detection
Plug And Play Device Detection 是一個系統自動檢測新增 PnP 設備并為 PnP 設備自動查找驅動程序嘗試使之能夠正常功能的過程,可以分下以下步驟:
(1)檢測啟動過程中新增的設備,自動為設備分配系統資源;
(2)如果設備是 PnP 并且可以從對應的 Driver.cab 文件中找到對應的驅動程序,則提取驅動程序并自動安裝;
可能出現的問題及解決方法:
PnP 設備無法正常工作
現象:
原因:驅動程序不匹配;
解決方法:找到匹配的驅動程序并安裝;
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答
圖片精選