无忧启动论坛

标题: BCD文件中对于第二硬盘,第三硬盘的写法到底哪种是正确的? [打印本页]

作者: chinaren12    时间: 2019-8-20 12:16
标题: BCD文件中对于第二硬盘,第三硬盘的写法到底哪种是正确的?
本帖最后由 chinaren12 于 2019-8-26 10:06 编辑

起因是给一台笔记本加了一个固态,这个固态在系统中被认为是HD1,此笔记本为纯uefi启动

然后我把HD0的esp分区,msr分区,c盘全部克隆到HD1上面。

企图让系统从hd1上引导系统。结果bios里面不认,只能认到hd0上的esp分区,

于是在pe里面修改bcd文件。

发现bcd文件中的启动分区写法和bcd编辑工具不一样。
原版的bcd文件里面对于第一个启动分区的写法是hd0(0,2)

而用easybcd和bootice编辑bcd文件后得到的写法是启动分区=f:或者是启动分区=g:。如果按照原版bcd的文件的写法,第二个硬盘的启动分区应该写成

HD1(1,2)这样的形式。但是easybcd和bootice都不允许这样修改,只能选定某个分区。

这样的指定盘符的写法,想在pe里面修改这个启动分区又不能修改。

那么,我想请问下,这个到底哪种写法是正确的?是HD0(0,2)还是e: ,f:,g:,h:这样的盘符写法?





固件启动管理器
---------------------
标识符                  {fwbootmgr}
displayorder            {bootmgr}
                        {73da0478-64e9-11e9-bc12-806e6f6e6963}
                        {2cb82594-63e8-11e9-bc06-806e6f6e6963}
timeout                 0

Windows 启动管理器
--------------------
标识符                  {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  zh-CN
inherit                 {globalsettings}
default                 {current}
resumeobject            {a6f12ef4-89a8-11e9-a960-adc91c04e001}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

固件应用程序(101fffff)
-------------------------------
标识符                  {2cb82594-63e8-11e9-bc06-806e6f6e6963}
description             USB Drive (UEFI)

固件应用程序(101fffff)
-------------------------------
标识符                  {73da0478-64e9-11e9-bc12-806e6f6e6963}
description             Internal Hard Disk or Solid State Disk

Windows 启动加载器
-------------------
标识符                  {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 10
locale                  zh-CN
inherit                 {bootloadersettings}
recoverysequence        {a6f12ef6-89a8-11e9-a960-adc91c04e001}
displaymessageoverride  Recovery
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {a6f12ef4-89a8-11e9-a960-adc91c04e001}
nx                      OptIn
bootmenupolicy          Standard

Windows 启动加载器
-------------------
标识符                  {a6f12ef6-89a8-11e9-a960-adc91c04e001}
device                  ramdisk=[\Device\HarddiskVolume4]\Recovery\WindowsRE\Winre.wim,{a6f12ef7-89a8-11e9-a960-adc91c04e001}
path                    \windows\system32\winload.efi
description             Windows Recovery Environment
locale                  zh-CN
inherit                 {bootloadersettings}
displaymessage          Recovery
osdevice                ramdisk=[\Device\HarddiskVolume4]\Recovery\WindowsRE\Winre.wim,{a6f12ef7-89a8-11e9-a960-adc91c04e001}
systemroot              \windows
nx                      OptIn
bootmenupolicy          Standard
winpe                   Yes

从休眠状态恢复
---------------------
标识符                  {a6f12ef4-89a8-11e9-a960-adc91c04e001}
device                  partition=C:
path                    \WINDOWS\system32\winresume.efi
description             Windows Resume Application
locale                  zh-CN
inherit                 {resumeloadersettings}
recoverysequence        {a6f12ef6-89a8-11e9-a960-adc91c04e001}
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
filedevice              partition=C:
filepath                \hiberfil.sys
bootmenupolicy          Standard
debugoptionenabled      No

Windows 内存测试程序
---------------------
标识符                  {memdiag}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\memtest.efi
description             Windows 内存诊断
locale                  zh-CN
inherit                 {globalsettings}
badmemoryaccess         Yes

EMS 设置
------------
标识符                  {emssettings}
bootems                 No

调试器设置
-----------------
标识符                  {dbgsettings}
debugtype               Local

RAM 故障
-----------
标识符                  {badmemory}

全局设置
---------------
标识符                  {globalsettings}
inherit                 {dbgsettings}
                        {emssettings}
                        {badmemory}

启动加载器设置
--------------------
标识符                  {bootloadersettings}
inherit                 {globalsettings}
                        {hypervisorsettings}

虚拟机监控程序设置
-------------------
标识符                  {hypervisorsettings}
hypervisordebugtype     Serial
hypervisordebugport     1
hypervisorbaudrate      115200

恢复加载器设置
----------------------
标识符                  {resumeloadersettings}
inherit                 {globalsettings}

设备选项
--------------
标识符                  {a6f12ef7-89a8-11e9-a960-adc91c04e001}
description             Windows Recovery
ramdisksdidevice        partition=\Device\HarddiskVolume4
ramdisksdipath          \Recovery\WindowsRE\boot.sdi


作者: lhc0688    时间: 2019-8-20 12:21
hd0应该指磁盘编号,f:g:h:是卷标号
作者: chinaren12    时间: 2019-8-20 12:30
lhc0688 发表于 2019-8-20 12:21
hd0应该指磁盘编号,f:g:h:是卷标号

是的,但是一般的bcd编辑工具都是通过指定盘符来确认启动分区的。比如我在pe下面,
指定启动盘为g:盘,但是如果按照物理顺序来,这个g:盘是HD1(1,3),那么在系统刚开始启动的时候,bcd应该无法认识g盘,他只能通过第2块硬盘的第三个分区是启动分区来识别。

那么在这种情况下,bcd里面应该如何写呢?
作者: 心零    时间: 2019-8-20 12:35
楼主你还是先搞清楚BIOS的启动顺序设置。

删除HD0的esp分区。

BIOS设置HD1为第一启动。

作者: chinaren12    时间: 2019-8-20 12:37
心零 发表于 2019-8-20 12:35
楼主你还是先搞清楚BIOS的启动顺序设置。

删除HD0的esp分区。

无法启动。就是这么简单
作者: 心零    时间: 2019-8-20 12:50
chinaren12 发表于 2019-8-20 12:37
无法启动。就是这么简单

无法用简单的语言告诉你怎么做·····
作者: chinaren12    时间: 2019-8-20 12:53
心零 发表于 2019-8-20 12:50
无法用简单的语言告诉你怎么做·····

我后面的解决办法就是用hd0上的bcd引导HD1上的启动分区。

我跟你说,我把hd0拆掉都无法引导。后来没办法了,只能修改hd0上的bcd文件,通过hd0引导hd1上的系统。

bios里面锁定为uefi启动,secure boot为锁定。

下回有机会你试试,
作者: liujun2000    时间: 2019-8-20 14:14
先用工具安装 再用工具查看 论坛有很多这种工具
VHDX_OneKey_2013
WinNTSetup_v3.9.4.0
BOOTICE
作者: chinaren12    时间: 2019-8-20 14:47
liujun2000 发表于 2019-8-20 14:14
先用工具安装 再用工具查看 论坛有很多这种工具
VHDX_OneKey_2013
WinNTSetup_v3.9.4.0

别人的要求就是系统不能动,我直接克隆过去,不过是从hd0改到HD1而已,跟vhd有什么关系呢?

之前的hd0是机械硬盘,现在把系统改到hd1固态硬盘上面。

这跟winntsetup也没关系呀,


作者: liujun2000    时间: 2019-8-20 15:04
本帖最后由 liujun2000 于 2019-8-20 15:08 编辑

操蛋
你不能在 第二硬盘 第一分区 安装一个系统 看看 软件是怎么写的啊
就几分钟时间搞定
比你在这里等回复 要快n倍


uefi启动 e盘启动后 变c盘

4444.png (47.79 KB, 下载次数: 53)

4444.png

5555.png (61.42 KB, 下载次数: 44)

5555.png

作者: chinaren12    时间: 2019-8-20 21:29
liujun2000 发表于 2019-8-20 15:04
操蛋
你不能在 第二硬盘 第一分区 安装一个系统 看看 软件是怎么写的啊
就几分钟时间搞定

你这个是纯UEFI启动不?
作者: 995070995    时间: 2019-8-21 13:25
我这是看看,懒的动脑筋了
作者: badgateway    时间: 2019-8-25 22:23
和楼主有同样的疑惑,用easybcd和bootice查看bcd文件,看到的启动分区是用盘符表示的,但是电脑启动读取BCD文件的时候并没有盘符的概念啊。BCD文件里定位启动分区会是WINDOWS系统分区的UUID吗?怎么证实这一点? 有没有BCD文件的二进制数据结构参考?
另外,我进PE偷偷删除了ESP和WINDOWS系统盘之间的一个分区,改变了WINDOWS系统盘的分区序号,win10系统仍然正常启动。
作者: chinaren12    时间: 2019-8-26 09:59
badgateway 发表于 2019-8-25 22:23
和楼主有同样的疑惑,用easybcd和bootice查看bcd文件,看到的启动分区是用盘符表示的,但是电脑启动读取BCD ...

同理,我也是很困惑。bcd文件里面到底是如何标识启动分区的。


作者: chinaren12    时间: 2019-8-26 10:07
固件启动管理器
---------------------
标识符                  {fwbootmgr}
displayorder            {bootmgr}
                        {73da0478-64e9-11e9-bc12-806e6f6e6963}
                        {2cb82594-63e8-11e9-bc06-806e6f6e6963}
timeout                 0

Windows 启动管理器
--------------------
标识符                  {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  zh-CN
inherit                 {globalsettings}
default                 {current}
resumeobject            {a6f12ef4-89a8-11e9-a960-adc91c04e001}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

固件应用程序(101fffff)
-------------------------------
标识符                  {2cb82594-63e8-11e9-bc06-806e6f6e6963}
description             USB Drive (UEFI)

固件应用程序(101fffff)
-------------------------------
标识符                  {73da0478-64e9-11e9-bc12-806e6f6e6963}
description             Internal Hard Disk or Solid State Disk

Windows 启动加载器
-------------------
标识符                  {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 10
locale                  zh-CN
inherit                 {bootloadersettings}
recoverysequence        {a6f12ef6-89a8-11e9-a960-adc91c04e001}
displaymessageoverride  Recovery
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {a6f12ef4-89a8-11e9-a960-adc91c04e001}
nx                      OptIn
bootmenupolicy          Standard

Windows 启动加载器
-------------------
标识符                  {a6f12ef6-89a8-11e9-a960-adc91c04e001}
device                  ramdisk=[\Device\HarddiskVolume4]\Recovery\WindowsRE\Winre.wim,{a6f12ef7-89a8-11e9-a960-adc91c04e001}
path                    \windows\system32\winload.efi
description             Windows Recovery Environment
locale                  zh-CN
inherit                 {bootloadersettings}
displaymessage          Recovery
osdevice                ramdisk=[\Device\HarddiskVolume4]\Recovery\WindowsRE\Winre.wim,{a6f12ef7-89a8-11e9-a960-adc91c04e001}
systemroot              \windows
nx                      OptIn
bootmenupolicy          Standard
winpe                   Yes

从休眠状态恢复
---------------------
标识符                  {a6f12ef4-89a8-11e9-a960-adc91c04e001}
device                  partition=C:
path                    \WINDOWS\system32\winresume.efi
description             Windows Resume Application
locale                  zh-CN
inherit                 {resumeloadersettings}
recoverysequence        {a6f12ef6-89a8-11e9-a960-adc91c04e001}
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
filedevice              partition=C:
filepath                \hiberfil.sys
bootmenupolicy          Standard
debugoptionenabled      No

Windows 内存测试程序
---------------------
标识符                  {memdiag}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\memtest.efi
description             Windows 内存诊断
locale                  zh-CN
inherit                 {globalsettings}
badmemoryaccess         Yes

EMS 设置
------------
标识符                  {emssettings}
bootems                 No

调试器设置
-----------------
标识符                  {dbgsettings}
debugtype               Local

RAM 故障
-----------
标识符                  {badmemory}

全局设置
---------------
标识符                  {globalsettings}
inherit                 {dbgsettings}
                        {emssettings}
                        {badmemory}

启动加载器设置
--------------------
标识符                  {bootloadersettings}
inherit                 {globalsettings}
                        {hypervisorsettings}

虚拟机监控程序设置
-------------------
标识符                  {hypervisorsettings}
hypervisordebugtype     Serial
hypervisordebugport     1
hypervisorbaudrate      115200

恢复加载器设置
----------------------
标识符                  {resumeloadersettings}
inherit                 {globalsettings}

设备选项
--------------
标识符                  {a6f12ef7-89a8-11e9-a960-adc91c04e001}
description             Windows Recovery
ramdisksdidevice        partition=\Device\HarddiskVolume4
ramdisksdipath          \Recovery\WindowsRE\boot.sdi


这是我自己的win10 BCD导出的数据,看上去也不全是C,D,E,F这样的表述,还有 partition=\Device\HarddiskVolume1


作者: badgateway    时间: 2019-8-26 21:16
cckp 发表于 2019-8-26 18:57
每个硬盘或分区都有guid之类的标记 一串数字 用于区分不同的硬盘。注册表里面有,和bcd配套的

我也猜测通过UUID定位win10系统分区是最合适的,但注册表或BCD编辑器看到的那些UUID既不是win10分区的分区UUID,也不是win10分区的卷UUID。
电脑启动,控制权交给bootmgfw.efi后,到底通过什么定位到win10的系统分区呢???
作者: badgateway    时间: 2019-8-28 14:47
找遍论坛,没找到关于这个的讨论
作者: lisd70    时间: 2020-2-29 13:28
学习来了,不知道U盘应该用哪个来表示
作者: haiuyan    时间: 2020-3-21 15:48
liujun2000 发表于 2019-8-20 15:04
操蛋
你不能在 第二硬盘 第一分区 安装一个系统 看看 软件是怎么写的啊
就几分钟时间搞定

这个bcd工具可否分享下,谢谢!
作者: liujun2000    时间: 2020-3-21 18:47
haiuyan 发表于 2020-3-21 15:48
这个bcd工具可否分享下,谢谢!

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3