Boot.ini文件详解

来源:互联网 发布:淘宝g家是什么牌子 编辑:程序博客网 时间:2024/04/19 06:11
Windows NT(Windows NT/2000/XP/2003)类的系统中存在着一个特殊文件,它就是“Boot.ini”文件,这个文件会很轻松地按照我们的需求设置好多重启动系统。

“Boot.ini”文件存在于已经安装的系统所在分区,一般位于C:/。但是它默认具有隐藏和只读属性,所以你要设置你的文件夹选项,才能显示“Boot.ini”文件。如果你想编辑Boot.ini文件,首先要取消其“只读”属性,然后使用记事本或者其它文本编辑器就可以编辑了。

一般情况下,Boot.ini内容如下(XP系统):

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

  在Windows 2000或者是XP系统中,我们可以很容易的设置“Boot.ini”文件。那就是在“我的电脑”上面点击右键,选择“属性”打开“系统属性”对话框,再点击“高级”选项卡,在“启动和故障修复”里面点击“设置”按钮,就可以打开“启动和故障修复”对话框了,在这里面我们就可以对它进行详细设置。
---------------------
  
现在,我们来说明一下这个文件内容的含义。

1.系统加载部分([boot loader])
   此部分包含两个设定,“timeout=”和“default=”

“timeout=”就是设定开机时操作系统列表的显示时间,超过设定值则自动加载下面“default=”指定的系统。默认值是30,单位为秒。
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)/Windows

本例中,表示30秒后,自动引导C盘的Windows XP系统
我们可以在这里面设定等待时间的长短。
timeout=0     不显示操作系统列表,而直接进入默认的操作系统
timeout=1     显示操作系统列表的时间为1秒
timeout=-1     如果用户不进行确认操作,则一直显示操作系统列表
timeout=30     系统默认

“default=”则是设定默认引导的系统。而等号后面的系统必须是已经在“[operating systems]”中存在的。如果想默认为加载另外的系统,我们可以参看“[operating systems]”中的系统列表,然后把想要加载的系统按照格式写到“default=”后面就可以了。

------------------
2.系统部分([operating systems])

在这部分中,列出了机器上所安装的全部系统。比如机器上只有一个WindowsXP系统,那么就只有一条信息,那就是:
multi(0)disk(0)rdisk(0)partition(1)/Windows="Microsoft Windows XP Professional" /fastdetect

在这里需要注意的是,在英文引号内的文字就是引导系统菜单时显示出来的让我们选择系统的提示文字,在这里面我们可以随意更改。比如我们可以改成: multi(0)disk(0)rdisk(0)partition(1)/Windows="Windows XP Badguy.name专用版" /fastdetect

详细解释:multi(0)disk(0)rdisk(0)partition(1)/Windows

这涉及到了ARC(高级RISC计算机)命名,它是x86或RISC计算机中用于标识设备的动态方法。ARC命名可分为两大类,以scsi为首或以multi为首,现分别说明如下:

scsi(x)disk(y)rdisk(0)partition(z):
以scsi为首,表明该磁盘控制器为SCSI卡,并且该卡上的BIOS被设置为禁用(disable)
scsi(x):表示第几个控制卡,x以0为起始数字。
disk(y):表示该控制卡下的第几块物理磁盘,y以0为起始数字。
partition(z):表示该物理磁盘上第几个分区,z以1为起始数字。
注意:以scsi为首的ARC命名的rdisk项总是rdisk(0)。

multi(x)disk(0)rdisk(y)partition(z):
以multi为首,表明该磁盘控制器为非SCSI设备(如IDE,ESDI)或是BIOS允许使用(enable)的SCSI卡。
multi(x):表示第几个控制卡,x以0为起始数字。
rdisk(y):表示该控制卡下的第几块物理磁盘,y以0为起始数字。
partition(z):表示该物理磁盘上第几个分区,z以1为起始数字。
注意:以multi为首的ARC命名的disk项总是disk(0)。

所以,“multi(0)disk(0)rdisk(0)partition(1) /Windows”,就是指在0号非SCSI设备上的第0号磁盘上的第一个分区(C盘)里面的“Windows”目录下可以找到能够启动的系统。

如果你在C盘下安装的Windows 2000,但Boot.ini中却使用了“multi(0)disk(0)rdisk(0)partition(1)/Windows”,恐怕系统就无法启动了,因为2000的系统目录为WINNT而不是Windows!

-------------------
继续,详细解释:/fastdetect

“/fastdetect”是一个开关符,用来控制启动该系统时的具体选项,下面列出了各种开关符的含义:

/3GB:这是Win2000 SP3新引入的。这使得用户区和系统区分为3G比1G的比例。只有用户使用NT企业版,应用程序也支持3GB选项时,此选项才生效。
  /BASEVIDEO:使用标准VGA方式启动。这种方式主要用于显示驱动程序失效时。
  /BAUDRATE:指出用于调度的波特率,如果用户不设置,则使用默认的9600,而对于线缆Modem则使用19200。
  /BOOTLOG:将系统启动日志写入 %SystemRoot%/NTBTLOG.TXT 。
  /BURNMEMORY=:使NT在已知的内存上少使用指定的数量,如果/burnmemory=64,则有64M内存NT不使用。
  /CRASHDEBUG:调度器在NT启动时启动,只有在内核错误时才有用,如果系统经常会无故出错,这个选项就很有用了。
  /DEBUG:在启动NT时调入调度器,它可以在任何时间激活,在错误可以再次出现时使用它比较合适。
  /DEBUGPORT= comx :指定用于调度的端口,其它X就指端口号。
  /FASTDETECT:系统启动时,不检查串行口和并行口。
  /HAL=<hal>:允许用户不使用默认的HAL。
  /INTAFFINITY:设置多处理器HAL(HALMPS.DLL),使编号最大的处理器接收中断请求。如果不设置此选项,Win2000会使所有处理器接收中断请求。
  /KERNEL=<kernel>:与上面的功能相同,不过是针对SMP中的内核而言的。
  /MAXMEM:n:指定NT可以使用的最大内存数,如果一个内存片损坏,这个开关就十分有用了。
  /NODEBUG:不使用调试信息。
  /NOGUIBOOT:此选项会使操作系统不加载VGA驱动程序,从而屏蔽系统的启动画面
  /NOSERIALMICE=[COMx | COMx,y,z…]:在特定的COM中上禁止对串行鼠标的检测。如果用户有一个非鼠标设备接在COM口上,这个选项会十分有用。如果此开关未加参数,系统会禁止所有COM口。
  /NUMPROC=n:只允许前N个系统处理器工作。
  /ONECPU:在多处理器中只使用一个处理器。
  /PCILOCK:不让NT为PCI设置分配IO/IRQ资源,而启用BIOS设置。
  /SAFEBOOT:安全模式启动,只启动HKLM/System/CurrentControlSet Control/SafeBoot中的驱动程序和服务,其后跟三个参数MINIMAL,NETWORK或DSREPAIR之一。MINIMAL和NETWORK在允许网络下启动系统。而DSREPAIR要求系统从备份设备中调入活动目录的设置。还有一个选项是"(AlterNATESHELL)",它让系统调入由HKLM/System/CurrentControlSetSafeBoot/AlternateShell指定的SHELL程序,而不使用默认的Explorer。
  /SOS:在调入驱动程序名时显示它的名字,在因驱动问题而无法启动时使用比较好。
  /WIN95:在装有三个系统DOS、Win9x和Windows NT的系统上,让NTLDR直接调用Win9x。启动文件BOOTSECT.W40。
  /WIN95DOS:在装有三个系统DOS、Win9x和Windows NT的系统上,让NTLDR直接调用DOS启动文件BOOTSECT.DOS
  /YEAR=:使用指定的年份,如果设置为/YEAR=2005,那现在的时间就是2005年,此选项仅对NT4+SP4和Win2000生效。

----------------------------------------------

例1:windows2000安装在D盘下,D盘为扩展分区的一个逻辑驱动器,系统可以正常启动。后来,又添加了一个分区。重启时发现系统无法引导了,是何原因,如何解决?
分析:系统给NT分区编号时,主分区的编号永远排在扩展分区前。一个磁盘上最多只能有一个扩展分区,则新添加的分区为主分区,而主分区的编号排在扩展分区前,所以D盘的实际ARC路径的partition值增加了1,而Boot.ini文件的内容没变,这样再利用原来的ARC路径就找不到D盘的系统目录了。解决的方法就是修改Boot.ini文件。

例2:机时显示“Boot.ini非法,正从C:WINDOWS启动”,然后就进入了启动状态,并且也能照样工作,请问这是怎么一回事,能否在不重装系统的情况下使系统恢复到正常启动状态?
分析:出现这种情况是因为C盘下面的“Boot.ini”文件被破坏了。但是由于你的机器中只有一个操作系统,当然它就是默认的操作系统,即使“Boot.ini”文件被破坏了,也将自动地引导该系统进行装载。解决的方法就是自行修改Boot.ini文件,呵呵。
其实这种情况下,系统已经默认为我们创建了一个正确的Boot.ini文件的,位于%SystemRoot%下,你直接复制到C盘,覆盖就可以了

例3:看懂一个双系统的Boot.ini文件,内容如下:
[bootloader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(1)/WINNT
[operatingsystems]
multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Professional"/fastdetect
multi(0)disk(0)rdisk(0)partition(2)/WINDOWS="Microsoft Windows XP Professional"/fastdetect /NOGUIBOOT

分析:此计算机安装了双系统,C盘为Windows 2000,D盘为Windows XP,默认操作系统为2000,显示操作系统列表的时间为3秒种,且如果启动

XP系统的话,不会显示启动画面。

--------
补充:
/noexecute参数

这一参数的取值可以是AlwaysOn、AlwaysOff、OptIn 、OptOut中的任一个。当你启用DEP(系统数据执行保护)的时候,/noexecute=optin;关闭DEP,/noexecute=optout
/noexecute=AlwaysOn时,便将整个系统置于 DEP 保护范围以内。在这种状态下,很多程序都不能运行,甚至包括微软Office下的组件和IE等,而且报错的提示还不一样。将这一功能用于某些特殊的场合倒是不错的选择,比如与网络连接无关的局域网服务器等。
/noexecute=AlwaysOff时,相当于关闭了DEP和EVP功能,凡是被其阻止的程序都能正常运行。我们可在这种状态下暂时运行某一程序,但一定要注意网络安全,工作完成后马上恢复。
原创粉丝点击