NTLDR is large enough to contain the code to be able to read one of the Windows-supported file systems (FAT, FAT32, or NTFS).
NTLDR reads the file BOOT.INI, which is an ASCII text file specifing alternative operating systems to load. NTLDR then displays a menu and lets the user select which operating system to load. (If there is no BOOT.INI file, then NTLDR selects C:\WINNT\SYSTEM32 for systems through Windows 2000, or C:|WINDOWS\SYSTEM32 for new systems.) BOOT.INI specifies how long to wait for a response from the user. If the user does not select a choice before the specified time expires, a default (also specified in BOOT.INI) is selected. (If the time-out value is specified as 0 in BOOT.INI, then the default is taken without displaying a menu; if the time-out value is specified as -1, then there is no time-out and the menu remains on the screen until the user makes a selection.)
It is possible for the user (or default value) to select a Windows 95, DOS, or Linux system.
Assuming the user selects an NT boot option, NTLDR then loads NTDETECT.COM. NTDETECT then determines what I/O devices are available and returns control to NTLDR.
NTLDR loads NTOSKRNL.EXE from the system directory. (The system directory was selected using BOOT.INI or defaulted as described above.) NTOSKRNL.EXE contains the bulk of the kernel and executive code.
Next NTLDR loads HAL.DLL which contains the Hardware Abstraction Layer, that provides the low-level hardware-dependent interfaces for the NT kernel.
NTLDR then loads those device drivers that are marked "BOOT" in the registry. NTOSKRNL, HAL, and boot drivers are all loaded using the BIOS disk I/O driver. (For SCSI disks, code in the file NTBOOTDD.SYS is also used).
Once the boot device drivers are loaded, control is passed to the kernel.
Next: Kernel