此文譯自 Windows XP Resource Kit Web Resource 中 Understanding the Startup Process 一章 為了診斷和修復(fù)啟動故障,您需要理解啟動過程中發(fā)生了什么。第一步隔離啟動問題,判斷問題是發(fā)生在Microsoft? Windows? XP Professional 啟動之前還是之后。
啟動失敗的根本原因,包括相關(guān)因素,可能是來自多方面的, 比如用戶錯誤,應(yīng)用程序錯誤,硬件問題,病毒問題。如果問題過于嚴(yán)重,您可能需要重新安裝 Windows XP Professional 或者從備份介質(zhì)中恢復(fù)文件。 在基于x86的系統(tǒng)上,發(fā)生在啟動故障 operating system loader (Ntldr) 可能意味著啟動文件丟失或者被刪除,或者硬盤主引導(dǎo)記錄 (MBR)損壞, 或者分區(qū)表,或者引導(dǎo)扇區(qū)的損壞。如果問題發(fā)生在啟動期間,那么系統(tǒng)可能存在不兼容的軟件或者驅(qū)動,不兼容或者設(shè)置錯誤的硬件,或者系統(tǒng)文件損壞。 基于 Itanium 系統(tǒng)的計算機啟動或者和 x86 系統(tǒng)類似。詳見后面的章節(jié) "Startup Phases for Itanium-based Systems" 基于 x86 系統(tǒng)的啟動過程Windows XP Professional 啟動過程和 Microsoft? Windows NT? version 4.0 and Microsoft? Windows? 2000 類似,區(qū)別于 Microsoft? MS-DOS?, Microsoft? Windows? 95, Microsoft? Windows? 98, and Microsoft? Windows? Millennium Edition (Windows Me) 這些系統(tǒng)。 所有運行 Windows XP Professional 的系統(tǒng)都遵循如下啟動順序:
上述的啟動過程適用于正常關(guān)機后的系統(tǒng)啟動或者重新啟動,從休眠或者待機狀態(tài)恢復(fù)的情況例外,后者請參考后面的章節(jié) "Resolving Power Management Problems on x86-based Systems" 為了 Windows XP Professional 能夠引導(dǎo),系統(tǒng)和啟動分區(qū)必須包含表 28.1.中的文件。 表 28.1 基于x86 系統(tǒng)上 Windows XP Professional 的啟動文件
注:
在表 28.1中,systemroot是眾多環(huán)境變量之一,用于將象文件和文件路徑這樣的字符串關(guān)聯(lián)到變量,以便 Windows XP Professional應(yīng)用程序和服務(wù)使用。例如,通過使用環(huán)境變量,腳本不同修改就可以運行在不同環(huán)境設(shè)置的計算機上。您可以通過在命令行執(zhí)行 set 命令查看環(huán)境變量列表。 關(guān)于環(huán)境變量,請參考Windows XP Professional中關(guān)于 "To add or change the values of environment variables" 的描述;關(guān)于系統(tǒng)文件的信息,詳見 "System Files Reference" 上電自檢當(dāng)您打開計算機的時候,中央處理器單元 (CPU) 開始執(zhí)行存放在基本輸入輸出系統(tǒng) (BIOS)中的指令。 BIOS, 一種固件,包含一些代碼,處理器依靠這些代碼啟動計算機,與外圍標(biāo)準(zhǔn)設(shè)備通訊,形成一個最小環(huán)境,從而得以加載其他復(fù)雜代碼,它與計算機所安裝的操作系統(tǒng)無關(guān)。 計算機啟動過程的第一步就是上電自檢 (POST),POST 負(fù)責(zé)完成如下系統(tǒng)和檢測功能:
當(dāng)主板上電自檢(POST)完成后,那些擁有自己固件的附加板卡 (比如顯卡和硬盤控制器) 開始執(zhí)行自我檢測。 設(shè)定這些系統(tǒng)和外圍設(shè)備固件參數(shù),請參考相關(guān)廠商提供的系統(tǒng)文檔。 初始化啟動階段在上電自檢( POST)階段后,存儲在CMOS存儲器中的那些設(shè)定,比如啟動設(shè)定,指明了可以引導(dǎo)操作系統(tǒng)的設(shè)備。比如,如果啟動設(shè)定指定軟盤作為啟動的首選設(shè)備,而將硬盤作為次要設(shè)備(有些固件中顯示為 "A, C"),那么啟動時將可能發(fā)生如下情形: 軟驅(qū)中插有軟盤BIOS將搜索設(shè)定為啟動軟盤的軟驅(qū),如果存在,將會把0面0道1扇區(qū)(軟盤的啟動扇區(qū))加載到內(nèi)存。如果軟盤不能啟動,將會提示如下錯誤:
計算機將會一直顯示上面的信息,直到您插入一張啟動軟盤或者驅(qū)出軟盤重新啟動計算機。 軟驅(qū)中沒有軟盤如果您重新啟動計算機后沒有插入軟盤,計算機將會裝載位于主引導(dǎo)記錄 (MBR)所在區(qū)域的指令。MBR 位于啟動硬盤的第一個扇區(qū),包含一些指令(稱為啟動代碼)和一個標(biāo)示主分區(qū)和擴展分區(qū)的表(稱為分區(qū)表)。 BIOS 將 MBR 加載到內(nèi)存,并將控制權(quán)移交給 MBR中的代碼。 計算機然后搜索分區(qū)表,查找激活分區(qū)。激活分區(qū)的第一個扇區(qū)包含啟動代碼,這些代碼允許計算機進行如下操作:
如果激活分區(qū)不存在或者啟動扇區(qū)信息丟失、錯誤,系統(tǒng)將提示如下信息:
如果激活分區(qū)定位成功,啟動分區(qū)中的代碼將會找到并開始啟動 Ntldr ,隨后 BIOS 完成使命,釋放控制權(quán) 關(guān)于磁盤和文件系統(tǒng),MBR, 分區(qū)以及啟動扇區(qū)的一些更為詳細(xì)的信息,請查看 "File Systems" 和 "Troubleshooting Disks and File Systems" 指定其他啟動設(shè)備的啟動順序除此之外,一些計算機固件允許從其他設(shè)備引導(dǎo)操作系統(tǒng),比如:
在大多數(shù)的計算機上都允許您指定啟動次序,比如"CDROM, A, C". 當(dāng)您指定 "CDROM, A, C" 這樣的啟動順序的時候,那么啟動時就會是如下情況:
您不能使用一個不能啟動的光盤引導(dǎo)系統(tǒng),同時一張無法啟動的光盤將可能增加系統(tǒng)啟動時間,如果不打算從光盤引導(dǎo)系統(tǒng),請在啟動前將光盤從 CD-ROM 驅(qū)動器中取出。 關(guān)于啟動順序的選項,請參考您的系統(tǒng)文檔。 啟動裝載階段Ntldr 從啟動分區(qū)裝載啟動文件,然后進行如下步驟: 設(shè)置x86系統(tǒng)處理器進入32位內(nèi)存保護模式運行基于x86的計算機啟動的時候運行在實模式,此在模式下,處理器禁止了一些功能,以便兼容于運行于8位和16位處理上的軟件。隨后 Ntldr 將處理器切換到32位模式,這種模式下,允許訪問大容量內(nèi)存,并可以運行 Windows XP Professional 啟動文件系統(tǒng)Ntldr 包含一些允許 Windows XP Professional 讀寫 NTFS 或者文件分配表(FAT16 or FAT32) 文件系統(tǒng)所需要的程序代碼。 讀取Boot.ini 文件Ntldr分析Boot.ini 文件以確定操作系統(tǒng)啟動分區(qū)的位置。如果使用單系統(tǒng)啟動設(shè)定,那么 Ntldr 將隨后啟動 Ntdetect.com初始化硬件檢測. 如果存在多系統(tǒng)啟動,這可能包括 Windows XP Professional, Windows 2000, Windows NT 4.0, Windows 95, Windows 98, Windows Me, 或者 MS-DOS以及其他可能的操作系統(tǒng),您將會在啟動的時候看到一個操作系統(tǒng)的選擇菜單。 注:
如果您選擇 Windows XP Professional, Windows 2000, or Windows NT 4.0, Ntldr 將隨后啟動硬件檢測階段,如果沒有就會引導(dǎo)啟動扇區(qū)的其他系統(tǒng)。如果您選擇 Windows 95, Windows 98, Windows Me, or MS-DOS, Ntldr 將會掃描 Bootsect.dos 文件,讀取其中所包含的 MBR 代碼,并執(zhí)行它。關(guān)于Boot.ini的其他信息請參考"Reviewing and Correcting Boot.ini Settings on x86-based Systems" 檢測硬件和硬件配置文件進入此階段,Ntldr 啟動Ntdetect.com, 后者將執(zhí)行基礎(chǔ)硬件掃描。隨后 Ntldr 掃描 Boot.ini 信息,以及保存在注冊表中的硬件和軟件信息,傳送給 Ntoskrnl.exe。Ntdetect.com 檢測硬件配置信息 (比如 便攜計算機上接駁或未接駁設(shè)置) 和保存在 Advanced Configuration and Power Interface (ACPI) 表中的信息。 ACPI 兼容固件允許Windows XP Professional 檢測設(shè)備電源管理功能和設(shè)備資源需求。 關(guān)于ACPI 請參考 http://www.microsoft.com/windows/reskits/webresources. 檢測、設(shè)置硬件階段在讀取 Boot.ini 并完成其任務(wù)后, Ntldr 啟動 Ntdetect.com。在 x86 系統(tǒng)上 Ntdetect.com 調(diào)用系統(tǒng)例行程序收集已經(jīng)安裝的硬件信息,并將收集的信息返回給Ntldr,Ntldr 將這些信息收集后存入內(nèi)部數(shù)據(jù)庫 ,然后啟動 Ntoskrnl.exe 并將信息傳遞給它。 Ntdetect.com 所收集的硬件設(shè)備的信息如下:
Ntdetect.com 在非ACPI兼容計算機的設(shè)備掃描中扮演了重要的角色。因為在這些類型的計算機上,固件而不是操作系統(tǒng)決定了分配給設(shè)備的資源,對于使用ACPI固件的計算機,Windows XP Professional 對硬件設(shè)備分配資源。在這個階段,Ntdetect.com 收集硬件信息, Windows XP Professional 為桌面計算機創(chuàng)建一個單獨的默認(rèn)硬件配置文件,而為便攜計算機創(chuàng)建兩個缺省的配置文件。對于便攜計算機,操作系統(tǒng)基于當(dāng)前計算機上硬件狀態(tài)選擇適當(dāng)?shù)呐渲梦募?/p>
硬件配置文件對于便攜式計算機是非常有用的,因為這些計算機的硬件狀態(tài)通常都不是靜態(tài)的,啟動的時候,沒有列表在特定的硬件配置文件中的設(shè)備驅(qū)動是不會被加載的。 關(guān)于創(chuàng)建和使用硬件配置文件的信息,請參考Windows XP Professional 幫助和支持中心,也可以參考知識庫文檔 225810, "How to Create Hardware Profiles on Windows 2000–Based Mobile Computers," 查找此文檔,請查詢Web Resources 頁面 http://www.microsoft.com/windows/reskits/webresources 上的知識庫鏈接,同時您也可以查看"Managing Devices" 和 "Supporting Mobile Users" 核心裝載階段Ntldr 負(fù)責(zé)將 Windows 核心層 (Ntoskrnl.exe) 和硬件抽象層 (HAL) 裝載到內(nèi)存。您的系統(tǒng)所使用的 Hal.dll 文件是可以發(fā)生變化的。在安裝期間,Windows XP Professional 安裝程序從若干 HAL 文件中選擇一個復(fù)制到系統(tǒng),(請參看表28.2 關(guān)于這些文件的列表) 并重名為Hal.dll。 在設(shè)備管理器中查看計算機描述
Table 28.2 關(guān)于不同 Hal.dll 文件的描述
核心層kernel 和硬件抽象層HAL 初始化一組軟件組件,他們統(tǒng)稱為windows 執(zhí)行體。Windows 執(zhí)行體掃描儲存在注冊表control sets中的信息,并啟動服務(wù)和驅(qū)動程序。 關(guān)于Windows executive services, 請查看 "Common Stop Messages for Troubleshooting" 控制集Control SetsNtldr 從 HKEY_LOCAL_MACHINE/SYSTEM 注冊表子鍵中讀取相關(guān)信息,該子健中的數(shù)據(jù)創(chuàng)建于/System32/Config/ System 文件,故而 Ntldr 能夠決定哪些設(shè)備驅(qū)動在系統(tǒng)啟動時裝載。 通常,注冊表中存在幾個control sets, 其后面的序號取決于系統(tǒng)設(shè)定多長時間變更一次。。 提示:
典型的注冊表控制集 control set 子鍵如下:
除非您從Windows Advanced Options菜單中選擇Last Known Good Configuration,Ntldr 將使用Default 鍵值所標(biāo)示的控制集。 核心層使用Ntldr 提供的內(nèi)部數(shù)據(jù)結(jié)構(gòu)創(chuàng)建 HKEY_LOCAL_MACHINE/HARDWARE 子鍵,其中包含在系統(tǒng)啟動階段收集的硬件信息。這些數(shù)據(jù)包含信息包括各種硬件組件和分配給每個設(shè)備的系統(tǒng)資源。您可以通過查看在啟動過程中顯示的進度指示器來監(jiān)控核心層加載過程 關(guān)于 Last Known Good Configuration的相關(guān)信息,您可以查閱 "Tools for Troubleshooting" Windows XP Professional 支持設(shè)備擴展。新的或者更新的驅(qū)動程序并不存在于 Windows XP Professional 操作系統(tǒng)光盤上,而是由于硬件廠商提供。驅(qū)動程序是核心模式組件,需要Drivers are kernel-mode components required by devices to function within an operating system. 服務(wù)是支持操作系統(tǒng)功能和應(yīng)用程序的組件。與用戶應(yīng)用程序相比,服務(wù)可以運行在一個不同的上下文,通常不會提供用戶可以設(shè)置的選項。服務(wù),比如脫機打印 Print Spooler,不需要用戶登錄即可運行,而且與登陸到系統(tǒng)的用戶無關(guān)。Windows XP Professional 驅(qū)動程序和服務(wù)系統(tǒng)文件通常被存放在 systemroot/System32 和 systemroot/System32/Drivers 目錄下,以 .exe, .sys, or .dll 等擴展名保存。 驅(qū)動程序也是服務(wù),因此在核心層初始化期間,Ntldr 和 Ntoskrnl.exe 按照存儲在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/servicename 注冊表子鍵中的數(shù)值來確定裝載的驅(qū)動程序和服務(wù)次序。例如,Ntldr 首先搜索Services 子鍵中 Start 值為 0的服務(wù),比如硬盤控制器。當(dāng) Ntldr 啟動 Ntoskrnl.exe后,一個Ntoskrnl.exe 組件搜索并啟動驅(qū)動程序,比如網(wǎng)絡(luò)協(xié)議,這些啟動項 Start 值為 1. Table 28.3 ,列出了 Start 項的值(十進制)。Boot 類型的驅(qū)動 (Start 值為0的項) 文件系統(tǒng)驅(qū)動程序的Start值始終為0,因為啟動 Windows XP Professional 需要它們的支持。
表 28.4 列出了Type 項的一些值(十進制) 表 28.4 <服務(wù)名> Type 項的賦值
一些驅(qū)動程序和服務(wù)需要在啟動之前確定之間的相互依賴關(guān)系。通過查看HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/servicename下DependOnGroup和 DependOnService 項 ,您可以找到這個依存關(guān)系的列表。關(guān)于使用依賴關(guān)系阻止或者延遲驅(qū)動程序或者服務(wù)啟動的信息,請查看 "Temporarily Disabling Services" 。該服務(wù)子鍵也包含了影響驅(qū)動程序和服務(wù)如何加載的信息,表 28.5 中描述了其中的一部分。 表 28.5 注冊表其他 <服務(wù)名> 項
當(dāng)所有標(biāo)志為 Boot 和 Startup 數(shù)據(jù)類型的注冊表子鍵執(zhí)行完成后, kernel 開始加載會話管理器 Session Manager,由它 (Smss.exe) 執(zhí)行后續(xù)重要的初始化工作,比如:
Windows 子系統(tǒng)和基于它執(zhí)行的應(yīng)用程序是用戶模式進程,它們不能直接訪問硬件和設(shè)備驅(qū)動。用戶模式進程執(zhí)行優(yōu)先級低于核心進程,當(dāng)操作系統(tǒng)需要更多內(nèi)存的時候,它可以將被用戶模式下進程使用的內(nèi)存緩存到虛擬頁面文件。關(guān)于用戶模式和核心模式組件的信息,請參考"Common Stop Messages for Troubleshooting" 。 會話管理器Session Manager 將搜索注冊表,以獲得服務(wù)信息,注冊表鍵值如下:
登錄階段在此階段Windows 子系統(tǒng)啟動 Winlogon.exe,此模塊為系統(tǒng)服務(wù),以完成用戶的登入或者登出的動作。 Winlogon.exe 所完成的功能如下: 圖形化識別和驗證 Graphical Identification and Authentication (GINA) 組件獲取用戶名和密碼,并將這些信息傳送給 LSA 進行安全驗證。如果用戶提供有效驗證,那么通過使用Kerberos V 5 驗證協(xié)議或者 NTLM 可以或者訪問權(quán)限。關(guān)于安全組件的信息,比如 LSA, Kerberos V5 協(xié)議或者 NTLM, Distributed Systems Guide of the Microsoft? Windows? 2000 Server Resource Kit. 當(dāng)服務(wù)控制管理器Service Control Manager 初始化自動裝載服務(wù)項和驅(qū)動時,Winlogon 開始初始化安全和認(rèn)證組件,當(dāng)用戶登錄后,系統(tǒng)進行如下動作:
直到用戶成功登陸到計算機后,Windows XP Professional 啟動過程最終完成。 即插即用檢測即插即用檢測不與登陸過程同步運作,它依賴于系統(tǒng)固件,硬件,設(shè)備驅(qū)動程序以及操作系統(tǒng)功能,從而能夠檢測和枚舉新的設(shè)備。 Windows XP Professional 為使用ACPI固件的設(shè)備優(yōu)化即插即用支持,并且允許增強功能,比如硬件資源共享。 當(dāng)即插即用能夠很好協(xié)調(diào)工作時,Windows XP Professional 能夠在最小用戶參與的前提下,檢測到新的設(shè)備,分配系統(tǒng)資源,安裝或者請求驅(qū)動程序。ACPI 特性對于移動用戶是非常有用的,這些特性可以很好的支持待機、休眠、冷熱插拔等功能。 關(guān)于即插即用檢測和系統(tǒng)資源,請參考 "Managing Devices" and "Supporting Mobile Users" |
|