BCD(Boot ConfigurationDate)即系统引导配置数据,这是从WindowsVista开始才引入的。我们知道,在WindowsVista/Server2008中BootManager组件负责系统的初始化和引导工作,而与之相匹配系统的引导数据就存储在BCD中。相信大家非常关心Windows7下的BCD数据管理吧,下面笔者和大家一道就这方面进行一番探讨。
1、BCD数据管理工具
也许最常用也最熟悉的系统引导管理就是系统高级引导菜单了,在Windows7下也不例外。当系统发生引导故障时,为了成功进入系统或者进行排错我们会选择在系统启动的过程中按下F8键进入高级引导选项菜单,并从这个菜单中选择一种高级启动模式进行引导尝试。在此可供我们选择的引导方式主要有安全模式、启用引导日志、最近一次正确配置、目录服务还原模式以及禁用驱动程序前面强制等。需要说明的是,索然这些高级模式会暂时性地修复操作系统的启动方式,以帮助故障的解决和诊断,但是这些模式并不会对引导配置或者BCD存储做出任何永久性的修改。所以,系统高级引导菜单并不是有效的BCD数据管理工具。和此前的Windows系统类似,在Windows7中可用于修改引导配置和管理BCD存储的工具主要有“启动和故障恢复”控制台,系统配置使用工具(msconfig.exe),以及比较高级的BCD编辑器(bcdedit.exe)。本文就以这三个工具为例说说BCD数据的管理。
2、用“启动和故障恢复”控制台实施系统引导配置
在Windows7的“启动和故障恢复”控制台中我们可以配置系统启动过程中的基本选项,可以使用这些选项设置默认的操作系统、可用操作系统选择菜单的显示时间,以及在需要的时恢复选项的显示时间。无论是否需要将计算机引导到不同的操作系统,都可以通过优化这些设置减少系统启动所需的时间,并加速系统的启动过程。
依据下面的操作步骤可进入Windows7的“启动和故障恢复”控制台:右键单击桌面上的“计算机”图标选择“属性”,在系统属性窗口中单击左窗格中任务下的“高级系统设置”链接。在系统属性对话框的“高级”选项卡下,单击“启动和故障恢复”选项下的“设置”按钮就会进入如图2所示的“启动和故障恢复”控制台。在控制台中,我们可以选择默认的启动的操作系统,在安装了多个操作系统的计算机上,单击“默认操作系统”下列列表即可选择希望默认启动的操作系统,如果只安装了一个系统则当前系统就是默认的启动的系统。选中“显示操作系统列表的时间”复选框,并在右侧的文本框中输入要使用的时间(以秒为单位),即可设置操作系统选择列表的显示时间。为了加速系统的启动速度,如果计算机中只有一个系统可以将其设置为“0”,这样就不会显示启动菜单直接引导默认系统。另外,在“启动和故障恢复”控制台中可设置系统发生故障时的后续操作。因为这部分内容与BCD的关系不大,而且已经有作者对此做了非常深入的解析,所以就此略过。
3、用“系统配置工具”管理系统引导配置
通过“系统配置工具(msconfig.exe)”,我们可以在Windows7中调整计算机的启动方式。通常情况下,高级用户使用该工具进行系统故障的排错和诊断。例如,作为排错的一部分,可与配置计算机使用诊断启动模式,只加载最基本的驱动和服务。
依次点击“开始”→“运行”输入msconfig.exe回车后可启动“系统配置工具”,该工具提供了很多选项,应该说是我们管理BCD最方便的工具。在“常规”选项卡下可用于配置系统的启动方式,以及是否需要将系统启动到排错和诊断模式下。通过使用这些选项,可以选择进行常规启动、诊断启动或选择性启动。在重启计算机并解决问题后,需要再次打开系统配置工具,并在“常规”选项卡中选中“正常启动”单选按钮。
在“系统配置工具”的“启动”选项卡下可用于控制特定启动过程的工作方式。在此我们可以配置计算机启动到某种安全启动模式下,并可选择其他选项,例如无GUI启动等。如果在排错后发现需要保留这些设置,则可以选中“使所有启动设置成为永久设置”复选框,以便将这些设置保存到引导配置启动项中。
另外,在“启动”选项页面中还有一个“高级选项”按钮,单击该按钮可进入“启动高级选项”对话框。在此,除了可以锁定PCI、检测HAL以及启用测试,还可以使用高级选项实现某些特殊应用。
(1).指定操作系统可以使用的处理器数量。在多处理器的系统中通常会发生某些莫名的故障,如果我们要进行排错以了解该故障是否是由此引起的,可以使用该选项。
(2).设定操作系统可以使用的内存最大数量。如果我们怀疑某些系统引导问题是有安装了额外的内存引起的,则可以使用该选项。比如,系统本来是2GB的内存,如果在安装了另外的一条2GB内存后导致系统不能引导,为了判断是否是有这条额外的内存导致了上述故障,我们就可以暂时限制系统只能使用2048MB的内存。
如果怀疑安装到计算机上的某个服务导致系统引导故障,可以在“系统配置工具”的“常规”选项卡下选择诊断或者选择性启动模式的方式进行判断。如果确信是某服务导致了启动故障,那么可以在“服务”选项卡下禁用该服务。在禁用后问题不再发生,应该可以确认是该服务的问题,那么我们就可永久性地禁用该服务或更新该服务。同理,如果怀疑某个在启动时自动运行的程序导致了系统引导故障,那么可以通过“启用”选项卡下的设置来进行排错。
另外,在“启动”选项页面中还有一个“高级选项”按钮,单击该按钮可进入“启动高级选项”对话框。在此,除了可以锁定PCI、检测HAL以及启用测试,还可以使用高级选项实现某些特殊应用。
(1).指定操作系统可以使用的处理器数量。在多处理器的系统中通常会发生某些莫名的故障,如果我们要进行排错以了解该故障是否是由此引起的,可以使用该选项。
(2).设定操作系统可以使用的内存最大数量。如果我们怀疑某些系统引导问题是有安装了额外的内存引起的,则可以使用该选项。比如,系统本来是2GB的内存,如果在安装了另外的一条2GB内存后导致系统不能引导,为了判断是否是有这条额外的内存导致了上述故障,我们就可以暂时限制系统只能使用2048MB的内存。
如果怀疑安装到计算机上的某个服务导致系统引导故障,可以在“系统配置工具”的“常规”选项卡下选择诊断或者选择性启动模式的方式进行判断。如果确信是某服务导致了启动故障,那么可以在“服务”选项卡下禁用该服务。在禁用后问题不再发生,应该可以确认是该服务的问题,那么我们就可永久性地禁用该服务或更新该服务。同理,如果怀疑某个在启动时自动运行的程序导致了系统引导故障,那么可以通过“启用”选项卡下的设置来进行排错。
(3).导入、导出BCD
利用bcdeidt.exe命令我们可以导入或者导出BCD存储,要导出系统的BCD存储中的内容到特定文件需要使用“/export”参数。在命令行下执行命令“bcdedit/exportstorepath”,storepath就是用于保存系统BCD存储内容的实际文件路径,例如执行命令“bcdedite/exportd:\ctocio\backup”就会将系统的BCD信息保存到d:\ctocio\backup文件中。如果要还原系统的BCD信息,我们可以通过bcdedit.exe的“/import”参数将BCD备份导入进来。其命令格式为“bcdedicdt/importimportpath”,其中importpath为保存了BCD信息的文件夹的实际路径。例如执行命令“bcdedit/importd:\ctocio\backup”就可将刚才备份的BCD信息重新导入进来。
(4).显示Windows 7隐藏的BCD项目
默认情况下我们在命令行下执行bcdedit.exe是不能显示所有的BCD项的,Windows7隐藏了某些BCD项目。如果要查看被隐藏的BCD项目,我们需要执行命令打开显示开关将其显示出来。假如当前系统的标识符是ba50c1f0-3752-11de-90d5-cdf8d52a3222,在命令行下依次执行命令“bcdedit/displayorderba50c1f0-3752-11de-90d5-cdf8d52a3222/addfirst”和“bcdedit/displayorderba50c1f0-3752-11de-90d5-cdf8d52a3222/addfirst”。这样当我们重新执行bcdedit.exe时就会显示Windows7中被隐藏的BCD项目。同时,当重启Windows7时就会在开机菜单中出现RamdiskOptions选项,这是Windows7集成的WindowsRecoveryEnvironment,该选项在系统修复/恢复是非常有用。
(5).快速添加系统菜单
安装多系统的用户,往往会因为系统安装次序不够科学而造成系统启动选择菜单不全或者有误,此时我们需要手动添加系统菜单项。下面分别说说如何利用bcdedit.exe命令添加WindowsXP启动菜单项和Windows7启动菜单项。
假设WindowsXP系统安装在C盘,在Windows7中添加其系统启动菜单项可以依次执行下面的命令或者将其保存为一个批处理文件(bat或者cmd文件)。
bcdedit /create ntldr /d "Microsoft Windows XP"
bcdedit /set ntldr device partition=C:
bcdedit /set ntldr path \ntldr
bcdedit /displayorder ntldr /addfirst
同样我们假设Windows7安装在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
(6).更改系统显示顺序
如果要更改系统引导管理器中诸如Windows 7、Windows Vista、WindowsServer2008、WindowsXP在操作系统选择菜单上的显示顺序,我们可以通过bcdedit.exe的“/displayorder”参数来实现。其命令格式是“bcdedit/displayorderid1 id2 id3...idn”,其中id1是显示在第一位的操作系统对于的操作系统对应的系统标识符,id2是显示在第二位的操作系统对应的系统标识符,依次类推。比如我们执行命令“bcdedit/displayorderba50c1f0-3752-11de-90d5-cdf8d52a3222d6be0d13-413a-11de-b285-b6ee0ebcf10e”则第一项系统标识符对于的系统会第一个显示。另外,我们还可以使用“/addfirst”参数配合“/displayorder”参数设置某系统为第一项,比如执行“bcdedit/displayorderba50c1f0-3752-11de-90d5-cdf8d52a3222/addfirst”。此外执行命令“bcdedit/displayorderba50c1f0-3752-11de-90d5-cdf8d52a3222/addlast”则该系统成为最后一项。
(7).其他BCD管理
除了上面比较常用的BCD管理外,笔者再列举几个比较有用的bcdedit命令参数。执行命令“bcdedit/defaultd6be0d13-413a-11de-b285-b6ee0ebcf10e”将该操作系统标识符对应才操作系统设置为默认引导系统。执行“bcdedit/timeout10”,将系统启动菜单停留的时间设置为10秒。另外,在特殊情况下我们需要将从特定系统引导一次,然后恢复为默认的引导顺序。这是我们需要用到bcdedit的“/bootsequence”参数。例如,执行命令“bcdedit/bootsequenced6be0d13-413a-11de-b285-b6ee0ebcf10e”,这样当计算机重启时系统就会从该系统引导,当下次重启计算机时就恢复从默认的系统进行引导。
总结:上面笔者以Windows7系统为例,演示了利用“启动和故障恢复”控制台、“系统配置工具”、BCD编辑器这三个工具配置和管理系统BCD数据的主要技术细节。虽然上面的演示是在Windows7中进行的,但其中大多数同样实用于WindowsVista和Windows Server2008系统,希望本文能够对大家有所帮助。
【编辑推荐】