cc682/NetRoc
http://netroc682.spaces.live.com/
BCD引导选项参考
引导入口参数,又称引导参数,是可选的针对特定系统的配置选项。可以为某个操作系统的引导入口添加引导参数。
本节描述在基于x86、x64和Itanium处理器的运行Windows Vista和之后版本的Windows机器上与驱动程序开发、测试和调试相关的引导选项。可以将这些引导参数添加到Windows的引导入口中。
BCDEdit选项和元素到Boot.ini选项的映射
下表描述了Windows Vista之前使用Boot.ini的引导参数到Windows Vista和之后的系统BCDEdit选项、BCD元素之间的对应关系。关于BCD引导元素的信息,可以在MSDN中查看BCD Reference 。
Boot.ini
|
BCDEdit 选项
|
BCD 元素类型
|
/3GB
|
increaseuserva
|
BcdOSLoaderInteger_IncreaseUserVa
|
/BASEVIDEO
|
vga
|
BcdOSLoaderBoolean_UseVgaDriver
|
/BOOTLOG
|
bootlog
|
BcdOSLoaderBoolean_BootLogInitialization
|
/BREAK
|
halbreakpoint
|
BcdOSLoaderBoolean_DebuggerHalBreakpoint
|
/CRASHDEBUG
|
/dbgsettings /start
|
|
/DEBUG, BOOTDEBUG
|
/debug
/bootdebug
|
BcdLibraryBoolean_DebuggerEnabled
|
/DEBUG
|
/debug
|
BcdOSLoaderBoolean_KernelDebuggerEnabled
|
/DEBUG, /DEBUGPORT=
|
/dbgsettings
|
BcdLibraryInteger_DebuggerType
|
/DEBUGPORT=
|
/dbgsettings 调试类型[debugport:端口]
[baudrate:波特率]
[channel:频道]
[targetname:目标名]
[/start {Active |Autoenable |Disable} /noemux]
|
BcdLibraryInteger_SerialDebuggerPort
BcdLibraryInteger_SerialDebuggerBaudRate
BcdLibraryInteger_1394DebuggerChannel
BcdLibraryString_UsbDebuggerTargetName
|
/EXECUTE
|
nx
|
BcdOSLoaderInteger_NxPolicy
|
/FASTDETECT
|
|
|
/HAL=
|
hal
|
BcdOSLoaderString_HalPath
|
/KERNEL=
|
kernel
|
BcdOSLoaderString_KernelPath
|
/MAXMEM=
|
truncatememory
|
BcdLibraryInteger_TruncatePhysicalMemory
|
/NODEBUG
|
/debug
|
|
/NOEXECUTE
|
nx {
|
BcdOSLoaderInteger_NxPolicy
|
/NOGUIBOOT
|
quietboot
|
BcdOSLoaderBoolean_DisableBootDisplay
|
/NOLOWMEM
|
nolowmem
|
BcdOSLoaderBoolean_NoLowMemory
|
/NOPAE
|
Pae
|
BcdOSLoaderInteger_PAEPolicy
|
/ONECPU
|
onecpu
|
BcdOSLoaderBoolean_UseBootProcessorOnly
|
/PAE
|
pae
|
BcdOSLoaderInteger_PAEPolicy
|
/PCILOCK
|
usefirmwarepcisettings
|
BcdOSLoaderInteger_UseFirmwarePciSettings
|
/REDIRECT
|
/ems
/emssettings [ BIOS ] |
[ EMSPORT:{端口} | [EMSBAUDRATE: {波特率}] ]
|
BcdOSLoaderBoolean_EmsEnabled
|
/SOS
|
sos
| |
BCDEdit /debug
/debug 引导选项启用或禁用当前或指定的Windows boot loader的内核调试器。
bcdedit /debug [{ID}] [ on | off ]
参数
{ID}
{ID} 是该引导入口关联的GUID。如果没有指定{ID},命令修改当前激活的系统。如果要指定引导入口,它的GUID必须用大括号{}括起来。例如,下面的命令启用GUID为49916baf-0e08-11db-9af4-000bdbd316a0的引导入口的内核调试器。
bcdedit /debug {49916baf-0e08-11db-9af4-000bdbd316a0} on
on
为指定的引导入口启用内核调试器。如果没有指定引导入口,则当前系统的内核调试器被启用。
off
为指定的引导入口禁用内核调试器。如果没有指定引导入口,则当前系统的内核调试器被禁用。
注释
/debug 引导选项为指定的引导入口启用调试。使用/dbgsettings 选项来指定调试连接的类型(debugtype)以及连接参数。如果该引导入口没有指定/dbgsettings ,则使用全局调试设置。全局调试设置的默认值在下表中列出。
Dbgsetting参数
|
默认值
|
Debugtype
|
串口
|
Debugport
|
1
|
Baudrate
|
115200
|
BCDEdit /dbgsettings
/dbgsettings 选项设置或显示计算机当前的全局调试设置。启用或禁用内核调试器,使用BCDEdit /debug 选项。
bcdedit /dbgsettings [ debugtype [DEBUGPORT:port] [BAUDRATE:baud] [CHANNEL:channel] [TARGETNAME:targetname] /start startpolicy /noemux ]
参数
debugtype
指定调试连接的类型。主控机和目标机之间的调试连接可以是串口、IEEE 1394(火线)或者USB 2.0。
debugtype
|
参数
|
Serial
|
DEBUGPORT:端口, BAUDRATE:波特率
|
1394
|
CHANNEL:频道
|
USB
|
TARGETNAME:目标名
|
当使用BCDEdit来设置调试连接参数时,必须指定debugtype 。例如,下面在全局调试设置中设定使用串口,并指定COM2为通信端口。
bcdedit /dbgsettings serial DEBUGPORT:2
DEBUGPORT:端口
指定当debugtype 为Serial 的时候作为调试端口的串口。这是一个可选设置,默认端口为1(COM1)。当修改DEBUGPORT 参数时debugtype 必须设置为Serial 。
BAUDRATE:波特率
指定当debugtype 为Serial时使用的波特率。这个参数是可选的。合法值的波特率为9600,19200,38400,57600和115200。默认是115200 bps。
CHANNEL:频道
指定当debugtype 为1394时使用的频道号。频道的值必须是0到62之间的10进制整数,并且必须和主控机上设置的一样。这个频道值和所使用的物理的1394端口没有关系。默认的频道是0。
TARGETNAME:目标名
当debugtype 为USB时用于指定一个名字字符串。
字符串可以为任意值。
/start 启动策略
对于所有调试器类型,该选项都指定调试器的启动策略。下表显示了启动策略的各种选择项。
启动策略
|
描述
|
ACTIVE
|
指定内核调试器被激活。
|
AUTOENABLE
|
指定当发生异常或者其他临界条件时,调试器被自动启用。在这之前调试器都是激活但禁用的。
|
DISABLE
|
指定当输入kdbgctrl来清空启用块(enable block)时启用调试器。在此之前调试器都是激活但禁用的。
|
如果启动策略没有指定,则默认为ACTIVE 。
/noumex
指定内核调试器跳过用户模式异常。默认情况下,内核调试器会因为特定的用户模式异常而中断下来,例如STATUS_BREAKPOINT 和STATUS_SINGLE_STEP 。/noumex 只在没有用户模式调试器附加到该进程上时起作用。
注释
/dbgsettings 用于配置全局调试设置,但是并不启用调试。必须使用/debug 选项来为指定 引导入口启用调试。如果某个引导入口没有自己的调试设置,则会使用全局调试设置。要覆盖全局设置,必须使用BCDEdit /set 命令来指定引导入口ID和调试参数。
全局设置的默认值是使用COM1和串口通信,波特率为115200。
/dbgsetting参数
|
默认值
|
Debugtype
|
Serial
|
DEBUGPORT: 端口
|
1
|
BAUDRATE:波特率
|
115200
|
示例
下面的示例设置全局调试设置。使用串口COM2进行通信,波特率为115200。
bcdedit /dbgsettings serial debugport:2 baudrate:115200
下例中,第一条命令设置为使用USB 2.0调试,并且目标名为myVistaTarget 。第二条命令为当前系统启用调试器。
bcdedit /dbgsettings usb targetname:myVistaTarget
bcdedit /debug ON
BCDEdit /ems
/ems 选项为指定的引导入口启用或禁用紧急管理服务(EMS)。
bcdedit /ems [{ID}] {on | off }
{ID}
{ID} 是该引导入口关联的GUID。如果没有指定{ID},命令修改当前激活的系统。如果要指定引导入口,它的GUID必须用大括号{}括起来。例如,下面的命令启用GUID为49916baf-0e08-11db-9af4-000bdbd316a0的引导入口的EMS。
bcdedit /ems {49916baf-0e08-11db-9af4-000bdbd316a0} on
注释
在Windows Vista中,使用BCDEdit /emssettings 命令来为所有引导入口进行EMS设置。然后使用BCDEdit /ems 命令为单个引导入口启用EMS。
EMS允许用户远程控制服务器的特定部分,即使服务器没有连接到网络或其他标准远程管理工具。关于EMS的更多信息,在Microsoft TechNet站点上搜索Emergency Management Services。
示例
下面的命令启用ID为{49916baf-0e08-11db-9af4-000bdbd316a0}的引导入口的EMS。
bcdedit /ems {49916baf-0e08-11db-9af4-000bdbd316a0} on
BCDEdit /emssettings
/emssettings 选项为机器进行全局的紧急管理服务(EMS)设置。要启用或禁用EMS,使用/ems 选项,/emssettings 并不为引导入口启用或禁用EMS。
bcdedit /emssettings [ BIOS ] | [ EMSPORT: port | [EMSBAUDRATE: baudrate] ]
参数
BIOS
指定系统将使用BIOS中的EMS配置。只在BIOS支持EMS的系统上有效。
EMSPORT: 端口
指定EMS通信使用的串口。该参数不能和BIOS选项一起使用。
EMSBAUDRATE: 波特率
指定EMS使用的串口波特率。该参数不能和BIOS一起使用。波特率是可选的,默认值为9600 bps。
注释
要在Windows安装之后启用EMS控制台重定向,Windows需要知道OOB通信(out-of-band communication)使用的端口和传输速率。Windows为EMS控制台重定向使用同样设置。
在具有BIOS固件和ACPI串口控制台重定向(SPCR)表的机器中,Windows可以通过读取SPCR中的入口来在BIOS中获得OOB(out-of-band)设置。在这些机器中,可以使用BIOS 参数来指定Windows直接在SPCR表中读取端口设置,或者使用emsport:端口和emsbaudrate:波特率参数来覆盖SPCR表中的设置。
在具有BIOS固件但是没有SPCR表的机器上,使用BCDEdit和/emssettings 命令、emsport:端口和emsbaudrate:波特率子参数来指定端口和传输速度。
在所有系统上,都可以使用BCDEdit /ems 命令来为引导入口加载的系统启用EMS控制台重定向。
本节中描述的内容用于在Windows安装之后启用EMS控制台重定向。关于在Windows安装和升级过程中启用EMS的信息,可以在 Microsoft TechNet站点上搜索"Enabling Emergency Management Services。
获取示例,查看用于启用EMS重定向的引导参数。
BCDEdit /set
/set 命令在引导配置数据存储中设置引导入口的选项值。使用该命令来配置指定引导入口的元素,例如内核调试设置、数据执行保护(DEP)和物理地址扩展(PAE),或者指定加载某个硬件抽象层(HAL)和内核文件。
bcdedit /set [{ID}] datatype value
参数
[{ID}
{ID} 是该引导入口关联的GUID。如果没有指定{ID},命令修改当前激活的系统。如果要指定引导入口,它的GUID必须用大括号{}括起来。要查看所有激活的引导入口的GUID值,使用bcdedit /enum 命令。
datatype value
bootlog [ yes | no]
启用系统初始化日志。
hal 文件
设置系统加载指定的HAL文件。该文件必须放在%SystemRoot%\system32 目录下,并且文件名要符合8.3字符格式。
increaseuserva Megabytes
为用户模式虚拟地址空间指定以MB为单位的内存总数。这个变量可以是2048(2GB)到3072 (3 GB)MB之间的任何10进制值。Windows为内核使用剩下的地址空间(4GB减去指定的值)。
kernel 文件
设置系统加载指定的内核文件。该文件必须放在%SystemRoot%\system32 目录下,并且文件名要符合8.3字符格式。
nolowmem [ on | off ]
控制低内存的使用。当设置了nolowmem on 时,操作系统、设备驱动和所有应用程序都加载到4GB边界的内存空间以上,并且指定Windows在4GB边界以上分配所有内存池。
nx [Optin |OptOut | AlwaysOn |AlwaysOff]
启用、禁用和配置数据执行保护(DEP),既一组用于防止恶意代码在被保护内存上执行的硬件和软件技术。关于使用控制面板来修改DEP设置的信息,查看Windows帮助和操作方法站点上的更改数据执行保护设置(Change Data Execution Prevention settings) 页面。
Optin
只为包括Windows内核和驱动程序在内的系统组件启用DEP。管理员可以使用应用程序兼容性工具(Application Compatibility Toolkit (ACT))在选定的可执行文件上启用DEP。
Optout
为包括Windows 内核和驱动程序在内的所有进程启用DEP。但是,管理员可以在控制面板里面的系统中为选定的可执行文件禁用DEP。
AlwaysOn
为包括Windows 内核和驱动程序在内的所有进程启用DEP。禁止所有试图禁用DEP的尝试。
AlwaysOff
禁用DEP。所有试图启用DEP的操作都被跳过。
在Windows Vista中,这个参数同时禁用物理地址扩展(PAE)。在Windows Server 2008中该参数不禁用PAE。
onecpu [ on | off ]
在多于一个逻辑处理器的机器上,强制只使用引导的CPU。
例如,下面的命令设置只使用一个处理器。
bcdedit /set onecpu on
pae [ Default | ForceEnable | ForceDisable ]
pae 参数只在基于x86和x64处理器的运行32位Windows的机器中有效。在32位Windows中,PAE默认是禁用的。但是,在x86处理器的系统上,当机器在Static Resource Affinity Table (SRAT)表中为热添加内存设备(hot-add memory devices)配置超过4GB范围的内存时,自动启用PAE。热添加内存设备(Hot-add memory supports memory devices )可以在不关闭机器电源的情况下添加到系统中。这种情况下,由于PAE必须在系统启动时启用,所以系统在重起之前即可食用扩展的内存。热添加内存仅在Windows Server 2008企业版、Windows Server 2003 企业版和Windows Server 2003Datacenter版中支持,并且必须由ACPI BIOS、x86处理器和其他特殊设备支持。
在所有支持硬件数据执行保护(DEP)的运行支持DEP的32位Windows的机器上,当DEP被打开时PAE也自动启用;在除了Windows Server 2003 SP1之外的32位Windows 系统中,禁用DEP时同时也禁用PAE。要在DEP禁用的情况下启用PAE,必须使用/set nx AlwaysOff和/set pae ForceEnable命令明确启用PAE 。关于DEP的更多信息,查看用于配置DEP和PAE的引导参数。
在x86处理器的机器上使用高速缓存连贯的非均匀内存架构(称为ccNUMA或NUMA)必须要PAE的支持,尽管Windows可以在支持NUMA的机器上没有PAE运行于非NUMA模式下。即使需要,PAE也不是自动启用的。NUMA在Windows XP所有版本和Windows Vista、Windows Server 2003的Enterprise 和Datacenter版本上支持。
pae 参数和其他作用于PAE配置的参数的信息,查看用于配置DEP和PAE的引导参数。
如果在安装了4GB内存的计算机上运行32位Windows Vista,能够使用的内存总数可能比预期的要少。更多关于内存使用的信息,可以在Microsoft知识库中查看Q929605号文章"The system memory that is reported in the System Information dialog box in Windows Vista is less than you expect if 4 GB of RAM is installed" 。
quietboot [ on | off ]
控制在Windows引导时的屏幕中控制引导过程中的所有位图显示。在Windows Vista之前的系统中,/noguiboot 参数有相似的作用。
removememory Megabytes
在操作系统可使用的总内存减少一部分。
例如,下面的命令将指定引导入口加载的系统的可用内存减少256M。
bcdedit /set {49916baf-0e08-11db-9af4-000bdbd316a0} removememory 256
sos [ on | off ]
控制在引导过程中对加载的驱动程序名字的显示。使用sos on 显示名字,sos off 禁止显示。
truncatememory 地址
限制Windows使用的物理内存总数。使用这个选项时,Windows忽略大于指定的物理地址的所有内存。以字节为单位指定地址。
例如,下面的命令限制物理地址在1GB。可以用十进制(1073741824)或16进制(0x40000000)来指定。
bcdedit /set {49916baf-0e08-11db-9af4-000bdbd316a0} truncatememory Ox40000000
usefirmwarepcisettings [ yes | no ]
启用或者禁用BIOS中设置的周边元件扩展接口(PCI)资源。
vga [ on | off ]
强制使用VGA显示驱动。
注释
关于特定BCD元素和引导选项的信息,可以使用BCDEdit /? OSLOADER 和BCDEdit /? TYPES OSLOADER命令查看。
查看当前引导入口和它的设置,使用bcdedit /enum 命令。该命令显示当前激活的引导入口和它的全局唯一标识符(GUID)。在/set 命令中用这个标识符来配置特定引导入口的选项。
关于BCDEdit的一般使用的命令,查看Boot Configuration Data Editor Frequently Asked Questions。