问题一:原系统xp,在C盘。ghost安装win7到D盘。显然,D盘的win7没有引导,需要手动修复。
修复方法【内为注释】:
1. 进入C盘xp,运行cmd进入xp命令行模式。输入
d:
cd d:/windows/system32
bcdboot d:/windows /l zh-cn /s c:
运行上述命令后,在C盘根目录生成了/boot文件夹和bootmgr文件。
【D盘下已经具备了一个完整的win7,唯一欠缺的是系统盘内的引导,因此首先要在C盘重建win7的引导环境。通过Windows7内置的bcdboot命令可以轻易做到这一点。这个命令不能修改引导记录,我用VHD验证过】
2. 去win7安装光盘,找到bootsect.exe文件(找不到就网上下载一个,注意要win7的),复制到C:/boot/文件夹。然后进入命令行:
cd c:/boot
bootsect /nt60 c:
bootsect /nt60 c: /mbr
这个命令执行完毕后,在完成所有后续步骤之前,一定不能重启XP,否则XP将无法启动!
【bootsect —— 用来写win7需要的引导信息到引导记录,第一个bootsect命令把引导信息写入C盘分区引导记录,第二个bootsect命令把引导信息写入硬盘主引导记录。由于主引导记录和分区引导记录都被修改为支持bootmgr,因此XP的引导器ntldr将不能被引导,后续步骤中我们会修复它】
3. 继续在xp的命令行模式,输入
d:
cd d:/Windows/system32
bcdedit /create {ntldr} /d "Windows XP"
bcdedit /set {ntldr} device boot
bcdedit /set {ntldr} path /ntldr
bcdedit /displayorder {ntldr} /addlast
bcdedit /timeout 10
【这一步,我们用bcdedit命令来给XP在bcd中重建引导项。这样通过bootmgr加载bcd中XP的引导项,进而把启动控制权交给XP的引导管理器ntldr,实现XP的启动】
至此,双系统引导修复完成。
上述命令中,每个命令都必须成功。有可能,bcdedit命令会返回失败信息。此时步骤3中的命令改为:
bcdedit /store c:/boot/bcd /create {ntldr} /d "Windows XP"
bcdedit /store c:/boot/bcd /set {ntldr} device boot
bcdedit /store c:/boot/bcd /set {ntldr} path /ntldr
bcdedit /store c:/boot/bcd /displayorder {ntldr} /addlast
bcdedit /store c:/boot/bcd /timeout 10
问题二:如果C盘已装WIN7,如何在D盘装XP并修复引导?
修复方法:
1. 如果XP是正常安装到D盘:
安装成功后,win7引导被XP的引导覆盖。因此需要在XP下手动修复win7的引导。方法同问题一。命令如下(不再注释,请自行理解)
bootsect /nt60 c:
bootsect /nt60 c: /mbr
cd C:/Windows/system32
bcdedit /create {ntldr} /d "Windows XP"
bcdedit /set {ntldr} device boot
bcdedit /set {ntldr} path /ntldr
bcdedit /displayorder {ntldr} /addlast
bcdedit /timeout 10
2. 如果XP是通过ghost安装到D盘:
这种情况下D盘的XP缺乏引导,需要在win7下手动恢复XP的引导。方法如下:
2.1 把D盘根目录下的ntldr,ntdetect.com,boot.ini三个文件复制到C盘根目录
2.2 修改boot.ini的内容,为 D盘的xp设置正确的引导路径。(原路径是C盘)
2.3 以管理员身份运行cmd,输入如下命令
bcdedit /create {ntldr} /d "Windows XP"
bcdedit /set {ntldr} device boot
bcdedit /set {ntldr} path /ntldr
bcdedit /displayorder {ntldr} /addlast
bcdedit /timeout 10
bcdedit /create {ntldr} -d "Windows XP"
bcdedit /set {ntldr} device partition=D:
bcdedit /set {ntldr} path /ntldr
bcdedit /displayorder {ntldr} /addlast