深入Win XP之認識神秘的啟始文件NTLDR!
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文件裡設置啟動參數。
|