NTLDR一般存放於C盤根目錄下,是一個具有隱藏和唯讀屬性的系統檔案。它的主要職責是解析Boot.ini檔案。如果你對它的理解還不是很清楚,那麼下面我們就以windows XP為例介紹NTLDR在系統引導過程中的作用。
Windows XP在引導過程中將經曆預引導、引導和載入核心三個階段,這與Windows 9X直接讀取開機磁區的方式來啟動系統是完全不一樣的,NTLDR在這三個階段的引導過程中將起到至關重要的作用。
1.預引導階段
在預引導階段裡電腦所做的工作有:運行POST程式,POST將檢測系統的總記憶體以及其他硬體裝置的狀況,將磁碟第一個物理扇區載入到記憶體,載入硬碟主引導記錄並運行,主引導記錄會尋找使用中的磁碟分割的起始位置。接著使用中的磁碟分割的開機磁區被載入並執行,最後從開機磁區載入並初始化NTLDR檔案。
2.引導階段
在引導階段中,Windows XP將會依次經曆初始引導載入器階段、作業系統選擇階段、硬體檢測階段以及配置選擇階段這四個小的階段。
(1)在初始引導載入器階段中,NTLDR將把電腦的微處理器從實模式轉換為32位平面記憶體模式,在實模式中,系統會為MS-DOS預留640KB大小的記憶體空間,其餘的記憶體都被看做是擴充記憶體,在32位平面模式中系統將所有記憶體都視為可用記憶體,然後NTLDR執行適當的小型檔案系統驅動程式,這時NTLDR可以識別每一個用NTFS或FAT格式的檔案系統分區,至此初始引導載入器階段結束。
(2)當初始引導載入器階段結束後將會進入作業系統選擇階段,如果電腦上安裝了多個作業系統,由於NTLDR載入了正確的Boot.ini檔案,那麼在啟動的時候將會出現要求選擇作業系統的菜單,NTLDR正是從boot.ini檔案中尋找到系統檔案的分區位置。如果選擇了NT系統,那麼NTLDR將會運行NTDETECT.COM檔案,否則NTLDR將載入BOOTSECT.DOS,然後將控制權交給BOOTSECT.DOS。如果Boot.ini檔案中只有一個作業系統或者其中的timeout值為0,那麼將不會出現選擇作業系統的菜單畫面,如果Boot.ini檔案非法或不存在,那麼NTLDR將會嘗試從預設系統磁碟區啟動系統。
小提示:NTLDR啟動後,如果在系統根目錄下發現有Hiberfil.sys檔案且該檔案有效,那麼NTLDR將讀取Hiberfil.sys檔案裡的資訊並讓系統復原到休眠以前的狀態,這時並不處理Boot.ini檔案。
(3)當作業系統選擇階段結束後將會進入硬體檢測階段,這時NTDETECT.COM檔案將會收集電腦中硬體資訊列表,然後將列表返回到NTLDR,這樣NTLDR將把這些硬體資訊載入到註冊表“HKEY_LOCAL_MACHINE”中的Hardware中。
(4)硬體檢測階段結束後將會進入配置選擇階段,如果有多個硬體設定列表,那麼將會出現設定檔選擇菜單,如果只有一個則不會顯示。
3.載入核心階段
在載入核心階段中,NTLDR將載入NTOKRNL.EXE核心程式,然後NTLDR將載入硬體抽象層(HAL.dll),接著系統將載入註冊表中的“HKEY_MACHINESystem”索引值,這時NTLDR將讀取“HKEY_MACHINESystemselect”索引值來決定哪一個ControlSet將被載入。所載入的ControlSet將包含裝置的驅動程式以及需要載入的服務。再接著NTLDR載入註冊表“HKEY_LOCAL_MACHINESystemservice”下的start索引值為0的底層裝置驅動。當ControlSet的鏡像CurrentControlSet被載入時,NTLDR將把控制權傳遞給NTOSKRNL.EXE,至此引導過程將結束。
小提示:如果在啟動的時候按F8鍵,那麼我們將會在啟動菜單中看到多種選擇啟動模式,這時NTLDR將根據使用者的選擇來使用啟動參數載入NT核心,使用者也可以在Boot.ini檔案裡設定啟動參數。