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