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
按如下步骤修改默认引导入口。
修改默认引导入口
- 复制新的默认入口中的操作系统位置,并将它粘贴到default 参数的值中。
- 将该入口放到同一个操作系统的其他所有入口之前。
下面的例子说明了修改的结果。在这个修改的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