创建多重引导系统

Author: Date: 2000年 第11期

  由于目前大容量硬盘的普及,很多用户,常由于重装系统或系统升级等多种原因,希望同时安装Win 98、Windows NT/2000(以下简称NT/2000)、Linux等。更有甚者,希望一个硬盘中同时安装并方便选择五六个操作系统,这可能吗?
  一个硬盘的分区表(MBR)最多只能容纳四个表项,这似乎限制了我们能使用的操作系统的分区数,但在我的电脑中却曾同时安装了一个Windows 2000,两个Windows 98,一个Windows 95和一个DOS共五种操作系统。那么如何设置多重引导呢?
  NT/2000引导时,由NTLDR程序负责将NT/2000装入内存,它还可以让你选择非NT/2000操作系统,这就是NT/2000的多重引导。引导装入程序和多重引导都由一个隐含的初始化文件BOOT.INI控制。
  在BOOT.INI文件中包含有控制计算机可用的操作系统设置,引导的缺省操作系统以及系统应当停顿多长时间,缺省系统等。一般该文件包含两段信息,其中[operation systems]段定义在系统中安装哪个操作系统。格式如下:
  operating system location=“string to display”option
  例如:C:\=″MS-DOS″
  表示引导C盘上的MS-DOS操作系统。其实它也指明了非NT/2000系统可加载C盘根目录下的“BOOTSECT.DOS”(即为原C盘引导记录)进行启动。一些文章介绍硬盘中同时安装Win 98和NT时,需将C盘设置为FAT16。许多先用C盘FAT32安装Win 98的用户,想升级为NT,为此大伤脑筋。这里有一个小技巧:用户若将Win 98的引导记录写入文件“BOOTSECT.DOS”放在NT/2000多重启动盘下即可选择Win 98。但C:\BOOTSECT.DOS文件只有一个,如何启动多个不同系统呢?
  其实在[operation systems]段下可加载的引导程序项可以有多个,若我们对不同系统的引导记录起了不同文件名,只要给出该文件的路径和文件名即可像其它选择项一样操作。例如:我的初始化文件BOOT.INI如下:
  [boot loader]
  timeout=30
  default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
  [operating systems]
  multi(0)disk(0)rdisk(0)partition(1)\WINNT=″Windows NT Workstation Version 4.00″
  multi(0)disk(0)rdisk(0)partition(1)\WINNT=″Windows NT Workstation Version 4.00 [VGA mode]″ /basevideo /sos
  C:\Boot1=″Windows 98(一)″
  C:\Boot2=″Window 98(二)″
  C:\Boot3=″Window 95″
  C:\Boot4=″具有硬盘保护的MS-DOS 6.22″
  这里有一点须注意:Win98/95、DOS系统的引导记录一般都默认系统启动文件在C盘,且它们的文件名也大致相同。这样会造成启动冲突。一种巧妙的方法是:对NT/2000,Win98,Win95/DOS引导盘分别使用NTFS,FAT32,FAT16三种分配表,并使FAT32在分区表项中先于FAT16(并非物理柱面顺序,只要分区表中排列在先)。活动分区设置为NT。这是由于DOS、Win95不能读取NTFS和FAT32,因此他们系统所在分区即成了逻辑C盘。而在启动Win98时,由于它不能管理NTFS,因此第一个FAT32分区即成了“C”盘。若要启动更多的系统怎么办呢?
  如果一个硬盘分区表(MBR)中的各个分区项并未用尽该硬盘的所有容量,那么我们还可以创建分区。创建多个操作系统分区方法可参考本文后的介绍。但分区信息须另外保存(如存于0柱0头2扇区)。需要时将其重写入硬盘分区表(0柱0头1扇)。方法如下(对硬盘组织结构不了解的用户请一定慎用!):
  运行DEBUG
  -A100
  MOV AX,0202
  MOV BX,200
  MOV CX,1
  MOV DX,80
  INT 13
  MOV AX,0301
  MOV CX,2
  INT 13
  MOV AX,0301
  MOV BX,400
  MOV CX,1
  INT 13
  INT 20
  -RCX
  23
  -N CHANGE.COM
  -W
  这样就可以通过在DOS下执行CHANGE.COM进行转换了。更好的方法是用NT的多重引导,结合上面方法编写引导程序。
  不同系统的引导记录一般放在不同分区的第一扇区,它通常不到一个扇区大小(512字节)。这种限制使得以往希望在系统启动前执行大量初始化工作(如多重启动,或加载硬盘保护软件)的程序员大伤脑筋,更不用说用汉字增强显示效果了。但若用NT的多重启动,用户可不再受512字节的限制。这种机制对硬盘保护特别有用,由于NT能很好保护程序员编写的系统引导程序,这样整个硬盘的防护很难攻破。
  附:多系统分区创建方法及相关问题
  1) 用Fdisk等软件创建主分区和扩展分区,安装在主分区中的操作系统可引导系统启动。
  2) 若要创建多个主分区,可用diskedit(Norton系列软件右)或DE等软件。方法是:定位到MBR,即物理扇区0 柱面(Cylinder) 0磁 头(side) 1扇区( sector),System栏(偏移1C2、1D2、1E2、1F2处)对应了操作系统类型。BIGDOS表示主分区(06),EXTEND表示扩展分区(05),HPFS对应NTFS(07),FAT32主分区对应(0B)。这样最多可创建四个分区。
  3) 若觉得以上修改时要计算柱面数、扇区数较麻烦,可将分区类型先改为XENIX(02)等,存盘退出后运行Fdisk。然后再重新运行diskedit,将其修改回原分区类型。
  4) 创建好一个MBR后,可将其复制到0柱面0磁头2扇区,修改2扇区中分区即可创建第5、6、7、8分区。若要求更多分区,可再使用0柱面0磁头3扇区。
  5) 切换不同MBR中的分区,可用diskedit等软件将0扇区和1扇区或2扇区交换,也可使用上文介绍程序。
  6) 激活不同分区时,逻辑盘的定义可能有所不同,一般激活分区为C盘,扩展分区中的逻辑盘为D、E……等。然后是MBR中排在前的主分区。为保持启动不同系统有相对固定的共享盘,可将不同系统要共享的文件保存在扩展分区中。