ntldr
Component of Microsoft Windows | |
![]() ntldr in Windows XP Professional x64 Edition | |
Type | boot loader |
---|---|
Introduced in | Windows NT 3.1 |
Last included in | Windows Server 2003 |
Replaced by | |
Windows Boot Manager |
ntldr
is the file name used for the x86 implementation of the boot loader used by Windows NT versions prior to Windows Vista. Depending on the hardware platform, it can also be named as osloader.exe
on ARC-compatible systems or as ia64ldr.efi
on Itanium systems.
The main part of the boot loader is the OS Loader (osloader.exe
), which takes the location of the kernel and HAL as arguments and is common to all ports of Windows NT. As the OS Loader executable uses ARC firmware routines for I/O, it is combined with an ARC emulator module on platforms that do not use ARC-compatible firmware, i.e. x86,[a] AMD64 and IA-64.
On Itanium or ARC-compatible systems, both of which implement a boot manager in firmware that is capable of launching executable files directly from a file system, the OS Loader is installed to the system partition and a firmware boot entry is added that launches the loader with arguments that point it to a specific Windows instance. On x86 and AMD64, which has no such firmware support, the loader is configured via the boot.ini
configuration file and also implements a multiboot menu.
History[edit | edit source]
The first build known to use ntldr
is the Windows NT 3.1 October 1991 build. Previous builds, such as build 196, used an earlier boot loader combined with OS/2 boot code and primitive multiboot selection.
The Advanced boot options menu, which allows Windows to boot in Safe mode or with specific options, like while using the default VGA driver, was introduced in Windows 2000 build 1738.
It was replaced in Windows Vista build 5048 by Windows Boot Manager. Installing Windows Vista or newer alongside one or multiple NTLDR
-powered systems will create a respective BCD entry for NTLDR
named "Earlier Version of Windows".
OS Loader arguments[edit | edit source]
The OS Loader receives the following arguments from the ARC firmware or boot menu implementation:
consolein
- ARC name of the console input device, e.g.multi(0)key(0)keyboard(0)
consoleout
- ARC name of the console output device, e.g.multi(0)video(0)monitor(0)
osloadfilename
- Kernel pathosloader
- OS Loader pathosloadoptions
- Arguments passed to the kernel entry point; some are handled by the OS Loader while others are handled by the kernelosloadpartition
- ARC name of the OS partitionsystempartition
- ARC name of the system partition, i.e. the partition where the HAL is storedx86systempartition
- ARC name of the partition where the OS Loader is stored. Used on x86 only, as on other platforms the loader is stored in the system partition together with the HAL.
The following load options are at least in part handled by the OS Loader:
/SAFEBOOT=<mode>
- Enables safe mode/BOOTLOGO
- Loads a bitmap fromboot.bmp
in Windows directory and displays it/SOS
- Prints driver names during loading. Furthermore, kernel disables the boot animation and displays an NT-style version banner./3GB
- Allocates 3 gigabytes of memory space to user mode./PAE
,/NOPAE
- Explicitly toggles Physical Address Extensions (PAE) on/off./HAL=<hal>
- Specifies the HAL file name to be loaded./KERNEL=<kernel>
- Specifies the kernel file name to be loaded./DEBUGPORT=<port>
- Specifies the kernel debugger DLL file name to be loaded, e.g.1394
loadskd1394.dll
,usb
loadskdusb.dll
./XIPBOOT
,/XIPROM=<path>
,XIPRAM=<path>
,/XIPMEGS=<size>
- Configures execute in place/LASTKNOWNGOOD
- Loads the last known good configuration/RDPATH=<path>
- Configures a RAM disk/SDIBOOT=<path>
- Boots from SDI image/USENEWLOADER
- Allowntldr
to usebootmgr
, requiredbootmgr
and it components in the system partition
Functionality[edit | edit source]
The main OSLOADER
binary is a COFF executable (before Windows XP build 2469; PE starting from then) targeting ARC firmware. On x86 and AMD64 systems which do not use ARC firmware, it is wrapped around an ARC emulator referred to as NTLDR
, which is responsible for initializing the actual boot loader; an additional component, NTDETECT.COM
, analyses the system to create an ARC-compatible device tree. OSLOADER
is configured by the use of a file located in the root directory of the drive where it has been installed, boot.ini
. If no such boot configuration data is present, OSLOADER
will attempt to boot from the default Windows directory located at the root of an applicable hard disk partition, pointing to either C:\WINNT
[b] or C:\WINDOWS
. Disks and partitions are identified in the ARC device path format as multi(x)disk(x)rdisk(x)partition(x)
or, in the case of SCSI disks, as scsi(x)disk(x)rdisk(x)partition(x)
.
The TIMEOUT=
line configures how long OSLOADER
is displayed before it starts booting the system. Certain region-specific releases of Windows such as those marketed in Europe, Middle East or Far East regions utilize a 640×480-pixel graphical mode instead of 80×25 text mode to accommodate for non-Latin character sets.
Details for general protection faults or traps may be spewed by the NTLDR ARC emulator if OSLOADER
crashes during code execution.
Gallery[edit | edit source]
ntldr
in the Windows NT 3.1 October 1991 buildntldr
in Windows NT 4.0ntldr
in Windows 2000
Notes[edit | edit source]
- ↑ An exception to this are SGI Visual Workstation 320/540 workstations, which are x86-based but still use SGI's ARCS firmware adopted from their earlier MIPS-based systems.
- ↑ In versions prior to Windows XP.