NTLDR

NTLDR（NT loader 的縮寫）是微軟的 Windows NT 系列作業系統（直至 Windows XP 和 Windows Server 2003）的載入程式。NTLDR 可以從硬碟以及 CD-ROM、隨身碟等移動儲存器執行並引導 Windows NT 系統的啟動。如果要用 NTLDR 啟動其他作業系統，則需要將該作業系統所使用的啟動扇區程式碼儲存為一個檔案，NTLDR 可以從這個檔案載入其它載入程式。

NTLDR 主要由兩個檔案組成，這兩個檔案必須放在系統分割槽（根據微軟的定義，為在 MBR 中標識為活動分割槽的分割槽，一般為第一個分割槽 / C 分割槽）：

NTLDR，這是載入程式本身
NTDETECT.COM，用於檢測基礎硬體資訊，以便系統正常啟動。

boot.ini 也是比較重要的檔案。它是載入程式的組態檔。當 boot.ini 丟失時，NTLDR 會啟動第一塊硬碟第一個分割槽上的 \Windows 目錄中的系統。

在安裝、維護 Windows NT 系統時，可以使用 fixmbr 命令在硬碟中寫入啟動 NTLDR 載入程式的程式碼。

Windows Vista、Windows Server 2008 及以後版本的作業系統中，NTLDR 被 BOOTMGR 替代。

結構

NTLDR 由兩個可執行檔案構成：

第一部分是一個標準二進位制檔案，用於切換系統至保護模式，使得系統能識別並執行可移植可執行（PE）檔案，並執行第二部分。一般被稱為 STPBOOT.BIN
第二部分是一個可移植可執行檔案，被稱為 OSLOADER.EXE

使用 WinHex 或者類似的二進位制處理軟體，在 NTLDR 中搜索 “MZ”，並將其前的部分截去，即可以獲得 OSLOADER.EXE。在 Windows 安裝檔案中也可以找到壓縮後的 OSLOADER.EX_檔案。

Windows NT 最初是為 ARC（一類 RISC 系統架構）設計的，因此只有 OSLOADER.EXE，即系統載入器，透過接受指定的系統檔案路徑和其他啟動引數引導對應目錄下的 Windows NT 系統，而指定這些引數的工作交給 ARC 自帶的啟動管理器進行。x86 架構缺乏啟動管理器：BIOS 只會呼叫第一啟動裝置的 MBR 中列明的活動分割槽的卷引導記錄。因此啟動管理器的功能被包括在 OSLOADER 部分中，直至微軟在 2003 年引入了自己的啟動管理器。ARC 的啟動管理器的保護模式切換和 PE 檔案識別執行功能則交給 STPBOOT 完成。boot.ini 中的列表項也被設計為類似於 ARC 的格式，以便直接傳給 OSLOADER.EXE。

啟動步驟

與一般的系統啟動程序一致，BIOS 呼叫 MBR，然後呼叫活動分割槽的卷引導記錄，該卷引導記錄被設計為搜尋 NTLDR，並執行之。
NTLDR 的第一部分被呼叫。此時系統進入保護模式，並可以識別並執行 PE 格式的可執行檔案。
NTLDR 的第二部分，OSLOADER.EXE 被呼叫。OSLOADER.EXE 中內嵌有 FAT、NTFS 和 ISO 9660 三種檔案系統的驅動，啟動管理器，以及 INI 檔案讀取器的 CAB 檔案解壓縮器。OSLOADER 中附帶的檔案系統驅動透過 BIOS 中斷直接訪問磁碟，因為核心和 HAL 此時都沒有被載入。此時系統可以訪問磁碟內的檔案。
如果 Windows 被置於休眠模式，讀取 hiberfil.sys 中的內容並將其寫入記憶體，然後恢復系統的執行。
OSLOADER 使用內建的 INI 檔案讀取器，試圖讀取 boot.ini 檔案的內容，並配置啟動選單。如果 boot.ini 不存在，OSLOADER 將視為 boot.ini 中有且僅有一個指向 multi (0) disk (0) rdisk (0) partition (1)\WINDOWS 且沒有引數的啟動專案。如果 boot.ini 中只存在一個啟動專案，則忽略 timeout 的時間設定（視為 0）。
向用戶顯示啟動選單，並按照 timeout 的時間設定倒計時。如果使用者按下按鍵，則停止倒計時。（這樣即使只有一個啟動專案，當用戶在自檢結束後狂按 F8 鍵，也可以進入進階開機選單）
如果一個非 NT 的系統被選擇，OSLOADER 載入列表項中指定的啟動扇區程式碼檔案，並移交控制權。此時系統回到真實模式。如果沒有指定檔案（常見於 Windows 9x 和 Windows NT 共存），則載入 bootsect.dos，然後移交控制權，由其搜尋並載入 IO.SYS。
如果一個 NT 系統被選擇，OSLOADER 呼叫 NTDETECT.COM。NTDETECT 將檢測系統硬體相關的資訊，決定系統將使用的硬體配置檔案，並將以上資訊交給 OSLOADER。
OSLOADER 根據 NTDETECT 返回的系統硬體相關資訊，載入列表項中指定的資料夾中的 Windows NT 核心態管理程式（Windows Executive），包括 NTOSKRNL.EXE 及 HAL.DLL。此外尚有 KDCOM.DLL 及 BOOTVID.DLL 也在這個階段載入。
OSLOADER 載入登錄檔的 SYSTEM 配置單元，其中包含數個系統配置集，每個配置集都包括應當載入的驅動程式和服務等；以及一系列指示標誌，指向預設配置集、上次啟動失敗的配置集及 “最後一次正確的配置” 對應的配置集。OSLOADER 根據使用者選擇及上次啟動情況選擇配置集，讀取對應的應當載入的驅動程式列表。
OSLOADER 將 NTDETECT 檢測到的硬體資訊及驅動程式列表交給 Windows NT 核心態管理程式，並移交控制權。

boot.ini

在確認系統為冷啟動，即非休眠模式後，NTLDR 所做的第一件事為讀取 boot.ini。

3.1 示例

以下是 boot.ini 的一個示例：

boot loader

timeout=30

default=multi (0) disk (0) rdisk (0) partition (1)\WINDOWS

operating systems

multi (0) disk (0) rdisk (0) partition (1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect

C:\grldr="Ubuntu"

C:\="Previous Version of Windows"

3.1.1 解釋

boot loader 節：配置啟動選單的細節。
timeout=30：timeout 選項控制啟動選單顯示的時間長度，單位為秒，最短為 0，此時啟動選單不顯示。
default=multi (0) disk (0) rdisk (0) partition (1)\WINDOWS：default 選項控制啟動選單的預設選項。
operating systems 節：列舉啟動專案。
multi (0) disk (0) rdisk (0) partition (1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect：基於 Windows NT 的系統的啟動專案。
multi (0) disk (0) rdisk (0) partition (1)\WINDOWS：對於基於 Windows NT 的系統，系統檔案路徑由 ARC 路徑給出。
"Microsoft Windows XP Professional"：啟動專案的友好名稱，即顯示在啟動選單中的名稱。
/fastdetect：指定預設的引導引數。使用高階引導選單啟動系統會覆蓋引導引數的設定。
/fastdetect：不檢測序列介面的滑鼠。
/noexecute=optin：在 Windows XP SP2 後預設安裝的系統會有該引導引數，意為為基本 Windows 程式和服務啟用資料執行保護（DEP）。
C:\grldr="Ubuntu"：基於非 Windows NT 的系統的啟動專案。
C:\grldr：對於基於非 Windows NT 的系統，引導扇區檔案路徑由 DOS 路徑給出。
“grldr” 是 GRUB4DOS 的預設引導扇區檔名。Ubuntu 曾使用 Wubi 提供在 Windows 下安裝 Ubuntu 的解決方案。
C:\="Previous Version of Windows"
C:\：對於基於 MS-DOS 的系統，在非三方啟動（DOS、Windows 9x、Windows NT 共存）、非啟動到恢復控制檯的情況下，引導扇區檔名稱可以省略，此時視為 “C:\bootsect.dos”。
在三方啟動情況下，需要進行一些特殊操作，比如 “/WIN95” 和 “/WIN95DOS” 引數用來模擬單系統狀況，且引導扇區檔名稱不可省略。
恢復控制檯對應的啟動專案一般為：C:\CMDCONS\BOOTSECT.DAT="Microsoft Windows Recovery Console" /cmdcons

多語言支援

NTLDR 不支援多語言，如果中日韓版本的 Windows NT 5.x NTLDR 找不到 BOOTFONT.BIN 字型檔案，會自動顯示英語代替。Windows Boot Manager 支援多語言。

常見問題

NTLDR 的問題常見於使用者不慎將該檔案刪除，這樣會導致 Windows NT 系列系統無法啟動，開機時將以黑屏白字顯示錯誤資訊："NTLDR is missing, Press CTRL+ALT+DEL to restart." 當用戶重啟後又將出現上述資訊，這樣就無法進入系統。

解決該問題需要向光驅內放入一張相應的 Windows 安裝光碟，開機時先將 BIOS 設定為從光碟啟動，進入系統安裝選單後再選擇進入故障恢復臺，按螢幕相關說明進入命令列模式，然後將光碟根目錄下 i386 資料夾內的 “ntldr” 檔案和 “ntdetect.com” 複製至系統分割槽根目錄下，重新啟動後將 BIOS 設定回覆為硬碟啟動即可。