捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 > 技术文章 > 正文
24 2017.02

详解Win7启动过程 BCD启动设置数据介绍

点击次数:1934 更新时间:2017-2-24 20:38:47  【打印此页

Windows7操作系统启动过程详解,一般顺序为:BIOS→MBR→Bootmgr→BCD→Winload.exe→内核加载

 

 1:开机后,BIOS进行开机自检(POST),然后选择从硬盘进行启动,加载硬盘的MBR

并把控制权交给MBR(MBR是硬盘的第一个扇区,它不在任何一个分区内);

 

 2:MBR会搜索64B大小的分区表,找到4个主分区(可能没有4个)的活动分区并确认其他主分区都不是活动的,然后加载活动分区的第一个扇区(Bootmgr)到内存;  

 

 3:Bootmgr寻找并读取BCD,如果有多个启动选项,会将这些启动选项反映在屏幕上,由用户选择从哪个启动项启动。 

 

 4:选择从Windows7启动后,会加载C:\windows\system32\winload.exe,并开始内核的加载过程,内核加载过程比较长,比较复杂,这里就不一一讲了。

  

在这个过程中,bootmgr和BCD存放在Windows7的保留分区里,而从Winload.exe开始,就开始进入到C盘执行内核的加载过程了。

  

MBR(Master Boot Record),中文意为主引导记录。

 

硬盘的0磁道的第一个扇区称为MBR,它的大小是512字节,而这个区域可以分为两个部分。第一部分为 pre-boot区(预启动区),占446字节;第二部分是Partition table区(分区表),占66个字节,该区相当于一个小程序,作用是判断哪个分区被标记为活动分区,然后去读取那个分区的启动区,并运行该区中的代码。

  

他是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。但我们可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取

 

BCD=Boot Configuration Data (启动设置数据) ,BCD是操作系统中的启动设置数据,

 

 在有vista或windows7的多重操作系统中,系统通bootmgr程序导入BCD文件完成启动菜单的引导。

  

可用bcdedit.exe程序来编辑BCD文件,来调整开机默认操作系统和等待时间

bcdedit.exe是vista系统自带的一个命令行工具,用来定制windows boot manager,它位于v:\windows\system32目录下。bcdedit.exe的功能强大,参数非常多,VistaBootPro和Easybcd这类工具就是图形化的bcdedit,它们实现的功能bcdedit都可以实现。在一些情况下,上述工具无法达到目的,而bcdedit.exe却能够得心应手。因此有必要对bcdedit.exe这个系统自带的命令行工具进行了解。bcdedit.exe的参数非常多,帮助文档有很复杂,很多人因此对它弃而不用。但实际上大部分人只需掌握它的很少几个用法即可。

 

下面我用一个实例来讲解bcdedit.exe的常用功能。

 

一个秘密:bcdedit不但能对系统bcd(boot configuration data)进行操作,它也能对文件bcd进行操作。作为新手,你不应该去贸然改动你的系统bcd(这很可能导致你丢失引导菜单甚至再无法启动计算机)。因此,下面的实例中我只对一个文件bcd进行操作,全部完成后再将该文件bcd导入到系统bcd中。对文件bcd和系统bcd的操作方法是完全一致的(实际上系统bcd也是一个文件,大家用bcdedit查看c:\boot\bcd的内容就知道了)

 

操作环境:C盘装xp,D盘装vista,之后c盘的xp又被重装,因此原启动菜单丢失,现在开机只能进xp了。为了方便,我将v:\windows\system32\bcdedit.exe复制到了c:\下,cmd窗口改变当前路径到c:\。预料的bcd信息应该是这样的 

 

Windows Boot Manager 

-------------------- 

Identifier: {bootmgr} //这个不是菜单,而是主入口,一个BCD有且只有一个{bootmgr} 

Type: 10100002 

Device: partition=C: //这个说明BOOT MANAGER的BCD信息在C盘? 

Description: Wolf Boot Manager 

Display order: {ntldr} //菜单项排列顺序,第一个菜单项 

{882e394a-f543-11db-8ee8-00105ccdeb8f} //第二个菜单项 

 

 

Windows Legacy OS Loader 

------------------------ 

Identifier: {ntldr} //XP它用NTLDR这个程序进行引导 

Type: 10300006 

Device: partition=C: //XP在C盘 

Path: \ntldr //引导程序是\ntldr 

Description: Wolf XP //该菜单显示的文字 

 

 

Windows Boot Loader 

------------------- 

Identifier: {882e394a-f543-11db-8ee8-00105ccdeb8f} //这串数字是计算机生成的,是唯一的 

Type: 10200003 

Device: partition=D: //VISTA在D盘 

Path: \windows\system32\winload.exe //VISTA引导程序是\windows\system32\winload.exe 

Description: Wolf Vista //该菜单显示的文字 

Windows device: partition=D:  

Windows root: \windows 

 

简单讲解,上面只有3个入口(Entry),每个入口又有细分,最关键的是Identifier,很多人看不明白在BCD中,每个入口的唯一标识就是这个Identifier(简称Id)。

 

上面有个三个Id: 

{bootmgr} 

{ntldr} 

{882e394a-f543-11db-8ee8-00105ccdeb8f} 

我们要修改已经生成的入口,必须指定其Id。修改都是针对具体的Id进行的,后面我们会看到为什么上面3个Id中,前两个不像最后一个也由一大串数字组成呢?这也是新手最容易误解的原因。 

我只能告诉你{bootmgr}和{ntldr}其实是保留的Id,其中{bootmgr}是一个合理的BCD中必须有的ID,{ntldr}这个ID则用来存放XP这一类的老系统的引导菜单信息。

 

下面我们一步一步来生成上面的bcd信息 

由于我们还没有一个文件bcd,因此我们先创建一个,命令如下

bcdedit /createstore bcdwolf 

该命令创建一个空的bcd文件c:\bcdwolf;有了这个空bcd文件,我们就对它进行操作

C:\>bcdedit /store c:\bcdwolf /create {ntldr} /d "Wolf XP" 

说明:如果在bcdedit后面不加这个store参数,则是对系统bcd进行操作;加了则是对指定的文件bcd进行操作。

 

上述命令在c:\bcdwolf文件的BCD信息中创建菜单Wolf XP 

/store参数指对c:\bcdwolf进行操作,而不是对系统bcd 

/create参数指创建一个新菜单

{ntldr}是固定ID,凡在vista之前的操作系统菜单都用这个Id,如果你需要创建一个能引导XP的菜单项,就一定请用这个ID,不能指定为其他的或者像VISTA菜单那样让计算机为你生成随机ID 

/d参数是指定该菜单显示的文字

 C:\>bcdedit /store c:\bcdwolf /create /d "Wolf Vista" /application osloader 

The entry {882e394a-f543-11db-8ee8-00105ccdeb8f} was successfully created. 

创建菜单Wolf Vista 

由于是vista系统的菜单,参数改变为/application osloader 

Vista和Vista之前的系统,菜单创建方式是不同的 

C:\>bcdedit /store c:\bcdwolf /create {bootmgr} /d "Wolf Boot Manager" 

The entry {bootmgr} was successfully created. 

创建{bootmgr}入口,这个是主入口,不是菜单,建立的所有菜单都在这个入口中管理

 

 

C:\>bcdedit /store c:\bcdwolf /enum all 

显示我们创建的c:\bcdwolf的内容

 

Windows Boot Manager 

-------------------- 

Identifier: {bootmgr} 

Type: 10100002 

Description: Wolf Boot Manager 

 

Windows Boot Loader 

------------------- 

Identifier: {882e394a-f543-11db-8ee8-00105ccdeb8f} 

Type: 10200003  

Description: Wolf Vista 

 

Windows Legacy OS Loader 

------------------------ 

Identifier: {ntldr} 

Type: 10300006 

Description: Wolf XP 

 

设置{bootmgr}入口的device值 

C:\>bcdedit /store c:\bcdwolf /set {bootmgr} device partition=c:

操作成功完成。

 

设置{ntldr}入口的device值,这里实际是xp所在分区,它在c盘

 C:\>bcdedit /store c:\bcdwolf /set {ntldr} device partition=c: 

操作成功完成。

 

设置{ntldr}入口的path值,这里指定引导程序所在路径,xp是在c:\ntldr 

C:\>bcdedit /store c:\bcdwolf /set {ntldr} path \ntldr 

操作成功完成。

 

设置{882e394a-f543-11db-8ee8-00105ccdeb8f}入口的device值 

说明:{882e394a-f543-11db-8ee8-00105ccdeb8f}是菜单“Wolf Vista”的全局Id,这个Id是自动生成的,vista在d盘 

C:\>bcdedit /store c:\bcdwolf /set {882e394a-f543-11db-8ee8-00105ccdeb8f} device partition=d: 

操作成功完成。

 

设置{882e394a-f543-11db-8ee8-00105ccdeb8f}入口的path值,应该在d:\windows\system32\winload.exe 

C:\>bcdedit /store c:\bcdwolf /set {882e394a-f543-11db-8ee8-00105ccdeb8f} path \windows\system32\winload.exe 

操作成功完成。

 

将id为{ntldr}的菜单追加到多重菜单的最后 

C:\>bcdedit /store c:\bcdwolf /displayorder {ntldr} /addlast 

操作成功完成。

 

将id为{882e394a-f543-11db-8ee8-00105ccdeb8f}的菜单(即Wolf Vista)追加到多重菜单的最后 

C:\>bcdedit /store c:\bcdwolf /displayorder {882e394a-f543-11db-8ee8-00105ccdeb8f} /addlast 

操作成功完成。

 

设置{882e394a-f543-11db-8ee8-00105ccdeb8f}的windows device为d盘 

C:\>bcdedit /store c:\bcdwolf /set {882e394a-f543-11db-8ee8-00105ccdeb8f} osdevice partition=d: 

操作成功完成。

 

设置{882e394a-f543-11db-8ee8-00105ccdeb8f}的windows root为\windows

 C:\>bcdedit /store bcdwolf /set {882e394a-f543-11db-8ee8-00105ccdeb8f} systemroot \windows 

操作成功完成。

 

查看结果 

C:\>bcdedit /store bcdwolf 

Windows Boot Manager 

-------------------- 

Identifier: {bootmgr} 

Type: 10100002 

Device: partition=C: 

Description: Wolf Boot Manager 

Display order: {ntldr} 

{882e394a-f543-11db-8ee8-00105ccdeb8f} 

 

Windows Legacy OS Loader 

------------------------ 

Identifier: {ntldr}

Type: 10300006 

Device: partition=C: 

Path: \ntldr 

Description: Wolf XP 

 

Windows Boot Loader 

------------------- 

Identifier: {882e394a-f543-11db-8ee8-00105ccdeb8f} 

Type: 10200003 

Device: partition=D: 

Path: \windows\system32\winload.exe 

Description: Wolf Vista 

Windows device: partition=D: 

Windows root: \windows 

 

再增加一点内容,设置等待时间为30秒 

C:\>bcdedit /store bcdwolf /timeout 30 

操作成功完成。

 

将{882e394a-f543-11db-8ee8-00105ccdeb8f}设置为缺省菜单 

C:\>bcdedit /store bcdwolf /default {882e394a-f543-11db-8ee8-00105ccdeb8f} 

操作成功完成。

 

最后来看看 

C:\>bcdedit /store bcdwolf 

Windows Boot Manager 

-------------------- 

Identifier: {bootmgr} 

Type: 10100002 

Device: partition=C: 

Description: Wolf Boot Manager 

Default: {default} 

Display order: {ntldr} 

{default} 

Timeout: 30 

 

Windows Legacy OS Loader 

------------------------ 

Identifier: {ntldr} 

Type: 10300006 

Device: partition=C: 

Path: \ntldr 

Description: Wolf XP 

 

Windows Boot Loader 

------------------- 

Identifier: {default} 

Type: 10200003 

Device: partition=D: 

Path: \windows\system32\winload.exe 

Description: Wolf Vista 

Windows device: partition=D: 

Windows root: \windows

=======================================

 

你可以将文件BCD导入系统BCD 

bcdedit /import c:\bcdwolf 

你也可以备份系统BCD到文件 

bcdedit /export e:\bcdbak  

======================== 

整个过程是这样的: 

先用/create 创建3个入口

再用/set 设置每个入口下面具体的值,比如device, path等等

 最后用/displayorder 将建好的每个入口(菜单项)一个一个加入到引导菜单中

其他还可以用/timeout 设置等待时间 

以及用/default 设置缺省菜单

上面操作中的“入口”,实际都是用花括号中的Id来表示的 

================================== 

设置好系统BCD之后,重启计算机,并不能保证成功进行多重引导。因为BCD要起作用还必须依赖于C:\BOOT文件夹及C:\BOOTMGR这个文件。其中C:\BOOTMGR是真正的开机引导程序,而C:\BOOT文件夹中有一个名为BCD的文件(大家可以用bcdedit /store c:\boot\bcd /enum all查看内容),以及一个FONT子文件夹,里面含有字体文件,估计是用于开机引导菜单的显示。

 

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1934 更新时间:2017-2-24 20:38:47  【打印此页
关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修