NTLDR

From Wikipedia, the free encyclopedia
(Redirected from Bootsect.dos)
Jump to navigation Jump to search

Template:Short description NTLDR (abbreviation of NT loader) is the boot loader for all releases of Windows NT operating system from 1993 with the release of Windows NT 3.1 up until Windows XP and Windows Server 2003. From Windows Vista onwards it was replaced by the BOOTMGR bootloader. NTLDR is typically run from the primary storage device, but it can also run from portable storage devices such as a CD-ROM, USB flash drive, or floppy disk. NTLDR can also load a non NT-based operating system given the appropriate boot sector in a file.

NTLDR requires, at the minimum, the following two files to be on the system volume:

  • <templatestyles src="Mono/styles.css" />ntldr, the main boot loader itself
  • <templatestyles src="Mono/styles.css" />NTDETECT.COM, required for booting an NT-based OS, detects basic hardware information needed for successful boot

An additional important file is boot.ini, which contains boot configuration (if missing, NTLDR will default to \Windows on the first partition of the first hard drive).

On non-English versions of NTLDR, NTLDR itself may load bootfont.bin. Later, the BOOTMGR is language neutral.

NTLDR is launched by the volume boot record of system partition, which is typically written to the disk by the Windows <templatestyles src="Mono/styles.css" />FORMAT or <templatestyles src="Mono/styles.css" />SYS command.

History

Windows NT was originally designed for ARC-compatible platforms, relying on its boot manager support and providing only osloader.exe, a loading program accepting ordinary command-line arguments specifying Windows directory partition, location or boot parameters, which is launched by ARC-compatible boot manager when a user chooses to start specific Windows NT operating system. However, because IBM PC compatible machines lacked any of the ARC support, as that platform preceded ARC, the additional layer was added specifically for that platform: custom boot manager code presenting text menu allowing the user to choose from one or more operating system and its options configured in boot.ini configuration file, prepended by special StartUp module which is responsible for some preparations such as switching the CPU to the protected mode. When a user chooses an operating system from the boot menu, the following command-line arguments are then passed to the part of the osloader.exe common to all processor architectures:

<templatestyles src="Pre/styles.css"/>

load osloader=<Windows Path>\System32\NTLDR systempartition=<Windows Partition> osloadpartition=<Windows Partition> osloadoptions=<Windows Boot Parameters> consolein=multi(0)key(0)keyboard(0) consoleout=multi(0)video(0)monitor(0) x86systempartition=<NTLDR partition>

In Windows releases starting from Windows Vista and Windows Server 2008, NTLDR has been split off back to its boot manager and system loader parts: the Windows Boot Manager and winload.exe. The boot manager part has been completely rewritten; it no longer uses boot.ini as a configuration file, although the bootcfg utility for modifying boot.ini is still present for the case of multi-boot configurations with Windows versions up to Windows XP and Windows Server 2003.

Command-line interface

Script error: No such module "Infobox". Script error: No such module "Check for unknown parameters".Script error: No such module "Check for conflicting parameters". Script error: No such module "Unsubst". The bootsect.exe utility program in the Windows PE tools has options /nt52 (NTLDR) and /nt60 (Vista and up) to store a NTLDR or Vista boot record in the first sector of a specified partition.[1] The command can be used for FAT and NTFS based file systems. It replaces the FixFAT and FixNTFS tools.[2]

Example

The following example applies the NTLDR compatible master boot code to the D: volume:[2]

C:\>bootsect /nt52 D:

Startup process

Script error: No such module "labelled list hatnote". When a PC is powered on its BIOS follows the configured boot order to find a bootable device. This can be a harddisk, floppy, CD/DVD, network connection, USB-device, etc. depending on the BIOS. In the case of a floppy the BIOS interprets its boot sector (first sector) as code, for NTLDR this could be a NTLDR boot sector looking for the ntldr file on the floppy. For a harddisk the code in the Master Boot Record (first sector) determines the active partition. The code in the boot sector of the active partition could then be again a NTLDR boot sector looking for ntldr in the root directory of this active partition. In a more convoluted scenario the active partition can contain a Vista boot sector for the newer Vista boot manager with an {ntldr} entry pointing to another partition with a NTLDR boot sector.[3]

When booting, the loader portion of NTLDR does the following in order:

  1. Accesses the file system on the boot drive (either FAT or New Technology File System, NTFS).
  2. If Windows was put in the hibernation state, the contents of hiberfil.sys are loaded into memory and the system resumes where it left off.
  3. Otherwise, reads boot.ini and prompts the user with the boot menu accordingly.
  4. If a non NT-based OS is selected, NTLDR loads the associated file listed in boot.ini (bootsect.dos if no file is specified or if the user is booting into a DOS based OS) and gives it control.
  5. If an NT-based OS is selected, NTLDR runs ntdetect.com, which gathers information about the computer's hardware. (If ntdetect.com hangs during hardware detection, there is a debug version called ntdetect.chk that can be found on Microsoft support.[4])
  6. Starts ntoskrnl.exe, passing to it the information returned by ntdetect.com.[5]

boot.ini

NTLDR's first action is to read the boot.ini file.[6] NTLDR allows the user to choose which operating system to boot from at the menu. For NT and NT-based operating systems, it also allows the user to pass preconfigured options to the kernel. The menu options are stored in boot.ini, which itself is located in the root of the same disk as NTLDR. Though NTLDR can boot DOS and non-NT versions of Windows, boot.ini cannot configure their boot options.

For NT-based OSs, the location of the operating system is written as an Advanced RISC Computing (ARC) path.

boot.ini is protected from user configuration by having the following file attributes: system, hidden, read-only. To manually edit it, the user would first have to remove these attributes. A more secure fashion to edit the file is to use the bootcfg command from a console. bootcfg will also relock the file (setting the file back to system, hidden, and read-only). Additionally, the file can be edited within Windows using a text editor if the folder view option "Show hidden files and folders" is selected, the folder view option "Hide protected operating system files" is unchecked, and the "Read-only" option is unchecked under the file's properties.

bootsect.dos is the boot sector loaded by NTLDR to load DOS, or if there is no file specified when loading a non NT-based OS.

Example

An example of a boot.ini file:

[boot loader]
timeout=40
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

If the boot loader timeout option in boot.ini is set to 0, the NTLDR boot menu does not appear. Extreme caution should be taken when modifying the boot loader, as erroneous information can result in an OS that fails to boot.

NT kernel switches

Script error: No such module "Unsubst".

File:Windows Advanced Options menu.png
NTLDR Bootloader's Advanced Option Menu
  • <templatestyles src="Mono/styles.css" />/3GB Template:En dash Forces x86-based systems to increase the virtual address space allocated for user programs to 3 GB, and to decrease to 1 GB allocated to the kernel and to executive components. Used for some programs that require more than the standard 2 GB allocated to user programs and 2 GB allocated to the system. Some configurations of Windows Server 2003 that run virtual memory-intensive applications such as database servers or Microsoft Exchange Server 2003 may require this switch[7] or may benefit from improved performance.[8] Activating this option may break VMR-9 video.[9] Activating this option may also cause audio problems with Creative SB X-Fi series sound cards with (X-Fi Gamer / X-Fi Titanium @ WINXP 32-bit 3/2012). These problems may be connected to the way that Creatives drivers handle memory over 2 GB.Script error: No such module "Unsubst".
  • <templatestyles src="Mono/styles.css" />/BASEVIDEO Template:En dash Forces the system into standard 640 × 480 16-color VGA mode by using a video device driver that is compatible with any video adapter. If the operating system fails to load due to a faulty or incorrectly configured video driver, this switch allows the system to load, so the user may then remove, update, or roll back the video driver causing the problem. Using this switch in conjunction with the <templatestyles src="Mono/styles.css" />/SOS switch helps to determine the driver that is triggering a failure.[7]
  • <templatestyles src="Mono/styles.css" />/BAUDRATE=nnn Template:En dash Sets the baud rate of the debug port that is used for kernel debugging. Use of this switch automatically enables the <templatestyles src="Mono/styles.css" />/DEBUG switch.[7] Specifies an override for the default baud rate (19200) at which a remote kernel debugger host will connect.[8] Example: <templatestyles src="Mono/styles.css" />/BAUDRATE=115200.
  • <templatestyles src="Mono/styles.css" />/BOOTLOG Template:En dash Turns on boot logging to a file named <templatestyles src="Mono/styles.css" />%SystemRoot%\Ntbtlog.txt.[7]
  • <templatestyles src="Mono/styles.css" />/BOOTLOGO Template:En dash Displays an alternate 640 × 480 16-color custom bitmap. The bitmap must be saved in the \Windows directory with the name <templatestyles src="Mono/styles.css" />boot.bmp. Use with the <templatestyles src="Mono/styles.css" />/NOGUIBOOT switch.[8]
  • <templatestyles src="Mono/styles.css" />/BURNMEMORY=nnn Template:En dash Specifies the amount of memory, in megabytes, that Windows cannot use. Use this parameter to confirm a performance problem or other problems that are related to RAM depletion.[7]
  • <templatestyles src="Mono/styles.css" />/CHANNEL=nn Template:En dash Use with the <templatestyles src="Mono/styles.css" />/DEBUG switch and the <templatestyles src="Mono/styles.css" />/DEBUGPORT=1394 switch to selects the IEEE 1394 interface channel (numbered 0 to 62) through which kernel debugging communications will flow.[7]
  • <templatestyles src="Mono/styles.css" />/CRASHDEBUG Template:En dash Loads the kernel debugger at OS startup, but it remains inactive until a Stop error occurs. With this switch, the COM port can be used for normal operations while Windows is running. If Windows crashes, the switch converts the port to a debug port. (This action turns on remote debugging.)[7]
  • <templatestyles src="Mono/styles.css" />/DEBUG Template:En dash Turns on the kernel debugger when Windows starts. Unlike the <templatestyles src="Mono/styles.css" />/CRASHDEBUG switch, <templatestyles src="Mono/styles.css" />/DEBUG uses the COM port whether you use debugging or not.[7]
  • <templatestyles src="Mono/styles.css" />/DEBUGPORT=comx Template:En dash Specifies the COM port to use for the debug port. By default, <templatestyles src="Mono/styles.css" />/DEBUGPORT uses COM2 if it exists. Otherwise, the default is COM1. Use of this switch automatically enables the <templatestyles src="Mono/styles.css" />/DEBUG switch.[7]
  • <templatestyles src="Mono/styles.css" />/FASTDETECT[:comx[,comy]] Template:En dash Turns off serial and bus mouse detection for the specified port(s), or for all ports if none are specified. Use this switch when there is a component other than a mouse attached to a serial port during the startup process. Ports may be separated with commas to turn off more than one port. (Note: In earlier versions of Windows, including Windows NT 4.0, this switch was named <templatestyles src="Mono/styles.css" />/NOSERIALMICE; see "<templatestyles src="Mono/styles.css" />/NOSERIALMICE[=comx]" below.)[7]
  • <templatestyles src="Mono/styles.css" />/HAL=filename Template:En dash Enables the user to override NTLDR's default filename for the kernel image (ntoskrnl.exe) and/or the HAL (hal.dll). This can be useful for alternating between a checked kernel environment and a free (retail) kernel environment or even to manually select a different HAL.[8] It can also be used to switch between starting in multiprocessor and single processor modes, which can be used in conjunction with the <templatestyles src="Mono/styles.css" />/kernel switch. (Note: filename must be in System32 directory. This can be a simple file, hard link, but not a symbolic link or a junction point.[7])
  • <templatestyles src="Mono/styles.css" />/KERNEL=filename Template:En dash Defines the kernel that is loaded at startup. With this switch, the user can switch between a debug-enabled kernel that is full of debugging code and a regular kernel. Same limitations for filename location and type as for /HAL switch.[7]
  • <templatestyles src="Mono/styles.css" />/MAXMEM=nnn Template:En dash Specifies the maximum amount of RAM, in megabytes, that Windows can use.[7] However, the <templatestyles src="Mono/styles.css" />/MAXMEM switch does not account for memory holes. Therefore, it is recommended to use the <templatestyles src="Mono/styles.css" />/BURNMEMORY switch instead.[10]
  • <templatestyles src="Mono/styles.css" />/MININT Template:En dash This option is used by Windows Preinstallation Environment (WinPE) and loads the Registry SYSTEM hive as a volatile hive such that changes made to it in memory are not saved back to the hive image.[8]
  • <templatestyles src="Mono/styles.css" />/NODEBUG Template:En dash Turns off debugging. This scenario can cause a Stop Error if a program has a debug hardcoded breakpoint in its software.[7]
  • <templatestyles src="Mono/styles.css" />/NOEXECUTE={OPTIN|OPTOUT|ALWAYSON|ALWAYSOFF} Template:En dash This option is only available on 32-bit versions of Windows when running on processors supporting Data Execution Prevention (DEP). It enables DEP, which results in the memory manager marking pages containing data as no-execute so that they cannot be executed as code. This can be useful for preventing malicious code from exploiting buffer overflow bugs with unexpected program input in order to execute arbitrary code. No-execute protection is always enabled on 64-bit versions of Windows on processors that support no-execute protection. There are several options the user can specify with this switch:[8]
    • <templatestyles src="Mono/styles.css" />/NOEXECUTE=OPTIN Template:En dash Enables DEP for core system images and those specified in the DEP configuration dialog.
    • <templatestyles src="Mono/styles.css" />/NOEXECUTE=OPTOUT Template:En dash Enables DEP for all images except those specified in the DEP configuration dialog.
    • <templatestyles src="Mono/styles.css" />/NOEXECUTE=ALWAYSON Template:En dash Enables DEP on all images.
    • <templatestyles src="Mono/styles.css" />/NOEXECUTE=ALWAYSOFF Template:En dash Disables DEP.
  • <templatestyles src="Mono/styles.css" />/NOGUIBOOT Template:En dash Displays the device driver names while they are being loaded. Use with the <templatestyles src="Mono/styles.css" />/BASEVIDEO switch to determine the driver that is triggering a failure.[7]
  • <templatestyles src="Mono/styles.css" />/NOPAE Template:En dash Forces Ntldr to load the non-Physical Address Extension (PAE) version of the Windows kernel, even if the system is detected as supporting x86 PAEs and has more than 4 GB of physical memory.[8]
  • <templatestyles src="Mono/styles.css" />/NOSERIALMICE[=comx] Template:En dash (Obsolete on all versions post-Windows NT 4.0) Replaced by the absence of the <templatestyles src="Mono/styles.css" />/FASTDETECT switch (see "<templatestyles src="Mono/styles.css" />/FASTDETECT" above). Disables serial mouse detection on the specified COM ports. Using <templatestyles src="Mono/styles.css" />/NOSERIALMICE without specifying a COM port disables serial mouse detection on all COM ports.[8]
  • <templatestyles src="Mono/styles.css" />/NUMPROC=nnn Template:En dash Specifies the number of CPUs (or processors) that can be used on a multiprocessor system. Example: <templatestyles src="Mono/styles.css" />/NUMPROC=2 on a four-way system will prevent Windows from using two of the four processors.[8] Useful for when troubleshooting performance problems and defective CPUs.[7]
  • <templatestyles src="Mono/styles.css" />/ONECPU Template:En dash Equivalent to using <templatestyles src="Mono/styles.css" />/NUMPROC=1. Causes Windows to use only one CPU (or processor) on a multiprocessor system.[8]
  • <templatestyles src="Mono/styles.css" />/PAE Template:En dash Enables Physical Address Extension support. In Safe Mode, the computer starts by using normal kernels, even if the <templatestyles src="Mono/styles.css" />/PAE switch is specified.[7]
  • <templatestyles src="Mono/styles.css" />/PCILOCK Template:En dash For x86-based systems, this stops the operating system from dynamically assigning hardware input, hardware output, and interrupt request resources to PCI devices. Instead, the BIOS configures the devices.[7]
  • <templatestyles src="Mono/styles.css" />/REDIRECT Template:En dash Turns on Emergency Management Services (EMS) on a Windows Server 2003, Enterprise Edition-based computer. To turn on EMS by editing the Boot.ini on an x86-based computer, edit both the [boot loader] section and the [operating systems] section of the Boot.ini file.[7]
  • <templatestyles src="Mono/styles.css" />/SAFEBOOT:{MINIMAL|NETWORK|DSREPAIR}[(ALTERNATESHELL)] Template:En dash Starts Windows in Safe Mode. Options must start with a colon ":" before the other parameters as shown above. An additional option the user can append is <templatestyles src="Mono/styles.css" />(ALTERNATESHELL), which tells Windows to use the program specified by the <templatestyles src="Mono/styles.css" />HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\AlternateShell value as the graphical shell rather than to use the default, which is Windows Explorer.[8] The user can also combine other <templatestyles src="Mono/styles.css" />boot.ini parameters with <templatestyles src="Mono/styles.css" />/SAFEBOOT:type. The following examples illustrate the parameters that are in effect when you select a Safe Mode option from the startup recovery menu. (Note: The <templatestyles src="Mono/styles.css" />/SOS, <templatestyles src="Mono/styles.css" />/BOOTLOG, and <templatestyles src="Mono/styles.css" />/NOGUIBOOT switches are not required with any one of these settings, but the switches can help with troubleshooting.)[7]
    • Safe Mode (<templatestyles src="Mono/styles.css" />/SAFEBOOT:MINIMAL /SOS /BOOTLOG /NOGUIBOOT) Template:En dash Default: Uses a minimal set of device drivers and services to start Windows.[11]
    • Safe Mode with Networking (<templatestyles src="Mono/styles.css" />/SAFEBOOT:NETWORK /SOS /BOOTLOG /NOGUIBOOT) Template:En dash Default mode together with the drivers necessary to load networking.[11]
    • Safe Mode with Command Prompt (<templatestyles src="Mono/styles.css" />/SAFEBOOT:MINIMAL(ALTERNATESHELL) /SOS /BOOTLOG /NOGUIBOOT) Template:En dash Default mode, except that Cmd.exe starts instead of Windows Explorer.[11]
    • Windows in Directory Services Restore Mode (<templatestyles src="Mono/styles.css" />/SAFEBOOT:DSREPAIR /SOS) Template:En dash (This mode is valid only for Windows-based domain controllers.) Performs a directory service repair.[11]
  • <templatestyles src="Mono/styles.css" />/SOS Template:En dash Causes Windows to list the device drivers marked to load at boot time and then to display the system version number (including the build number), amount of physical memory, and number of processors. By default, the boot loader only echoes progress dots or bars. Use with the <templatestyles src="Mono/styles.css" />/BASEVIDEO switch to determine if the driver is triggering a failure.[7][8] This option also disables the graphical boot screen from Windows 2000 and later and instead uses the Windows NT 4.0-style boot screen, but rendered in the same way as when CHKDSK is run on boot (aka "Autochk") (and in the case of Windows 2000, a progress bar is shown at the bottom).
  • <templatestyles src="Mono/styles.css" />/USEPMTIMER Template:En dash Specifies that Windows uses the Power Management Timer (PM_TIMER) timer settings instead of the Time Stamp Counter (TSC) timer settings if the processor supports the PM_TIMER settings.[7] By default, Windows Server 2003 Service Pack 2 (SP2) uses the PM timer for all multiprocessor APIC or ACPI HALs. If not running Windows Server 2003 SP2, <templatestyles src="Mono/styles.css" />/USEPMTIMER must be enabled.[12]
  • <templatestyles src="Mono/styles.css" />/USERVA=nnn Template:En dash Customizes the amount of memory, in megabytes, that is allocated to processes when using the <templatestyles src="Mono/styles.css" />/3GB switch. This switch permits more page table entry kernel memory but still maintains almost 3 GB of process memory space.[11]
  • <templatestyles src="Mono/styles.css" />/WIN95 Template:En dash Directs Ntldr to boot the Windows boot sector stored in <templatestyles src="Mono/styles.css" />bootsect.w40.[8]
  • <templatestyles src="Mono/styles.css" />/WIN95DOS Template:En dash Directs Ntldr to boot the MS-DOS boot sector stored in <templatestyles src="Mono/styles.css" />bootsect.dos.[8]
  • <templatestyles src="Mono/styles.css" />/YEAR=yyyy Template:En dash Instructs the Windows core time function to ignore the year that the computer's real-time clock reports and instead use the one indicated. Example: <templatestyles src="Mono/styles.css" />/YEAR=2001. (This switch was created to assist in Y2K testing.)[8]

See also

References

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "citation/CS1".
  2. a b Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. a b c d e f g h i j k l m n o p q r s t u v Script error: No such module "citation/CS1".
  8. a b c d e f g h i j k l m n o Script error: No such module "citation/CS1".
  9. Script error: No such module "citation/CS1".
  10. Script error: No such module "citation/CS1".
  11. a b c d e Script error: No such module "citation/CS1".
  12. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

External links

Script error: No such module "Navbox".