ntldr

OS Loader
Component of Microsoft Windows
WindowsXPx64-NTLDR.png
Typeboot loader
Introduced inWindows NT 3.1
Last included inWindows 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 path
  • osloader - OS Loader path
  • osloadoptions - Arguments passed to the kernel entry point; some are handled by the OS Loader while others are handled by the kernel
  • osloadpartition - ARC name of the OS partition
  • systempartition - ARC name of the system partition, i.e. the partition where the HAL is stored
  • x86systempartition - 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 from boot.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 loads kd1394.dll, usb loads kdusb.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 - Allow ntldr to use bootmgr, required bootmgr 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]

Notes[edit | edit source]

  1. 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.
  2. In versions prior to Windows XP.