用NTLDR解决双系统启动故障
董师傅茶坊
关键词:系统——>故障——>Vista无法启动
对于Windows XP(以下简称XP)和Windows Vista(以下简称Vista)双系统用户来说,由于Vista采用全新的Bootmgr方式来引导系统,但Bootmgr并不稳定,平时的一些操作经常会导致Bootmgr引导出故障,如在Vista中安装虚拟光驱后就会出现“Bootmgr is missing”故障导致Vista无法启动。而NTLDR是XP的启动加载文件,它启动更为稳定,而且可以通过Boot.ini配置来启动Vista,这样即使Bootmgr丢失也不影响XP的启动。根据不同的需求,董师傅为两类用户提供了两种不同的解决方案。为了叙述的方便,本文的双系统是指XP+Vista,它们分别安装在C盘和D盘。
小知识:为什么Bootmgr容易出现引导故障?
Vitsa(或者XP+Vista双系统)启动流程是首先启动Bootmgr,接着由它来读取c:\boot\bcd引导信息并列出启动菜单,根据用户选择分别启动不同的系统。如果选择“Microsoft Windows Vista”,接下来就交由Vitsa系统目录的Winload.exe启动;选择“早期版本的Windows”则交由XP系统分区下的NTLDR启动。因此,对两个系统的引导都有影响的公共部分就是Bootmgr和BCD,前者是引导文件,该文件丢失直接导致双系统都无法启动。后者是启动配置文件,如果配置出错也会导致系统启动出错。比如,使用PQ调整引导分区大小后,也会导致双系统都无法启动。因为BCD记录的是分区引导信息,分区调整后会导致原来配置信息和新分区不符而导致故障。本文介绍通过NTLDR启动,可以有效避开Bootmgr和BCD信息对XP启动的影响。
一、已经是双系统用户
对于已经安装XP和Vista双系统的用户,我们可以借助Boot.ini启动Grub,然后再通过Grub引导Bootmgr,实现间接引导Vista。
步骤1:到网上下载所需的软件,把其中的Grub全部文件解压到c:\,由于Grub已经包含Boot目录(双系统里原来也有该目录),系统出现提示时选择全部替换。
步骤2:打开资源管理器,取消C:\boot.ini只读属性并打开,在文本最后添加“c:\grldr=“Microsoft Windows Vista””语句(不含外双引号,下同),在XP原来多重启动上添加Grub启动方式。
步骤3:启动记事本程序,新建一个menu.lst文件,放置在C:\Boot\GRUB\替换原来的文件,其中代码如下(#为注释,无须输入):
#启动等待时间设置为1秒
timeout 1
#默认启动是第一个系统Vista
default 0
title vista
#启动扩展分区第一个逻辑分区(即D:)的系统
root (hd0,4)
#把引导所有权转移给主分区下的Bootmgr
chainloader (hd0,0)/Bootmgr
#增加启动到DOS,方便系统在无法启动时使用Ghost恢复系统
title DOS
root (hd0,0)
kernel (hd0,0)/boot/grub/memdisk.gz
initrd (hd0,0)/boot/grub/win99.zip
步骤4:运行下载到的EasyBCD,切换到“Add/Remove Entries”,选中“早期版本的Windows”,单击Delete将XP启动删除(因为XP已经直接通过NTLDR启动,无需再通过Bootmgr启动)。切换到“config boot”(配置启动),Default OS(默认启动)选择Windows Vista,启动等待时间设置为1秒,单击“save setting”保存设置(如图1)。

提示:在上述操作中,我们通过Brub启动Bootmgr,由于原来双系统配置文件中保存XP启动信息,这里借助EasyBCD把XP启动信息删除,并将Vista设置为默认启动,实现Bootmgr启动后就直接启动Vista。
步骤5:把下载到的bootsect.exe解压到C:\windows\system32,启动命令提示符输入“bootsect.exe /nt52 c:”,把系统引导恢复为原来XP启动。这样下次重启后就不会启动Bootmgr,而是直接启动NTLDR。
步骤6:OK,经过上述的改造后只要重启电脑,双系统的启动就和原来XP的单系统一样。我们只要在boot.ini加载多重启动下选择“Microsoft Windows Vista”即可启动Vista(图2)。如果要将系统默认启动改为Vista,进入XP后启动系统配置实用程序,切换到“boot.ini”标签,在启动项目中选中c:\grldr=“ Microsoft Windows Vista ”,单击“设置为默认”即可。

提示:由于这种方式还是借助Bootmgr加载BCD信息启动Vista,因此仍然会受制于Bootmgr启动故障限制。不过经过上述改造后,即使Bootmgr出现故障无法启动Vista,我们仍然可以进入XP,然后启动EasyBCD,切换到“Add/Remove Entries”,重新增加Vista启动项即可修复Vista启动故障。我们在Grub还预置了DOS启动(在Grub多重启动时选择DOS菜单),如果XP也出现故障,还可以进入DOS使用Ghost恢复系统。
二、准备安装Vista形成双系统的用户
上述方法虽然方便,但是由于双系统启动信息仍然保存在第一分区,对系统分区误操作或者病毒侵袭都容易使Vista的启动受影响。对于只有XP还没有安装Vista的用户,建议将Vista安装在第二主分区以便让系统启动更加独立。
步骤1:在XP使用PQ8.0划出一个主分区用于安装Vista。比如,原来C盘空间很大的用户,启动PQ后,选中C盘右击选择“调整分区容量”,在当前系统分区划出合适的容量如20GB空间。接着选中划出的空间右击选择“创建”,在弹出创建分区菜单,按提示创建为主分区(格式为NTFS)并格式化。
步骤2:右击桌面“我的电脑”,选择“管理”,依次展开“存贮→磁盘管理”,在右侧窗格选中上面步骤创建的主分区,右击选择“将磁盘分区标记为活动”。
步骤3:重启后插入Vista安装光盘安装Vista,安装位置选择新创建的主分区。安装完成后进入Vista。操作同XP,右击桌面“计算机”选择“管理”,打开磁盘管理组件,选中安装XP的分区并将它设置为活动分区,这样重启后就可以进入原来的XP。
步骤4:按前文介绍的方法,在boot.ini中添加Grub的启动,接着把Grub所有文件解压到C:\,更改C:\boot\grub\menu.lst启动代码:
timeout 1
default 0
title vista
#启动第二主分区上的vista
root (hd0,1)
chainloader (hd0,1)/Bootmgr
步骤5:这样我们以后在boot.ini多重启动菜单上选择Vista也可以启动Vista,不过和上例不同的是,本例中的Vista启动文件Bootmgr和bcd文件均保存在第二主分区,即使对安装XP分区进行调整也不会影响Vista的启动。而且XP、Vista是相对独立的,即使格式化C盘重装XP,进入XP后只要重新添加Grub启动即可恢复系统的双启动。而不像原来的Bootmgr启动,如果格式化C盘重装XP,不仅要复制Bootmgr和boot目录到C:\,而且必须重建BCD启动配置文件,操作非常麻烦。
本文中用到的所有工具可到
http://www.shudoo.com/bzsoft下载