ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 巧用NT Loader实现多操作系统启动 (转)

巧用NT Loader实现多操作系统启动 (转)

原创 Linux操作系统 作者:worldblog 时间:2007-12-03 10:24:45 0 删除 编辑
巧用NT Loader实现多操作系统启动 (转)[@more@]

  巧用NT Loader实现多操作系统启动 (装载)
工作原理
  我们知道,磁盘的引导扇区的内容决定了系统启动的方式,但是在多系统引导的情况下
,引导扇区的内容又取决于各系统安装的顺序。如果首先安装的是DOS,那么引导扇区就是D
OS引导扇区,它运行时将载入IO.SYS,完成正常的DOS启动工作。如果在DOS上又安装了Wind
ows NT,那么原先的DOS引导扇区将被NT的引导扇区覆盖,但是为了实现与DOS的双引导,NT
并未将其内容删除,而是保存在一个名为BOOTSECT.DOS的文件中。NT引导扇区运行时不再装
入IO.SYS,而是装入NTLDR,后者将显示一个启动菜单,提示您是启动NT还是启动DOS。如果
选择了启动DOS,那么NTLDR将运行文件BOOTSECT.DOS,也就是保存的DOS引导扇区,执行正常
的DOS启动工作。如果此后又安装了windows 95,那么它在保持NT的启动扇区不变的情况下,
用自己的引导扇区重写文件BOOTSECT.DOS,同时安装自己的IO.SYS和MSDOS.SYS,而把DOS的
IO.SYS和MSDOS.SYS更名为IO.DOS和MSDOS.DOS。此时启动菜单中的相应项也由“MS-DOS”变
成了“microsoft Windows”,如果选择它,NTLDR同样执行BOOTSECT.DOS,但是此时这个文
件的内容已不是DOS的引导扇区,而是Win 95的引导扇区,它将直接启动Win 95而不是DOS。

  从上面可以看出,NT与DOS以及Win 95的双引导实际上是由NTLDR根据用户的不同选择执
行不同的引导扇区文件来完成的。因此,我们只要找到所有要启动操作系统的引导扇区文件
即可完成多操作系统的启动。不过,还有一个小问题需要考虑,就是IO.SYS和MSDOS.SYS的更
名问题。我们知道,MS-DOS和Windows 95都使用文件IO.SYS和MSDOS.SYS,为了防止冲突,
启动DOS时,Win 95的IO.SYS和MSDOS.SYS将分别更名为WINBOOT.SYS和MSDOS.W40,启动Win
95时,DOS的IO.SYS和MSDOS.SYS将更名为IO.DOS和MSDOS.DOS。在DOS和Win 95双引导系统中
,这些工作都是由Win 95的IO.SYS来完成的。因此,在用NTLDR来实现多操作系统启动时必须
提供一种方法来完成这种更名工作,否则将不能正常启动DOS或者Win 95。幸好,NTLDR实现
时考虑了这个问题,专门设置了两个开关参数:/Win 95和/Win 95DOS。


  具体步骤


  首先,必须做好安装前的准备工作,包括:备份硬盘上的数据(非常重要);制作NT安
装磁盘(插入NT的CD-ROM,在i386目录下执行WINNT32/OX);如果需要安装Linux,那么制
作Linux的Boot盘和root盘。

  其次,也是最关键的一步,就是获得不同操作系统的引导扇区文件。NT就不必说了,既
然是围绕NT来实现多系统引导,系统的引导扇区就是NT的引导扇区。下面笔者主要讨论一下
如何获得DOS、Win 95和Linux的引导扇区文件。

  1. DOS

  首先安装DOS,然后安装NT,此时C盘根目录下的BOOTSECT.DOS文件就是DOS的引导扇区文
件。

  2. Win 95

  在上一步的基础上安装Win 95。安装之前首先备份刚获得的DOS引导扇区文件,安装成功
之后,C盘根目录下的BOOTSECT.DOS文件就是Win 95的引导扇区文件,将其保存为BOOTSECT.
W40,并将备份的DOS引导扇区文件重命名为BOOTSECT.DOS。

  3. Linux

  安装Linux,然后在Linux系统下运行以下命令:

  dd if=/dev/hda? of=/mnt/c-drive/bootsect.lnxbs=512 count=1

  其中/dev/hda?是Linux的引导分区,/mnt/c-drive是C盘在Linux中的mount点。然后更
改/etc/lilo.conf文件,增加一行:

  boot=/mnt/c-drive/bootsect.lnx

  让LILO将Linux的引导扇区写到文件bootsect.lnx中。

  由于Linux安装时重写了C盘的引导扇区,NT将不能正常启动,所以必须对其进行修复。
具体步骤为:首先用DOS启动盘引导系统,然后运行下列命令:

  fdisk /mbr删除主引导记录,最后再用NT安装盘修复NT以恢复NT的主引导扇区(关于如
何修复NT,有兴趣的读者可以参见有关文章)。

  至此,我们获得了所有要启动操作系统的引导扇区文件,而且正确修复了NT的引导扇区
,下一步就是修改NT的BOOT.INI文件,最终实现多操作系统引导了。

  修改之前的BOOT.INI大致如下所示:

  [boot loader]

  timeout=30

  default=multi(0)disk(0)rdisk(1)partition(1)WINNT

  [operating systems]

  multi(0)disk(0)rdisk(1)partition(1)WINNT=″windows NT

  Workstation Version 4.00″

  multi(0)disk(0)rdisk(1)partition(1)WINNT=″Windows NT

  Workstation Version 4.00 [VGA mode]″ /basevideo /sos

  C:=″Microsoft Windows″

  修改之后它将变为:

  (相同部分略)

  C:bootsect.w40=″Windows 95″ /WIN95

  C:bootsetc.dos=″MS-DOS″ /WIN95DOS

  C:bootsect.lnx=″Linux″

  其中/WIN95和/WIN95DOS的作用我们前面已经进行了讨论。


  最终结果


  在完成了所有操作之后重启系统,NT Loader将显示以下启动菜单供您选择:

″Windows NT Workstation Version 4.00″

″Windows NT Workstation Version 4.00 [VGA mode]″

  ″Windows 95″

   ″MS-DOS″

   ″Linux″

  根据选择的不同,系统启动不同的操作系统,从而实现了多操作系统的启动。
  总 结
  以上方法是笔者实践经验的总结,已在多台PC机上实现,但是鉴于实际中的情况复杂多
变、各个操作系统版本众多,因此众多玩家在试验时还是要小心为妙,多作备份。
(塞外风情站 bbs.imu.edu.cn)


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-987563/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    6241
  • 访问量
    2449941