不少人对windows2000的boot.ini文件很感兴趣,因为它关系到我们的系统引导。尽管boot.ini文件内容不多,但是包含的知识点却不少,笔者在此做一个详细的分析。这里具个例子,以我自己的PC为例。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\WINNT="Microsoft Windows 2000 Sever" /fastdetect
C:\="Microsoft Windows" 
C:\bootsect.bin="linux"

这里,大家可以看到boot.ini文件分为两部分,[boot loader]和[operating systems]。中括号内的东西没什么可说的,就是这样写。
timeout=??  这个等号后面的数字表示在出现多操作系统引导时。选择菜单滞留的时间。默认为30秒。
这个只有三个取值范围,有、无、无效。若修改为1-999之间的一个整数,则多操作系统选择菜单会滞留相应的时间。若修改为0。则不会出现多操作系统选择菜单。默认进入第一个操作系统(即[operating systems]下面的第一个操作系统)。如果修改为一个负整数或一个大于等于1000的正整数。系统认为此值无效,多操作系统选择菜单滞留时间将为无穷。

default=***  这个等号后面的为默认进入的操作系统的路径,格式为[operating systems]下面等号之前的部分。大概有两种情况:win9x系列(95、98、ME)和NT系列(NT4.0、WIN2000、WINXP)。前一种,由于Active区的问题,基本上为C:\   后一种,遵从ARC命名规则(详见下文)。

接下来就进入了[operating systems]部分。
这部分的每一行都代表引导一个操作系统,每一行可分四部分:等号之前、等号、等号之后、/???
等号没什么好说的。等号之后表示多操作系统选择菜单的display。随便你在英文双引号里添什么都可以。如果要填中文,比如"我的最爱!"。如果是中文的操作系统是没问题的,如果是英文的操作系统,你必须拷一个bootfont.bin文件到C盘根目录下。否则你填中文会显示乱码。有的时候,后面还会出现 /??? ,具体的有/fastdetect,表示快速引导。/console 表示虚拟控制台。等号前面的就遵从ARC命名规则了,ARC命名规则是boot.ini文件的核心。

ARC命名规则:
  Multi(x)disk(y)rdisk(z)patition(a)
或Scsi(x)disk(y)rdisk(z)patition(a)

1)首先,现在的磁盘分为IDE的和Scsi的两种。我们平时家用台式机使用的都是IDE的。
若使用IDE的磁盘控制器,也使用Scsi的磁盘控制器,且主板Scsi磁盘控制器设为Enable。则使用Multi(x)disk(y)rdisk(z)patition(a)的命名格式。另外,若只有IDE的磁盘控制器,也使用Multi(x)disk(y)rdisk(z)patition(a)的命名格式。若只有Scsi的磁盘控制器,则使用Scsi(x)disk(y)rdisk(z)patition(a)的命名格式。
这里,x的值为:操作系统的boot分区所在磁盘所在的磁盘控制器,在同一类磁盘控制器下的顺序号。x从零开始计数。也就是时说当你确定磁盘控制器的顺序号以后,减去1就是x的值了。(boot分区为操作系统安装的分区。)

2)若前面使用Multi(x),则disk(y)无意义,永远为零。
若前面使用Scsi(x),则disk(y)有意义。y值标识操作系统的boot分区所在磁盘所在的磁盘控制器下,磁盘的顺序号,y值从0开始计数。

3)若前面使用Scsi(x),则rdisk(z)无意义,永远为零。
若前面使用Multi(x),则rdisk(z)有意义。z值标识操作系统的boot分区所在磁盘所在的磁盘控制器下,磁盘的顺序号,z值从0开始计数。

4)patition(a)中a从1开始计数。a值标识操作系统的boot分区在其所在磁盘中的位置。具体的,首先一个磁盘最多分为4个基本的分区,基本的分区包括primary zone(基本区)和extend zone(扩展区)。extend zone可以分出若干逻辑区。这里必须区分“基本的分区”和“基本区”。
就以我们平时使用win98启动盘中的fdisk.exe工具的分区结果举例。由于功能所限,fdisk最多只能分出一个primary zone和一个extend zone。然后再在extend zone中分出若干逻辑区。这里逻辑区的数目为直到把英文大写字母数用完为止。这里primary zone为C盘,逻辑区依次为D-Z共23个。如果使用另外的工具分出多于一个primary zone,那么,一次逻辑区就要少分一个,因为大写字母数有限。扩展区最多只有一个。
言归正传,a值标识操作系统的boot分区在其所在磁盘中的位置。那么这个位置怎么确定呢?总的原则是:先数基本区,数完之后再数逻辑区。具个例子,你的一个硬盘分了四个基本的分区,第一个、第二个是基本区,标识为C区、D区。第三个基本的分区为扩展区,里面分了四个逻辑区,依次标识为E区、F区、G区、H区。第四个也是基本区,标识为I区。你的boot区若为I区,则a值为3;若为D区,则a值为2;若为F区,则a值为5;若为H区,则a值为7。

5)\??? 斜杠后面的表示你的操作系统的根目录在这个分区下的相对路径和文件夹名。multi(0)disk(0)rdisk(1)partition(1)\WINNT表示我的操作系统的根文件夹名为WINNT,在第二块IDE硬盘的第一个区下的WINNT文件夹。实际上,有的同志的硬盘只有一个分区。如果还想安装双系统,比如WIN2K和WINZP。那么如果他把两个操作系统都装在C盘根目录下,就会造成两个操作系统共用Documents and Settings和Program Files文件夹的情形,如果想删除一个操作系统,很不方便。这个时候你就可以在安装第二个操作系统之前在C盘根目录下建一个文件夹,例如叫NEWOS,然后再安装的时候就选择安装新的操作系统在NEWOS文件夹下,那么你这个新的WINXP的 \???就为\NEWOS\WINDOWS。