1、双系统安装 BCD 修改我的电脑装了双系统:Win2003 SP2(C 盘)和 Win2008 SP2(D 盘) ,最近 2003 一启动就蓝屏 unknown hard error,安全模式也进不去,恢复注册表等方法试过也不行,但 2008正常,覆盖安装 2003 也不解决,看来只有格盘重装了。重装 2003 和应用软件后,系统恢复正常运行。下一步就应该是恢复双启动菜单了。但我手头没有其他软件,只有系统安装盘,只好研究令我头大的那个 bcdedit。微软的说明文字让我是一头雾水,上网查找了一些资料终于清楚了怎么用。1.用 2008 的光盘启动到修复计算机下的命令提示符,在命令提示符下运行X:
2、bootbootsect.exe /nt60 sys( X 是光驱盘符)把 2008 的启动扇区写入 C 盘。2.运行 bootrec.exe /rebuildbcd 重建启动菜单。bootrec.exe 的用法类似于 XP 的故障恢复控制台,常用参数如下:/fixmbr 修复主引导记录/fixboot 修复启动扇区/scanos 扫描并添加已有的系统,注意扫描不到 XP/rebuildbcd 重建整个 BCD(启动配置数据) ,这次由于格了 C 盘,所以必须重建3.把 2008 系统目录下的 bootpcat 文件夹(WindowsBootpcat )下所有文件复制到c:boot 目录,命令
3、:xcopy D:Windowsbootpcat*.* c:boot /e(/e 表示复制子目录)4.把Windowsbootfonts 下所有文件复制到 c:bootfonts 目录:xcopy D:Windowsbootfonts*.* c:bootfonts /e。注意系统会询问目标是文件还是目录,别选错了!5.把 boot 目录下的 bootmgr 移动到 C 盘根目录下,命令:move c:bootbootmgr c:6.把 boot 目录和 bootmgr 文件添加隐藏、系统等属性,防止误操作。attrib +r +h +s +a c:boot 和 c:bootmgr7.从硬盘启动
4、,现在 2008 已经能正常使用,但是 2003 没有启动项,要手工添加,这里就要用到 bcdedit。以管理员身份运行 CMD,键入以下命令:bcdedit /create ntldr /d “Windows 2003“ (创建一个基于 NTLDR 的启动项,菜单里显示为“Windows 2003” )bcdedit /set ntldr device partition=C:bcdedit /set ntldr path ntldrbcdedit /displayorder ntldr /addfirst(把刚才创建的这个条目显示在启动菜单的第一位)bcdedit /toolsdispla
5、yorder memdiag /addfirst (在启动菜单里添加内存诊断工具)重启后,双启动菜单恢复正常!bcdedit 说明:在 Vista/2008 下,我们通过 msconfig 的“启动”选项卡可调整启动时的参数,也可通过系统属性-高级-启动和故障恢复对引导菜单进行调整。但这些项目和 XP 是类似的。有些功能在 XP 下非得修改 boot.ini 才能完成,比如添加一个启动项、修改启动菜单里的文字等,这些在 VISTA 下就只有用 bcdedit 了。这是一个命令行工具,必须以管理员身份运行。只要有点英语基础的人,看到命令都能猜出是什么含义,可是微软的帮助就是那么让人费解。其实对我
6、们有用的参数也就那么几个。一、备份和恢复启动配置文件为减少像我这样的麻烦,大家在平时可以把启动配置数据导出来,恢复就很简单了。你也可以自己建一个配置文件,然后把启动项加入其中,以后就可以去别的电脑上用了。例如:bcdedit /createstore “C:1.bcd“ 创建一个名为 C:1.bcd 的启动配置文件bcdedit /export “C:2.dat“ 把启动配置导出到 C:2.datbcdedit /import “C:3.abc“ 从 C:3.abc 导入启动配置二、标识符每一个 bcdedit 中的启动项都有一个唯一的标识符,格式类似于 Windows 的 CLSID,如 7
7、91d518d-3526-11de-8dab-b4cd0d61d150。但有几个特殊的标识符是我们需要记住的。default 默认启动项ntldr 基于 NTLDR 启动的系统,如 NT4.0、XP、2003current 当前的 Vista 启动项bootmgr Windows 启动管理器,这个一般不用管,会自动生成memdiag Windows 内存诊断直接运行 bcdedit.exe 就可以列出所有的启动项了,大家可以把标识符记一下。以下的命令如果要修改自己创建的启动配置文件而不是引导菜单,只要用/store 指定文件名即可。如:bcdedit /store “C:1.bcd“ /cre
8、ate ntldr /d “XP“三、创建和修改启动项目创建一个 XP 的启动项:bcdedit /create ntldr /d “XP“ 创建一个 Vista 的启动项:bcdedit /create /d “Vista“ /application osloader复制启动项:bcdedit /copy 要复制的标识符 /d 描述/d 指定启动菜单里的文字,可以自己起,不要忘了引号。/application 指定启动项的“应用程序类型” ,创建非 XP 类型的启动项时才需要。常用的有两种:osloader(操作系统加载器)和 bootsector(启动扇区) 。一般来说 VISTA 都是从
9、某个文件开始启动的,应该指定为“操作系统加载器”类型,如果是要从某个文件里读取启动扇区(如各种版本的 LINUX 启动文件、XP 引导 WinMe 的 bootsect.dos 文件等) ,就应该指定为“启动扇区”类型了。第二条和第三条命令运行后系统会给出一个新的标识符,请记下,修改时要用到。删除启动项:bcdedit /delete 标识符。但要注意,删除 XP 的启动项时,应加上/f 参数:bcdedit /delete ntldr /f设置启动菜单显示时间:bcdedit /timeout 数值,单位为秒。设置启动项显示顺序:bcdedit /displayorder 标识符。如:先显示
10、 XP 再显示 VISTA:bcdedit /displayorder ntldr current另外,用/addfirst 和/addlast 可以把启动项加入菜单第一位和最后一位,如 bcdedit /displayorder ntldr /addlast用/toolsdisplayorder 可以设定启动菜单里工具的显示顺序。设置默认启动项:bcdedit /default 标识符。如:bcdedit /default current 把当前的VISTA 系统设成默认启动。四、列出启动项我们可以用/enum 列出启动项,格式为 bcdedit /enum 应用程序类型 /v。其中“应用程
11、序类型”我们只需要知道常见的两种:active 和 all。active 指的是启动菜单上有的项目,all 则是所有项目。/v 是一个可选参数,使用它后,在列表的 “Windows Boot Manager”部分的默认系统和显示顺序中,将以完整标识符(就是一长串的那种)代替显示原有的default、ntldr等特殊标识符。一般不需要使用。我们刚才提到的直接运行 bcdedit 等同于运行 bcdedit /enum active。那么这个有什么用呢?举个例子,假设你装了几个 VISTA 引导类型的系统(比如2008 和 7、VISTA HB 和 U 等) ,后来重装了其中一个或几个,那你有可能
12、会发现启动菜单上并没有把你的这些 VISTA 全显示出来,你还得通过 bcdedit 手动添加缺少的系统。而通过上面的介绍大家可以看到,创建和修改新的 VISTA 启动项的参数时要用到系统生成的一长串标识符,而不是current这么简单。万一在修改参数的时候你忘了标识符怎么办呢?由于我们一般都习惯到最后才设置引导菜单上的显示顺序,你直接用 bcdedit 列启动项是看不出来的。这时用 bcdedit /enum all 就可以看到引导菜单上没有的启动项了。五、设置启动项的参数在启动项列表中,大家可以看到每一项的下面都有很多参数,这些命令就可以设置参数。基本格式如下:设置参数:bcdedit /
13、set 标识符 参数名 参数值删除参数:bcdedit /deletevalue 标识符 参数名如果不指定标识符,则默认为当前系统,即current。我们需要掌握的几个参数如下:device:启动设备,如 bcdedit /set ntldr device partition=C:设置 XP 启动分区为 C 盘。对于bootmgr 来说也是 C 盘,对于 VISTA 来说只要把 C 换成 VISTA 所在分区即可。osdevice:系统启动设备,只在 VISTA 启动项里有效,一般设成和 device 一样。path:启动文件路径,XP 是ntldr,Vista 是Windowssystem3
14、2winload.exedescription:启动菜单里显示的文字。nx:DEP 设置,类似于 XP,可设为 OptIn、OptOut。这个,大家也可以列出启动项看一下。在菜单里选择了要启动的系统后,bootmgr 会从 device 指定的启动设备去寻找 path 中的启动文件,从而启动对应的操作系统。清楚了这一点,我们配置启动项就不困难了。下面再举一个例子:Vista 和 Win ME 双启动。大家知道 Win ME 是微软推出的 9X 内核终结版,很多人说它是垃圾,其实 Win ME不管从哪方面说都比 98 好(用过才知道) 。它可以说是 9X 的精品,是当时最好的家用娱乐操作系统,既
15、保留了 98 的良好兼容性又有不错的娱乐性能和软硬件支持。我对 WinMe感情还是很深的,它陪伴我走过了 8 年。家里电脑还在用着它。不过,现在 WinME 已经过时了,我举例的目的只是告诉大家启动扇区文件的引导方法。原理:装过 WinMe 和 XP 双系统的朋友都知道,C 盘根目录下有一个 bootsect.dos 文件,这就是 WinMe 的引导扇区。boot.ini 文件里有一句 C:=*,其实完整的语句是:C:bootsect.dos=*。当在启动菜单上选择 WinMe 时,系统就会从 bootsect.dos 读取引导扇区从而启动 WinMe。再后来,这种方法就被广泛用于一些 XP
16、下的 DOS 工具箱软件中。实际上,根据这个原理,我们完全可以用 Vista 的引导程序启动 WinMe。但由于在WinMe 下无法运行 Vista 的安装程序,所以我们得先把 WinMe 的引导扇区提取出来。方法是:先安装好 WinMe,然后在 WinMe 下打开 DOS 窗口,运行 DEBUG,再依次输入以下命令:-L 100 2 0 1-N C:bootsect.dos-R CX200-W-Q说明:第一行把 C 盘的引导扇区读到内存里,第二行指定保存的文件名,第三、四行指定要写入 200H 个字节(即 512D)的数据,第五行把引导扇区写入文件,第六行退出。接着大家可以给它加上相应的属性
17、,防止误操作破坏文件。然后用 Vista 光盘启动,把 Vista 装在另一个分区里,装好后你会发现 WinMe 无法启动了。下一步我们就要修改引导菜单。创建一个 WinMe 的引导项并加入菜单中。上面我们说过提取出来的是 WinMe 的引导扇区,所以应该创建为引导扇区类型:bcdedit /create /d “Windows ME“ /application bootsector 并记下系统给出的标识符(下面以 ID 代替)bcdedit /displayorder ID /addlast给启动项设置启动文件:bcdedit /set ID device partition=C:bcdedit /set ID path bootsect.dos请注意这里的路径应该以实际情况为准,启动分区(即引导扇区文件存放的分区)应该以 Vista 下的盘符为准(Vista 从光盘启动安装时会强行把所选分区改为 C 盘,所以盘符会不一样)我试过,引导成功