新起点
NTLDR
2020-12-03 07:23:03

NTLDR(的缩写)是微软的Windows NT系列操作系统(直至Windows XP和Windows Server 2003)的引导程序。NTLDR可以从硬盘以及CD-ROM、U盘等移动存储器运行并引导Windows NT系统的启动。如果要用NTLDR启动其他操作系统,则需要将该操作系统所使用的启动扇区代码保存为一个文件,NTLDR可以从这个文件加载其它引导程序。

NTLDR主要由两个文件组成,这两个文件必须放在系统分区(根据微软的定义,为在MBR中标识为活动分区的分区,一般为第一个分区/C分区):

boot.ini也是比较重要的文件。它是引导程序的配置文件。当boot.ini丢失时,NTLDR会启动第一块硬盘第一个分区上的\Windows目录中的系统。

在安装、维护Windows NT系统时,可以使用fixmbr命令在硬盘中写入启动NTLDR引导程序的代码。

Windows Vista、Windows Server 2008及以后版本的操作系统中,NTLDR被BOOTMGR替代。

NTLDR由两个可执行文件构成:

使用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。

在确认系统为冷启动,即非休眠模式后,NTLDR所做的第一件事为读取boot.ini。

以下是boot.ini的一个示例:

timeout=30default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWSmulti(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetectC:\grldr="Ubuntu"C:\="Previous Version of Windows"

解释

  • 节:配置启动菜单的细节。
  • timeout=30:timeout选项控制启动菜单显示的时间长度,单位为秒,最短为0,此时启动菜单不显示。
  • default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS:default选项控制启动菜单的默认选项。
  • 节:列举启动项目。
  • 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设置回复为硬盘启动即可。

相关:

  • 引导程序
  • 网站公告: