Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2343194
  • 博文数量: 2110
  • 博客积分: 18861
  • 博客等级: 上将
  • 技术积分: 24420
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-05 18:23
文章分类

全部博文(2110)

文章存档

2011年(139)

2010年(1971)

我的朋友

分类: WINDOWS

2010-01-23 00:33:42

  BCD(Boot Configuration Date)即系统引导配置数据,这是从Windows Vista开始才引入的。我们知道,在Windows Vista/Server 2008中BootManager组件负责系统的初始化和引导工作,而与之相匹配系统的引导数据就存储在BCD中。相信大家非常关心Windows 7下的BCD数据管理吧,下面笔者和大家一道就这方面进行一番探讨。

  1、BCD数据管理工具

  也许最常用也最熟悉的系统引导管理就是系统高级引导菜单了,在Windows 7下也不例外。当系统发生引导故障时,为了成功进入系统或者进行排错我们会选择在系统启动的过程中按下F8键进入高级引导选项菜单,并从这个菜单中选择一种高级启动模式进行引导尝试。在此可供我们选择的引导方式主要有安全模式、启用引导日志、最近一次正确配置、目录服务还原模式以及禁用驱动程序前面强制等。需要说明的是,索然这些高级模式会暂时性地修复操作系统的启动方式,以帮助故障的解决和诊断,但是这些模式并不会对引导配置或者BCD存储做出任何永久性的修改。所以,系统高级引导菜单并不是有效的BCD数据管理工具。和此前的Windows系统类似,在Windows 7中可用于修改引导配置和管理BCD存储的工具主要有“启动和故障恢复”控制台,系统配置使用工具(msconfig.exe),以及比较高级的BCD编辑器(bcdedit.exe)。本文就以这三个工具为例说说BCD数据的管理。(图1)

   2、用“启动和故障恢复”控制台实施系统引导配置

 

  在Windows 7的“启动和故障恢复”控制台中我们可以配置系统启动过程中的基本选项,可以使用这些选项设置默认的操作系统、可用操作系统选择菜单的显示时间,以及在需要的时恢复选项的显示时间。无论是否需要将计算机引导到不同的操作系统,都可以通过优化这些设置减少系统启动所需的时间,并加速系统的启动过程。

  依据下面的操作步骤可进入Windows 7的“启动和故障恢复”控制台:右键单击桌面上的“计算机”图标选择“属性”,在系统属性窗口中单击左窗格中任务下的“高级系统设置”链接。在系统属性对话框的“高级”选项卡下,单击“启动和故障恢复”选项下的“设置”按钮就会进入如图2所示的“启动和故障恢复”控制台。在控制台中,我们可以选择默认的启动的操作系统,在安装了多个操作系统的计算机上,单击“默认操作系统”下列列表即可选择希望默认启动的操作系统,如果只安装了一个系统则当前系统就是默认的启动的系统。选中“显示操作系统列表的时间”复选框,并在右侧的文本框中输入要使用的时间(以秒为单位),即可设置操作系统选择列表的显示时间。为了加速系统的启动速度,如果计算机中只有一个系统可以将其设置为“0”,这样就不会显示启动菜单直接引导默认系统。另外,在“启动和故障恢复”控制台中可设置系统发生故障时的后续操作。因为这部分内容与BCD的关系不大,而且已经有作者对此做了非常深入的解析(链接是),所以就此略过。(图2)

  3、用“系统配置工具”管理系统引导配置

 

  通过“系统配置工具(msconfig.exe)”,我们可以在Windows 7中调整计算机的启动方式。通常情况下,高级用户使用该工具进行系统故障的排错和诊断。例如,作为排错的一部分,可与配置计算机使用诊断启动模式,只加载最基本的驱动和服务。

  依次点击“开始”→“运行”输入msconfig.exe回车后可启动“系统配置工具”,该工具提供了很多选项,应该说是我们管理BCD最方便的工具。在“常规”选项卡下可用于配置系统的启动方式,以及是否需要将系统启动到排错和诊断模式下。通过使用这些选项,可以选择进行常规启动、诊断启动或选择性启动。

在重启计算机并解决问题后,需要再次打开系统配置工具,并在“常规”选项卡中选中“正常启动”单选按钮。(图3)


    图3 系统配置工具(msconfig.exe)

  在“系统配置工具”的“启动”选项卡下可用于控制特定启动过程的工作方式。在此我们可以配置计算机启动到某种安全启动模式下,并可选择其他选项,例如无GUI启动等。如果在排错后发现需要保留这些设置,则可以选中“使所有启动设置成为永久设置”复选框,以便将这些设置保存到引导配置启动项中。(图4)


    图4 “系统配置工具”的“启动”选项卡
   另外,在“启动”选项页面中还有一个“高级选项”按钮,单击该按钮可进入“启动高级选项”对话框。在此,除了可以锁定PCI、检测HAL以及启用测试,还可以使用高级选项实现某些特殊应用。

 

  (1).指定操作系统可以使用的处理器数量。在多处理器的系统中通常会发生某些莫名的故障,如果我们要进行排错以了解该故障是否是由此引起的,可以使用该选项。

  (2).设定操作系统可以使用的内存最大数量。如果我们怀疑某些系统引导问题是有安装了额外的内存引起的,则可以使用该选项。比如,系统本来是2GB的内存,如果在安装了另外的一条2GB内存后导致系统不能引导,为了判断是否是有这条额外的内存导致了上述故障,我们就可以暂时限制系统只能使用2048MB的内存。(图5)


    图5 高级启动管理

  如果怀疑安装到计算机上的某个服务导致系统引导故障,可以在“系统配置工具”的“常规”选项卡下选择诊断或者选择性启动模式的方式进行判断。如果确信是某服务导致了启动故障,那么可以在“服务”选项卡下禁用该服务。在禁用后问题不再发生,应该可以确认是该服务的问题,那么我们就可永久性地禁用该服务或更新该服务。同理,如果怀疑某个在启动时自动运行的程序导致了系统引导故障,那么可以通过“启用”选项卡下的设置来进行排错。(图6)

  图6 系统配置
   4、用“BCD编辑器”管理系统引导配置

 

  对于高级系统用户来说,利用“BCD编辑器”来管理系统引导配置是最灵活的。BCD编辑器(bcdedit.exe)是一个高级命令行工具,可用于查看和设置系统引导环境的配置。不过,需要主要的是,在使用bededit.exe对BCD进行修改之前最后做好系统的备份,以免无操作造成系统引导故障。下面笔者列举Windows 7下bededit.exe的几个应用实例。

  (1).查看BCD项

  打开命令提示符,在其中输入并执行bededit.exe命令就会显示系统的BCD信息。不过,对于一般用户这些信息比较难懂,笔者做以说明。在计算机中包含系统和非系统的BCD存储,系统的BCD存储中包含了操作系统的引导项以及相关的引导信息,bededit.exe工具的操作就是对系统BCD的操作。由于笔者的计算机上只有一个系统,如图所示其BCD存储只有两个项:一个对应了Windows启动管理器,一个对应了Windows启动加载器。在此,Windows启动管理器会调用启动加载器,然后启动加载器会使用winload.exe引导Windows 7。Windows启动管理器和Windows启动加载器对应的BCD项具有类似的属性,这些属性定义了系统的BCD环境。需要注意的是,Windows7 BCD文件比Windows Vista和Windows Server2008多出了 recoverysequence和recoveryenabled两个属性。 此外,其中类似 {ba50c1f0-3752-11de-90d5-cdf8d52a3222}的字符串标识符,以便被系统引用。需要说明的是,如果计算机中安装了其他Windows系统,我们会看到每一个系统都有其对于的BCD项。(图7)


    图7 查看BCD项

  (2).创建BCD

  通过使用BCD编辑器,我们可以创建非系统的BCD存储。在命令行下执行下面格式的命令“bcdedit /createstore storepath”,其中/createstore是参数,表示创建BCD存储,而storepath就是你希望创建非系统存储的文件的时间保存位置。例如我们执行命令“bcdedit /createstore d:\ctocio\bcd”即可。(图8)

  图8 创建BCD
  (3).导入、导出BCD

 

  利用bcdeidt.exe命令我们可以导入或者导出BCD存储,要导出系统的BCD存储中的内容到特定文件需要使用“/export”参数。在命令行下执行命令“bcdedit /export storepath”,storepath就是用于保存系统BCD存储内容的实际文件路径,例如执行命令“bcdedite /export d:\ctocio\backup”就会将系统的BCD信息保存到d:\ctocio\backup文件中。如果要还原系统的BCD信息,我们可以通过bcdedit.exe的“/import”参数将BCD备份导入进来。其命令格式为“bcdedicdt /import importpath”,其中importpath为保存了BCD信息的文件夹的实际路径。例如执行命令“bcdedit /import d:\ctocio\backup”就可将刚才备份的BCD信息重新导入进来。(图9)

  图9 导入、导出BCD

  (4).显示Windows 7隐藏的BCD项目

  默认情况下我们在命令行下执行bcdedit.exe是不能显示所有的BCD项的,Windows 7隐藏了某些BCD项目。如果要查看被隐藏的BCD项目,我们需要执行命令打开显示开关将其显示出来。假如当前系统的标识符是{ba50c1f0-3752-11de-90d5-cdf8d52a3222},在命令行下依次执行命令“bcdedit /displayorder {ba50c1f0-3752-11de-90d5-cdf8d52a3222} /addfirst”和“bcdedit /displayorder {ba50c1f0-3752-11de-90d5-cdf8d52a3222} /addfirst”。这样当我们重新执行bcdedit.exe时就会显示Windows 7中被隐藏的BCD项目。同时,当重启Windows 7时就会在开机菜单中出现Ramdisk Options选项,这是Windows7集成的Windows Recovery Environment,该选项在系统修复/恢复是非常有用。(图10)

  图10 显示Windows 7隐藏的BCD项目
   (5).快速添加系统菜单

 

  安装多系统的用户,往往会因为系统安装次序不够科学而造成系统启动选择菜单不全或者有误,此时我们需要手动添加系统菜单项。下面分别说说如何利用bcdedit.exe命令添加Windows XP启动菜单项和Windows 7启动菜单项。

  假设Windows XP系统安装在C盘,在Windows 7中添加其系统启动菜单项可以依次执行下面的命令或者将其保存为一个批处理文件(bat或者cmd文件)。

  bcdedit /create {ntldr} /d "Microsoft Windows XP"

  bcdedit /set {ntldr} device partition=C:

  bcdedit /set {ntldr} path \ntldr

  bcdedit /displayorder {ntldr} /addfirst

  同样我们假设Windows 7安装在C盘,其语言版本为简体中文版,系统标识符为{ba50c1f0-3752-11de-90d5-cdf8d52a3222},要添加其系统启动菜单项依次执行下面的命令或者将其保存为一个批处理文件(bat或者cmd文件)。

  set id={ba50c1f0-3752-11de-90d5-cdf8d52a3222}

  bcdedit /create %id% /d "Windows 7" /application osloader

  bcdedit /set %id% locale zh-cn

  bcdedit /set %id% device partition=C:

  bcdedit /set %id% osdevice partition=C:

  bcdedit /set %id% path \Windows\system32\winload.exe

  bcdedit /set %id% inherit {bootloadersettings}

  bcdedit /set %id% systemroot \windows

  bcdedit /set %id% nx OptOut

  bcdedit /displayorder %id% /addfirst

  (图11)

  图11 快速添加系统菜单


    (6).更改系统显示顺序

  如果要更改系统引导管理器中诸如Windows 7、Windows Vista、Windows Server 2008、Windows XP在操作系统选择菜单上的显示顺序,我们可以通过bcdedit.exe的“/displayorder”参数来实现。其命令格式是“bcdedit /displayorder id1 id2 id3 ... idn”,其中id1是显示在第一位的操作系统对于的操作系统对应的系统标识符,id2是显示在第二位的操作系统对应的系统标识符,依次类推。比如我们执行命令“bcdedit /displayorder {ba50c1f0-3752-11de-90d5-cdf8d52a3222} {d6be0d13-413a-11de-b285-b6ee0ebcf10e}”则第一项系统标识符对于的系统会第一个显示。另外,我们还可以使用“/addfirst”参数配合“/displayorder”参数设置某系统为第一项,比如执行“bcdedit /displayorder {ba50c1f0-3752-11de-90d5-cdf8d52a3222} /addfirst”。此外执行命令“bcdedit /displayorder {ba50c1f0-3752-11de-90d5-cdf8d52a3222} /addlast”则该系统成为最后一项。(图12)

深入解析Windows 7下的BCD管理工具

  图12 更改系统显示顺序
   

  

(7).其他BCD管理

  除了上面比较常用的BCD管理外,笔者再列举几个比较有用的bcdedit命令参数。执行命令“bcdedit /default {d6be0d13-413a-11de-b285-b6ee0ebcf10e}”将该操作系统标识符对应才操作系统设置为默认引导系统。执行“bcdedit /timeout 10”,将系统启动菜单停留的时间设置为10秒。另外,在特殊情况下我们需要将从特定系统引导一次,然后恢复为默认的引导顺序。这是我们需要用到bcdedit的“/bootsequence”参数。例如,执行命令“bcdedit /bootsequence {d6be0d13-413a-11de-b285-b6ee0ebcf10e}”,这样当计算机重启时系统就会从该系统引导,当下次重启计算机时就恢复从默认的系统进行引导。(图13)

深入解析Windows 7下的BCD管理工具

  图13 其他BCD管理

  总结:上面笔者以Windows 7系统为例,演示了利用“启动和故障恢复”控制台、“系统配置工具”、BCD编辑器这三个工具配置和管理系统BCD数据的主要技术细节。虽然上面的演示是在Windows 7中进行的,但其中大多数同样实用于Windows Vista和Windows Server 2008系统,希望本文能够对大家有所帮助。

阅读(382) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~