无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 16055|回复: 55
打印 上一主题 下一主题

[求助]关于win7的vhd启动问题

[复制链接]
跳转到指定楼层
1#
发表于 2010-6-29 22:31:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想知道bcdboot的工作原理,看看它到底做了哪些操作

以下操作在PE1.x完成
1.我用特殊工具建立了一个固定大小的vhd,并用vdk 挂载为虚拟盘,把虚拟盘格式化为NTFS
2.用imagex /apply部署install.wim 到虚拟盘上。所选的映像为windows 7 旗舰版

一个windows 7的VHD在PE1.x下自此做完

==================================================
我想用bcdboot 虚拟盘:\windows /s 引导分区:  来完成引导处理,但未成功

随后我用chenall 的NT通用启动盘来引导VHD:
第一次:出现0x7B,自动重启
第二次:成功引导,不过出现这个:



怎样解决?

[ 本帖最后由 zhhsh 于 2010-7-1 15:11 编辑 ]
推荐
发表于 2010-6-30 00:59:23 | 只看该作者
在pe的1.x版本下,正式版的windows7(版本号是7600的rtm)的bcdboot命令不能运行,要用7000的bcdboot
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=143569&highlight=

bcdboot_v7000.zip (68.48 KB, 下载次数: 164)

如果你用这个bcdboot还不能引导的话,或许你生成vhd和windows7的diskpart建立的vhd有不同的地方
这个bcdboot大概的做的就是把bcdedit的工作给自动化了,它会从windows\boot\pcat目录下复制bootmgr到活动分区,复制pcat下的有bootmgr.exe.mui语言文件的各国语言的目录和memtest.exe到活动分区的boot目录,然后自动生成boot目录下的bcd,在生成bcd的过程中还会加入windows7特有的winre(以前的vista版本默认是没有winre)的启动项,winre的目录在%systemdrive%\recovery目录下面的一个16进制数字串(这个数字串就是bcd中recoverysequence条目对应的{id})命名的目录下,有boot.sdi和winre.wim两个文件,windows7提供了一个命令 reagentc 来配置winre,再详细的就不清楚了

[ 本帖最后由 yueyezhan 于 2010-6-30 01:24 编辑 ]

点评

误操作点了'反对'(想点鼠标切换焦点时误点了), 没找到取消的方法, 抱歉  详情 回复 发表于 2015-8-21 17:15
回复

使用道具 举报

3#
 楼主| 发表于 2010-6-30 08:27:43 | 只看该作者

回复 #2 yueyezhan 的帖子

生成vhd和windows7的diskpart建立的vhd没有不同,只是挂载方式不同
回复

使用道具 举报

4#
 楼主| 发表于 2010-6-30 08:38:08 | 只看该作者
我在PE3.0附加VHD,然后用  bcdboot 虚拟盘:\windows /s 引导分区:
成功了,为什么要附加VHD才行?非得bcdboot要访问bfsvc?

bcdboot是否动了win7内核?
回复

使用道具 举报

5#
发表于 2010-6-30 09:26:19 | 只看该作者
在生成bcd的过程中要从windows目录拷贝启动所需文件,在建立bcd的recoverysequence条目的时候,要把system32下的recovery目录下的winre.wim移动到分区下建立的recovery目录,还要从system32下把boot.sdi复制到winre.wim的同一个目录下,无论活动分区是不是和windows目录在不在一个分区,你用bcdboot命令的时候,它都要对windows目录进行读写操作,就要求挂载vhd指定windows目录;如果你取得windows\boot的权限,把这个boot下的pcat删除掉,bcdboot就会提示你无法建立启动文件

bcd要写到注册表,系统启动的时候也是要和硬盘id绑定的,但是不清楚是不是在bcdboot运行完就绑定了硬盘id

[ 本帖最后由 yueyezhan 于 2010-6-30 09:31 编辑 ]
回复

使用道具 举报

6#
发表于 2010-6-30 10:03:18 | 只看该作者
原帖由 zhhsh 于 2010-6-30 08:38 发表
我在PE3.0附加VHD,然后用  bcdboot 虚拟盘:\windows /s 引导分区:
成功了,为什么要附加VHD才行?非得bcdboot要访问bfsvc?

bcdboot是否动了win7内核?

在win7/pe 3.0下用bcdboot,如果系统源在挂载的vhd上,bcdboot会自动把bcd中的device和osdevice两项设成vhd=[c:]\win7.vhd(假设win7.vhd在c:盘)的。

但在xp/vista内核下,用各种方法挂载的vhd,bcdboot是不能意识到源是否是vhd文件上,所以device和osdevice只会成为partition=e:之类的项。在xp/vista下(pe 1.x/2.x),bcdboot后,还要手动用bcdedit把device和osdevice路径设成vhd
回复

使用道具 举报

7#
发表于 2010-6-30 10:04:37 | 只看该作者
至于chenall的软盘,以前说过,这个只能引导安装完成的nt 6.x,不能引导第一次启动时的nt 6.x,因为第一次启动时对bcd文件位置比较严格。
回复

使用道具 举报

8#
 楼主| 发表于 2010-6-30 12:03:37 | 只看该作者
原帖由 fujianabc 于 2010-6-30 10:04 发表
至于chenall的软盘,以前说过,这个只能引导安装完成的nt 6.x,不能引导第一次启动时的nt 6.x,因为第一次启动时对bcd文件位置比较严格。



是否因为bcd 要储存有关磁盘的内容以致第一次0x7B?
回复

使用道具 举报

9#
发表于 2010-6-30 12:06:08 | 只看该作者
原帖由 zhhsh 于 2010-6-30 12:03 发表



是否因为bcd 要储存有关磁盘的内容以致第一次0x7B?

应该不会0x7b吧,直接用chenall的软盘第一次启动就是出现一楼的截图。第一次启动时要求bcd必须位于激活主分区上,不能在其他分区或设备上
回复

使用道具 举报

10#
 楼主| 发表于 2010-6-30 12:27:13 | 只看该作者
原帖由 fujianabc 于 2010-6-30 12:06 发表

应该不会0x7b吧,直接用chenall的软盘第一次启动就是出现一楼的截图。第一次启动时要求bcd必须位于激活主分区上,不能在其他分区或设备上


第一次这样:



第二次用chenall 的引导盘:


之后这样:
回复

使用道具 举报

11#
 楼主| 发表于 2010-6-30 12:37:29 | 只看该作者
bcdboot 会不会添加磁盘信息到BCD上?
回复

使用道具 举报

12#
发表于 2010-6-30 13:54:03 | 只看该作者
用imagex安装后,如果第一次启动出错的话,第二次再引导就会是第三张图片的样子

nt6的启动和硬盘id有关联的,你的硬盘id(mbr签名),就是用diskpart的uniqueid disk命令看到的数字串是和注册表的HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\MultifunctionAdapter\0\DiskController\0\DiskPeripheral\0右侧的Identifier的值的第二段关联的
回复

使用道具 举报

13#
发表于 2010-6-30 15:17:03 | 只看该作者
原帖由 zhhsh 于 2010-6-30 12:37 发表
bcdboot 会不会添加磁盘信息到BCD上?

会的,建议不要用chenall的软盘了。

看我6楼的回复应该就能解决问题了。

另外,你的vhd文件上是怎么建立新分区的?
回复

使用道具 举报

14#
 楼主| 发表于 2010-6-30 15:19:14 | 只看该作者
谢谢各位帮忙,我试试
回复

使用道具 举报

15#
 楼主| 发表于 2010-6-30 15:24:19 | 只看该作者
原帖由 fujianabc 于 2010-6-30 15:17 发表

会的,建议不要用chenall的软盘了。

看我6楼的回复应该就能解决问题了。

另外,你的vhd文件上是怎么建立新分区的?


我给你一个创建带有分区的VHD工具玩玩,但它只能创建固定大小的VHD

命令如下:
  1. VHD.cmd VHD路径 VHD大小(例如25G、100M)
复制代码
里面的vdk用来挂载的

这个是用bootland上的HDDIMAGE修改而成的

[ 本帖最后由 zhhsh 于 2010-6-30 15:26 编辑 ]

VHD.rar

215.26 KB, 下载次数: 61, 下载积分: 无忧币 -2

回复

使用道具 举报

16#
发表于 2010-6-30 16:26:33 | 只看该作者

加vhd到bcd菜单

注意bcd的路径。



for /f "delims={,} tokens=2" %%a in ('bcdedit /store i:\boot\bcd /create  /d "Windows 7 VHD" -application osloader') do set guid=%%a

bcdedit /store i:\boot\bcd /set {%guid%} device vhd="[G:]\WIN7\system.vhd"
bcdedit /store i:\boot\bcd /set {%guid%} path \windows\system32\winload.exe
bcdedit /store i:\boot\bcd /set {%guid%} locale zh-CN
bcdedit /store i:\boot\bcd /set {%guid%} inherit {bootloadersettings}
bcdedit /store i:\boot\bcd /set {%guid%} osdevice vhd="[G:]\WIN7\system.vhd"
bcdedit /store i:\boot\bcd /set {%guid%} systemroot \windows
bcdedit /store i:\boot\bcd /set {%guid%} nx optin
bcdedit /store i:\boot\bcd /set {%guid%} detecthal yes

bcdedit /store i:\boot\bcd /displayorder {%guid%} /addlast

bcdedit /store i:\boot\bcd /timeout 5
回复

使用道具 举报

17#
发表于 2010-6-30 16:31:23 | 只看该作者

虚拟盘不必加引导

在硬盘上加引导,必须用bootmgr加载vhd文件。
回复

使用道具 举报

18#
 楼主| 发表于 2010-6-30 16:50:38 | 只看该作者
bcdedit 在PE1.x运行bcdedit /store i:\boot\bcd /set {%guid%} osdevice vhd="[G:]\WIN7\system.vhd"出错
说什么不支持参数
回复

使用道具 举报

19#
发表于 2010-6-30 17:06:26 | 只看该作者

回复 #18 zhhsh 的帖子

我的没问题。
我用的pe是TangoPE.iso(天使)

你把一下内容复制到一个文本文件里,改后缀为cmd文件。注意bcd文件位置还有你的vhd文件位置。记得路径下要有bcdedit.exe文件。
for /f "delims={,} tokens=2" %%a in ('bcdedit /store i:\boot\bcd /create  /d "Windows 7 VHD" -application osloader') do set guid=%%a

bcdedit /store i:\boot\bcd /set {%guid%} device vhd="[G:]\WIN7\system.vhd"
bcdedit /store i:\boot\bcd /set {%guid%} path \windows\system32\winload.exe
bcdedit /store i:\boot\bcd /set {%guid%} locale zh-CN
bcdedit /store i:\boot\bcd /set {%guid%} inherit {bootloadersettings}
bcdedit /store i:\boot\bcd /set {%guid%} osdevice vhd="[G:]\WIN7\system.vhd"
bcdedit /store i:\boot\bcd /set {%guid%} systemroot \windows
bcdedit /store i:\boot\bcd /set {%guid%} nx optin
bcdedit /store i:\boot\bcd /set {%guid%} detecthal yes

bcdedit /store i:\boot\bcd /displayorder {%guid%} /addlast

bcdedit /store i:\boot\bcd /timeout 5
回复

使用道具 举报

20#
发表于 2010-6-30 17:10:48 | 只看该作者

创建vhd文件

可以用DiskGenius创建vmware虚拟磁盘
然后用StarWind Converter再转成vhd文件。
这样就可以创建动态vhd文件了。
回复

使用道具 举报

21#
发表于 2010-6-30 17:47:06 | 只看该作者
原帖由 zhhsh 于 2010-6-30 16:50 发表
bcdedit 在PE1.x运行bcdedit /store i:\boot\bcd /set {%guid%} osdevice vhd="[G:]\WIN7\system.vhd"出错
说什么不支持参数

你用的是vista的bcdedit ?

要用nt 6.1的bcdedit才能支持vhd,另外,把引号去掉试试
回复

使用道具 举报

22#
发表于 2010-6-30 17:48:32 | 只看该作者
原帖由 hooer 于 2010-6-30 17:10 发表
可以用DiskGenius创建vmware虚拟磁盘
然后用StarWind Converter再转成vhd文件。
这样就可以创建动态vhd文件了。

比较麻烦,等diskgenius直接支持vhd格式就方便了。
回复

使用道具 举报

23#
 楼主| 发表于 2010-6-30 17:53:49 | 只看该作者
如果懂一点磁盘相关的结构就可以编写VHD分区软件
回复

使用道具 举报

24#
 楼主| 发表于 2010-6-30 18:03:24 | 只看该作者
出现这样:


bcdedit版本为6.1.7600.16385
用的PE为0PE
回复

使用道具 举报

25#
 楼主| 发表于 2010-6-30 18:13:20 | 只看该作者
换了PE就行了,
第一次启动出现蓝屏,为什么?

第二次没有问题了,成功安装。

fujianabc大帮忙测试一下

[ 本帖最后由 zhhsh 于 2010-6-30 18:20 编辑 ]
回复

使用道具 举报

26#
发表于 2010-6-30 18:21:47 | 只看该作者
原帖由 fujianabc 于 2010-6-30 17:48 发表

比较麻烦,等diskgenius直接支持vhd格式就方便了。


用winimage就可以把固定的vhd转成动态的
回复

使用道具 举报

27#
发表于 2010-6-30 18:59:37 | 只看该作者
原帖由 zhhsh 于 2010-6-30 18:13 发表
换了PE就行了,
第一次启动出现蓝屏,为什么?

第二次没有问题了,成功安装。

fujianabc大帮忙测试一下

你用的什么pe?估计是pe本身的问题。

我之前经常在xp/vista下用vhdtool创建vhd,vhdmount挂载,diskpart分区格式化vhd。然后imagex+bcdboot再bcdedit修改osdevice和device
回复

使用道具 举报

28#
 楼主| 发表于 2010-6-30 22:17:38 | 只看该作者
你可能看错意思,我是指

第一次启动VHD出现0x7B蓝屏
第二次启动VHD成功,完成安装

我唯一不明白为什么第一次启动VHD出现0x7B蓝屏
是不是一定用bcdboot 对VHD里的系统进行处理

请fujianabc 用我前面发的工具来测试一下

[ 本帖最后由 zhhsh 于 2010-6-30 22:22 编辑 ]
回复

使用道具 举报

29#
 楼主| 发表于 2010-6-30 22:20:14 | 只看该作者
我看bcdboot 应该没有什么操作
BCDboot 命令行选项
BCDboot 是一种用于快速设置系统分区或修复系统分区上的启动环境的工具。系统分区是通过从已安装的 Windows(R) 映像复制一小部分启动环境文件来设置的。BCDboot 还会在系统分区上创建引导配置数据 (BCD) 存储,该存储中包含一个新的引导项,可让您引导到已安装的 Windows 映像。
可以从 Windows(R) PE 运行 BCDboot。有关 Windows PE 的信息,请参阅 Windows PE 操作实例
BCDboot 包含在 Windows&reg; 7 和 Windows Server&reg; 2008 R2 的 %WINDIR%\System32 文件夹内。Windows OEM 预安装工具包 (OPK) 和 Windows 自动安装工具包 (AIK) 也提供了 BCDboot,位置在 %Program Files%\<version>\Tools 目录下,其中 <version> 是 Windows OPK 或 Windows AIK。
BCDboot 从计算机上已有的 Windows 映像复制一套启动环境文件。BCDboot 可以从 Windows Vista&reg;、Windows Server&reg; 2008、Windows 7 或 Windows Server 2008 R2 的映像复制启动环境文件。有关将 Windows 映像应用于系统的信息,请参阅捕获和应用 Windows 映像
BCDboot 使用 %WINDIR%\System32\Config\BCD-Template 文件在系统分区上创建新的 BCD 存储并初始化 BCD 启动环境文件。可以在 BCD-Template 文件中定义特定的 BCD 设置。该工具还将最新版本的启动环境文件从操作系统映像 %WINDIR%\boot 文件夹和 %WINDIR%\System32 文件夹复制到系统分区中。
BCDboot 将文件复制到固件所标识的默认系统分区。您可以使用分区工具(例如 DiskPart)创建此分区。不必为了便于 BCDboot 查找而指定此分区的驱动器号。有关详细信息,请从命令行参阅 DiskPart 帮助,或访问 Diskpart 命令行语法(可能为英文网页)
  • 在基于 BIOS 的系统上,系统分区是使用主引导记录 (MBR) 磁盘格式的磁盘上的活动分区。BCDboot 会在系统分区上创建 \Boot 目录,并将所有需要的引导环境文件都复制到此目录中。
  • 在基于统一可扩展固件接口 (UEFI) 的系统上,EFI 系统分区是使用 GUID 分区表 (GPT) 磁盘格式的磁盘上的系统分区。BCDboot 会创建 \Efi\Microsoft\Boot 目录,并将所有需要的引导环境文件都复制到此目录中。
BCDboot 可以将现有的启动环境更新到系统分区。Windows 映像中较新的文件版本会复制到系统分区中。
如果系统分区中已存在 BCD 存储,则:
  • BCDboot 将根据 BCD-Template 文件中的设置,在现有的 BCD 存储中创建一个新启动项,并删除引用同一个 Windows 映像的所有重复的启动项。
  • 如果已存在 Windows 映像的启动项,并且除了默认值以外还对该启动项启用了其他 BCD 设置,则下次运行 BCDboot 时,可使用 /m 选项将 OS 加载程序 GUID 所标识的现有启动项合并到 BCDboot 创建的新启动项,以此来保留这些设置。
BCDboot 命令行选项下列命令行选项可用于 BCDboot.exe。
BCDBOOT source [/l locale] [/s volume-letter] [/v] [/m [{OS Loader GUID}]]
选项描述source
指定作为源的 Windows 目录的位置,将从该目录中复制启动环境文件。
/l
可选。指定区域设置。默认值为美国英语。
/s
可选。指定系统分区的卷号。默认值是固件所标识的系统分区。
/v
可选。启用详细模式。
/m
可选。默认情况下,仅合并全局对象。
如果指定了 OS Loader GUID,则合并系统模板中给定的加载程序对象以生成可启动项。

示例
  • 此示例使用 C: 卷上安装的操作系统映像中的文件来初始化系统分区。
    bcdboot C:\Windows
  • 此示例将默认 BCD 区域设置设为日语,并将 BCD 文件复制到已使用 DiskPart 分配了卷号 S: 的系统分区。
    bcdboot C:\Windows /l ja-jp /s S:
  • 此示例将当前 BCD 存储中由给定 GUID 标识的操作系统加载程序合并到新的 BCD 存储中。
    bcdboot c:\windows /m {d58d10c6-df53-11dc-878f-00064f4f4e08}

回复

使用道具 举报

30#
发表于 2010-6-30 22:52:01 | 只看该作者
原帖由 zhhsh 于 2010-6-30 22:17 发表
你可能看错意思,我是指

第一次启动VHD出现0x7B蓝屏
第二次启动VHD成功,完成安装

我唯一不明白为什么第一次启动VHD出现0x7B蓝屏
是不是一定用bcdboot 对VHD里的系统进行处理

请fujianabc 用我前面发 ...


不是必须要用bcdboot,你用bcdedit来手动生成bcd也是一样的,只是在device和osdevice条目中要是用vhd=[driver:]\ ,不过别的工具就没有试过了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-25 02:26

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表