NetRoc's Blog

N-Tech

 

WinDbg 文档翻译----7

cc682/NetRoc

http://netroc682.spaces.live.com/

编辑引导选项

本节是关于如何修改Windos Vista和之后版本Windows、Windows Server 2003、Windows XP及Windows 2000引导选项的实用指南。它建议了关于如何自定义引导选项各个基本元素的详细操作步骤。

对于Windows Server 2003和Windows XP,本节说明了2003和XP中自带的Bootcfg工具的使用方法。

对于Windows Vsita和之后版本的Windows,本节说明了这些系统自带的BCDEdit工具的使用方法。关于BCDEdit命令语法,可以在命令提示符下输入bcdedit /?或者bcdedit /? TOPICS查看。

查看关于通过编辑引导入口参数来启用或禁用Windows功能的帮助,查看使用引导选项

修改引导选项中的系统特性:

然后,下面的方法可以使得测试更快和更容易:

添加引导入口

自定义引导选项的第一步就是为某个操作系统添加新的引导入口引导入口是为操作系统或引导程序定义的一组加载配置。

一个操作系统可以有多个引导入口,每个的参数都可以不同。Windows安装程序在安装系统的时候创建了标准的引导入口,但是还可以通过修改引导选项自己添加新的、自定义的入口。

也可以在Windows 安装程序创建的入口中添加、删除或修改选项。但是最好保持标准入口,而添加一个新的入口来修改。

新建引导入口,可以复制一个已存在的入口再修改它。

在Windows Vista之前的系统使用Bootcfg

可以使用Bootcfg /copy 命令来复制引导入口,这一操作是和固件无关的。

下面的Bootcfg命令将第二个引导入口复制成新的入口。/ID 参数指定被复制的入口的行号,/d (说明)命令指定新入口的友好名,友好名必须用引号括起来。

bootcfg /copy /ID 2 /d "Microsoft Windows XP Professional - new"

如果添加过从来不使用的引导入口,一定要删除它们,特别是在使用有限的EFI NVRAM资源的机器上。使用Bootcfg /delete 命令来删除一个不使用的入口。

如果一个系统有多个引导入口,一定要将首选的入口设置为默认入口。更多操作说明,查看修改默认引导入口

查看完整的Bootcfg操作说明,查看帮助和支持。示例可以查看使用引导参数

在Windows Vista之前的系统中编辑Boot.ini文件

Boot.ini中添加新入口,可以复制并粘贴某个入口。然后将新入口的友好名修改得在文件和引导菜单中能轻易识别。友好名是在引导入口中被引号括起来的字符串。

例如,下面的Boot.ini文件中,原来的Windows XP入口被复制了一份,并且新入口的友好名被修改了。新创建的入口是用粗体字标识的。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect 
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /fastdetect 
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional - new" /fastdetect

在Windows Vista中新建引导入口

在Windows Vista中使用BCDEdit来修改引导选项。添加新的入口,需要用管理员权限打开一个命令提示符窗口(右键点击命令提示符并在快捷菜单中点击以管理员方式运行)。

使用BCDEdit和/copy参数复制已有的入口。例如,下面的命令中,BCDEdit复制了{current}标识的,最近一次被Windows使用过的引导入口,并创建了新入口。/d参数指定新引导入口的名字为DebugEntry。

bcdedit /copy {current} /d "DebugEntry"

如果命令成功,BCDEdit显示类似下面的信息(中文系统上是中文说明。):

The entry was successfully copied to {49916baf-0e08-11db-9af4-000bdbd316a0}.

复制了引导菜单上的入口之后,新入口会自动被添加到引导菜单末尾。

前面的信息中的GUID(大括号({})中的内容)是新入口的标识。可以用它来在所有BCDEdit命令中指明该入口。

如果该命令失败,确认是否以管理员权限运行命令提示符窗口,以及包括{current}两端的大括号在内的所有命令参数都正确拼写了。

也可以使用/create 选项新建引导入口。例如下面的命令新建了一个名为"My Windows Vista"的引导入口:

bcdedit /create /d "My Windows Vista" /application osloader

使用/create 参数时,新的引导入口不会自动被加入引导菜单。可以用/displayorder 选项将新入口添加到引导菜单中。可以以任何顺序排列引导入口。

查看关于/create命令参数的更多信息,可以在命令提示符窗口键入bcdedit /? /create

编辑Windows Vista的引导菜单

Windows Vista中,新引导入口不会自动添加到引导菜单,可以以任何顺序排列引导入口。

使用/displayorder 选项来设置多重引导菜单中引导管理器显示入口的顺序。该命令语法如下:

bcdedit /displayorder {ID} {ID} ...

ID是引导入口的GUID或类似{current}这样的保留标识。用空格分开每个标识符,并必须包含大括号({})。

For example, to add the DebugEntry boot entry to the boot menu after the {current} entry, use the following command:

bcdedit /displayorder {current} {49916baf-0e08-11db-9af4-000bdbd316a0}

也可以使用/addlast, /addfirst,和/remove选项来 在菜单中排序或删除条目。例如下面的命令将DebugEntry 引导入口设置为菜单的最后一条。

bcdedit /displayorder {49916baf-0e08-11db-9af4-000bdbd316a0} /addlast 

想验证显示顺序是否正确,可以使用下面的命令:

bcdedit

键入bcdedit 并不使用其它参数时,BCDEdit按照引导菜单中的顺序显示引导管理器入口和引导入口。

Windows引导管理器入口也包含引导菜单显示顺序,如下所示:


Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=C:
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
displayorder            {current}
                        {18b123cd-2bf6-11db-bfae-00e018e2b8db}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Microsoft Windows Vista
locale                  en-US
inherit                 {bootloadersettings}
osdevice                partition=C:
systemroot              \Windows
resumeobject            {d7094401-2641-11db-baba-00e018e2b8db}
nx                      OptIn

Windows Boot Loader
-------------------
identifier              {18b123cd-2bf6-11db-bfae-00e018e2b8db}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Debugger Boot
locale                  en-US
inherit                 {bootloadersettings}
osdevice                partition=C:
systemroot              \Windows
resumeobject            {d7094401-2641-11db-baba-00e018e2b8db}
nx                      OptIn
debug                   Yes

修改引导入口的友好名

在Windows Server 2003和之前基于NT内核的Windows中,引导管理器通过引导入口来生成引导菜单。菜单中条目是以引导入口的友好名来显示的。在Windows Vista中类似,引导管理器中出现的条目是引导入口的说明。

一般来说,在复制了引导入口之后,会把新入口的友好名修改掉,以和原始入口区分开。

也可以将友好名修改 得更容易理解自定义的引导入口。用适合的说明来描述引导入口可以节省很多时间。

如下的友好名没有什么意义。

"Windows XP Debug1"
"Windows XP Debug2"

但是,下面这样有意义的名字,使得选择更加容易。

"Windows XP NullModem"
"Windows XP 1394"

注意  当引导入口在x86或x64系统上被配置来进行调试(/debug /debugport)或紧急管理服务(Emergency Management Services (EMS)) (/redirect)时 ,boot loader会在引导菜单中显示的友好名后添加一个中括号括起来的后缀([debugger enabled] 或 [ems enabled])。

但是,boot loader在友好名和后缀合起来超过70个字符时,会省略掉后缀。要想它被显示出来,需要改短友好名。

修改Boot.ini文件中的引导入口友好名,可以通过Bootcfg或者用记事本编辑Boot.ini。在EFI NVRAM的机器上,使用Bootcfg。

修改Windows Vista或之后版本Windows上的引导入口友好名,使用BCDEdit。

使用Bootcfg

使用Bootcfg,可以在复制引导入口的时候就修改友好名。用Bootcfg /copy 命令复制入口并修改它的名字。

下面的Bootcfg命令复制第一个入口并创建新入口。/ID参数指定新入口复制到的行号。/d(说明)参数指定新入口的友好名。

bootcfg /copy /ID 1 /d "Windows XP Debug"

Bootcfg的完整操作说明,查看帮助和支持服务。示例可以查看 使用引导参数

编辑Boot.ini文件

Boot.ini文件中,引导入口的友好名被引号括起来。

例如,下面的Boot.ini示例中将Microsoft Windows XP Professional引导入口复制了一份。

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect

修改入口的友好名,可以修改掉引号内的字符串。下面的示例中,因为第一个入口将用于调试,所以名字修改为Windows XP Debug。

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Debug" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect

使用BCDEdit

修改引导菜单中显示的引导入口说明,/set ID description选项。命令语法如下,其中的ID是引导入口的GUID。

bcdedit /set ID description "The new description"

例如:

bcdedit /set {802d5e32-0784-11da-bd33-000476eba25f} description "Windows Vista NullModem"

也可以在复制入口的时候用/d选项修改。

bcdedit /copy {current} /d "Windows Vista NullModem"

修改引导参数

要起用或配置引导相关的操作系统特性,例如调试,必须在该系统的引导入口中添加引导参数。

在Windows Server 2003及更早的基于NT内核系统中,和驱动程序开发、测试和调试相关的引导参数列表,查看引导参数参考

在Windows Server 2003及更早的基于NT内核系统中驱动调试和测试的引导入口配置例子,可以查看使用引导参数

在基于BIOS固件的运行Windows Server 2003及更早的基于NT内核Windows的机器上,可以通过使用Bootcfg或者记事本编辑Boot.ini文件来修改引导参数。在EFI固件的机器上,使用Bootcfg或Nvrboot。

修改Windows Vista或更迟版本Windows 系统的引导参数,使用BCDEdit。

使用Bootcfg

Bootcfg在OS Load Options 字段(EFI固件机器上标注为OsLoadOptions)中显示引导选项。

下面的例子是Bootcfg显示的EFI NVRAM中的引导选项。示例引导入口包含/fastdetect/debug参数,以及/debugport/baudrate子参数。

Boot entry ID:    2
OS Friendly Name: Microsoft Windows XP 64-Bit Edition
OsLoadOptions:     /fastdetect /debug /debugport=COM1 /baudrate=115200
BootFilePath:     \Device\HarddiskVolume1\EFI\Microsoft\WINNT50C\ia64ldr.efi
OsFilePath:       \Device\HarddiskVolume3\WINDOWS.0

在引导入口中增加引导参数,可以使用特定参数的选项,如/ems/debug,和/dbg1394或者Bootcfg /addsw/raw命令。查看Bootcfg参数的完整列表,可以在命令提示符下输入bootcfg /?

例如,下面的Bootcfg命令使用了Bootcfg /addsw/MM值为512的命令,在第二个引导入口中添加了/maxmem引导参数,并将/maxmem 值设置为512(MB)。/ID 参数指定修改第二个引导入口(行号为2)。

bootcfg /addsw /MM 512 /ID 2

修改结果在64位Bootcfg的显示可能如下:

Boot entry ID:    2
OS Friendly Name: Microsoft Windows XP 64-Bit Edition
OsLoadOptions:     /fastdetect /debug /debugport=COM1 /baudrate=115200 /maxmem=512
BootFilePath:     \Device\HarddiskVolume1\EFI\Microsoft\WINNT50C\ia64ldr.efi
OsFilePath:       \Device\HarddiskVolume3\WINDOWS.0

编辑Boot.ini文件

Boot.ini文件中,引导参数紧跟着友好名。

下面的Boot.ini中的一个入口包含/fastdetect/debug参数,以及/debugport/baudrate子参数。

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Debug1" /fastdetect /debug /debugport=COM1 /baudrate=57600

增加启动参数,需要按照规定的语法输入参数。

例如,增加/maxmem选项,需要在入口参数列表中输入/maxmem 和以MB为单位的值。这些参数可以以任何顺序出现。下面的示例中,/maxmem参数和值512(MB)出现在参数表最后。

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Debug1" /fastdetect /debug /debugport=COM1 /baudrate=57600 /maxmem=512

使用BCDEdit

在引导入口中增加引导配置参数,可以用BCDEdit的引导入口选项来修改全局设置,如/ems/debug/dbgsettings,或者使用BCDEdit /set选项来设置单个参数。 查看BCDEdit的完整参数列表,可以输入BCDEdit /?,也可以用BCDEdit /? <命令>查看指定的命令。

例如,下面的命令开启某个引导入口的PAE:

bcdedit /set {802d5e32-0784-11da-bd33-000476eba25f} pae forceenable

启动或禁用内核调试器,按如下语法使用/debug 选项。

bcdedit /debug <ID> [on | off]

<ID>是要修改的引导入口的GUID。如果不指定<ID>,则命令修改当前运行的系统。下面的命令启用名为DebugEntry的引导入口的内核调试器。

bcdedit /debug {49916baf-0e08-11db-9af4-000bdbd316a0} on

查看当前的所有引导入口,可以在命令提示符键入bcdedit。DebugEntry 的引导入口显示内核调试器被起用了。

Windows Boot Loader
-------------------
identifier              {49916baf-0e08-11db-9af4-000bdbd316a0}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             DebugEntry
locale                  en-US
inherit                 {bootloadersettings}
osdevice                partition=C:
systemroot              \Windows
resumeobject            {3e3a9f69-024a-11db-b5fc-a50a1ad8a70e}
nx                      OptIn
pae                     ForceEnable
debug                   Yes

修改默认引导入口

默认引导入口是引导菜单超时时间到达时,boot loader选择的入口。可以通过修改默认引导入口来使得首选的系统配置能够自动被加载。

在Windows Server 2003或者更早的基于NT内核的Windows中,可以使用Bootcfg或者记事本直接编辑Boot.ini文件来修改默认引导入口。在EFI NVRAM机器上修改,可以使用Bootcfg或者Nvrboot。在所有平台上,Bootcfg都能够提供最简单、安全的指定默认入口的方法。

在Windows Vista或更新版本的Windows中,使用BCDEdit来修改默认引导入口。

使用Bootcfg

Bootcfg在所有系统上都提供了最简单的方法来修改默认引导入口。但是Bootcfg在不同系统上显示的信息有少许差异。

  • 在BIOS固件的机器上,Bootcfg按照Boot.ini中的顺序显示引导入口。在这种情况下,默认引导入口是Bootcfg显示的引导入口节中默认操作系统的第一个引导入口。
  • 在EFI固件的机器上,Bootcfg按照引导顺序显示入口。因此第一个列出的引导入口是默认入口。(Bootcfg在显示的时候增加了一个default 参数,但是这并不是在EFI NVRAM中保存的。)

在两种类型的系统上修改默认引导入口,使用Bootcfg /default 命令。下面的命令将第二个引导入口(行号为2)设置为默认。

bootcfg /default /ID 2

Bootcfg /default 命令的作用在不同种类机器上有少许差异。BIOS固件的系统上,/default 选项修改掉Boot.ini文件中的default 参数,为了将选定的引导入口设置为默认,可能重新对引导入口进行排序。在EFI固件的系统上,Bootcfg /default 命令修改掉引导顺序。使得选定的引导入口出现在Bootcfg的Boot Entries 节第一个。

关于Bootcfg的完整操作指令,查看帮助和支持服务。示例查看使用引导参数

注意  Bootcfg中的Boot entry ID 字段和Nvrboot中的引导入口号并不是EFI引导入口ID。Bootcfg和Nvrboot中的ID只反映了在Boot Entries 节中所排的行号,并且重新排序入口的时候就会改变。

编辑Boot.ini 文件

修改默认引导入口之前,必须识别当前的默认引导入口。下面两个元素决定了哪个引导入口是默认的:

  • default 参数的值。
  • Boot.ini文件[operating systems]节中入口的顺序。

默认引导入口是 [operating systems]节中的默认操作系统的第一个引导入口。

例如,下面的示例Boot.ini文件有两个Windows 2000入口和两个Windows XP入口。default 参数指定了磁盘0、分区1中的WINNT目录中的Windows 2000操作系统。默认引导入口名为"Microsoft Windows 2000 Professional,在下面以粗体显示。这是[operating systems] 节中用于引导Windows 2000(在磁盘0,分区1的WINNT目录下的操作系统)的第一个入口。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /fastdetect 
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Windows XP Debug" /fastdetect /debug /debugport=COM1 /baudrate=19200 
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect 
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Debug" /fastdetect /debug /debugport=COM1 /baudrate=19200 

按如下步骤修改默认引导入口。

修改默认引导入口

  1. 复制新的默认入口中的操作系统位置,并将它粘贴到default 参数的值中。
  2. 将该入口放到同一个操作系统的其他所有入口之前。

下面的例子说明了修改的结果。在这个修改的Boot.ini文件中,Windows XP是默认操作系统,并且"Windows XP Debug"是默认引导入口。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Debug" /fastdetect /debug /debugport=COM1 /baudrate=19200 
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect 
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Windows XP Debug" /fastdetect /debug /debugport=COM1 /baudrate=19200 
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /fastdetect 

使用Nvrboot

在以EFI NVRAM存储引导选项的系统上,可以使用nvrboot p (push)命令。它将一个引导入口放到所有入口列表的顶部,使得它成为Boot Entries 节中第一个入口。

和Bootcfg一样,nvrboot p 命令重新排序BootOrder 数组中的值,使得指定的引导入口的NVRAM引导ID是这个数组中第一个值。

使用BCDEdit

在Windows Vista中,可以用/default 选项指定默认入口。指定默认操作系统的语法如下:

bcdedit /default <ID>

<ID> 是想要设置成默认的操作系统的GUID。必须在GUID两端加上大括号({}),例如:

bcdedit /default {cbd971bf-b7b8-4885-951a-fa03044f5d71}

在多引导机器上要将默认入口修改为早期版本操作系统加载器,可以将<ID> 设置为{ntldr},既为Ntldr保留的GUID名。这样可能会再出现另外一个依赖于Boot.ini文件的菜单。

bcdedit /default {ntldr}

修改引导菜单超时

引导菜单超时选项决定在加载默认引导入口之前,引导菜单显示的时间。它以秒为单位。

如果想要更多时间用于选择加载哪个操作系统,可以增大这个超时值。或者减小它 以使得默认系统更快的被启动起来。

在Windows Server 2003及更早版本基于NT内核的Windows上,可以通过Bootcfg或者用记事本修改Boot.ini文件中的超时时间。修改保存在EFI NVRAM中的超时时间,必须使用Bootcfg。(Nvrboot只能编辑引导入口)

在Windows Vista中,使用BCDEdit修改默认的引导菜单超时时间。

使用Bootcfg

修改引导菜单超时,可以使用Bootcfg /timeout 选项。合法的值是从0到999。不能用Bootcfg设置不明确的超时时间。

下面的Bootcfg命令将超时时间设置为2秒:

bootcfg /timeout 2

下面的Bootcfg输出显示了EFI NVRAM中新的超时时间。

Boot Options
------------
Timeout:             2
Default:             \Device\HarddiskVolume3\WINDOWS
CurrentBootEntryID:  1

查看Bootcfg完整的操作指令,查看帮助和支持服务。示例可以查看使用引导参数

编辑Boot.ini 文件

Boot.ini文件的[boot loader] 节中的timeout 参数决定引导菜单的超时时间。合法的值为0到9999或者-1。当timeout 设置为-1时,超时值是不确定的,即在引导菜单中明确选定一项之前,操作系统不会启动。

修改Boot.ini文件中的引导菜单超时时间,可以为[boot loader]中的 timeout 参数指定新的值。例如下面的Bootcfg显示输出默认超时时间为30秒,既所有版本Windows中的预设值。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect 
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /fastdetect 

使用BCDEdit

指定引导菜单超时时间,使用/timeout 选项。

bcdedit /timeout <timeout>

以秒为单位使用/timeout 选项设置超时值。例如,下面设置超时值为15秒:

bcdedit /timeout 15

posted on 2008-03-27 15:40 NetRoc 阅读(817) 评论(1)  编辑 收藏 引用 所属分类: WinDbg文档翻译

评论

# re: WinDbg 文档翻译----7 2009-11-02 13:22 Rachilee

谢谢,讲得非常清楚。  回复  更多评论   

只有注册用户登录后才能发表评论。

导航

统计

常用链接

留言簿(7)

随笔档案(99)

文章分类(35)

文章档案(32)

Friends

Mirror

搜索

最新评论

阅读排行榜

评论排行榜