我有一台专门运行vmware的host server,差不多所有的开发/调试都在此机器上进行。但上面存储的东西越来越多,原来的80G硬盘容不下了。正好用空闲下来的的200G的盘来替换原来的80G的。共两个分区:第一个分区是xp i386,第二个分区是server 2008 x64。移动数据很简单,不二的选择就是ghost。但ghost后的问题却是意料之外的。
ghost移动数据花了近两个小时。之后用新的硬盘来启动,结果bootmgr提示出错: winload.exe报0xc000000e。试了几种办法,包括用系统盘进行recovery/修复,但都不见效。
无奈之下重新挂上原来的硬盘,枚举所有的boot配置,然后与ghost后的配置进行比对,终于发现问题原由:设备盘符不对。枚举命令如下(可启动PE运行,也可以用VistaBootPro导出):
bcdedit /enum all
错误的配置:
Windows Boot Loader
identifier {default}
device partition=D:
path \Windows\system32\winload.exe
description Microsoft Windows Server 2008
locale en-US
inherit {bootloadersettings}
osdevice boot
systemroot \Windows
resumeobject {48c4f6e7-1e4e-11de-b96b-dfd52951c806}
nx OptOut
custom:250000f0 0
detecthal Yes
Resume from Hibernate
identifier {48c4f6e7-1e4e-11de-b96b-dfd52951c806}
device partition=F:
path \Windows\system32\winresume.exe
description Windows Resume Application
locale en-US
inherit {resumeloadersettings}
filedevice partition=F:
filepath \hiberfil.sys
debugoptionenabled No
Windows Legacy OS Loader
identifier {ntldr}
device partition=C:
path \ntldr
description Earlier Version of Windows
原来盘上的配置:
Windows Boot Loader
identifier {default}
device partition=D:
path \Windows\system32\winload.exe
description Microsoft Windows Server 2008
locale en-US
inherit {bootloadersettings}
osdevice partition=D:
systemroot \Windows
resumeobject {48c4f6e7-1e4e-11de-b96b-dfd52951c806}
nx OptOut
custom:250000f0 0
Resume from Hibernate
identifier {48c4f6e7-1e4e-11de-b96b-dfd52951c806}
device partition=D:
path \Windows\system32\winresume.exe
description Windows Resume Application
locale en-US
inherit {resumeloadersettings}
filedevice partition=D:
filepath \hiberfil.sys
debugoptionenabled No
Windows Legacy OS Loader
identifier {ntldr}
device partition=C:
path \ntldr
description Earlier Version of Windows
知道症结所在之后,修复的问题就好办了:
bcdedit /set {default} device "partition=D:"
bcdedit /set {default} osdevice "partition=D:"
bcdedit /set {48c4f6e7-1e4e-11de-b96b-dfd52951c806} device "partition=D:"
bcdedit /set {48c4f6e7-1e4e-11de-b96b-dfd52951c806} filedevice "partition=D:"
重启后问题解决!真不知道微软怎么想的,原来的boot.ini既明了又方便,非得再搞个bootmgr出来。并且bootmgr出的问题总是莫名其妙,搞得用户摸不着方向,真是出力不讨好!