bcdedit在不同的 Windows 安装之间设置双启动所需的命令是什么?5
我最近将 Windows 8 安装到单独的硬盘驱动器1 上。现在安装了 Windows 8,我想双引导回到 Windows 7。
我有我的两个2硬盘:

所以你可以看到我有两个磁盘,分区包含 Windows:
\\PhysicalDisk0(分区 0 3 )\\PhysicalDisk21 部分)我想弄清楚如何使用bcdedit来指示引导 Windows 的东西还有另一个 Windows 安装。
bcdedit现在运行,它显示当前配置:
C:\WINDOWS\system32>bcdedit
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
description Windows Boot Manager
locale en-US
inherit {globalsettings}
integrityservices Enable
default {current}
resumeobject {ce153eb7-3786-11e2-87c0-e740e123299f}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \WINDOWS\system32\winload.exe
description Windows 8
locale en-US
inherit {bootloadersettings}
recoverysequence {ce153eb9-3786-11e2-87c0-e740e123299f}
integrityservices Enable
recoveryenabled Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \WINDOWS
resumeobject {ce153eb7-3786-11e2-87c0-e740e123299f}
nx OptIn
bootmenupolicy Standard
hypervisorlaunchtype Auto
Run Code Online (Sandbox Code Playgroud)
我找不到有关Windows Boot Manager和Windows Boot Loader之间区别的任何文档。
有一些关于 的文档Bcdedit:
但是他们没有解释如何编辑二进制启动配置数据。
如果我不得不猜测,我会认为Windows 启动管理器会指示 BIOS应该运行什么程序。该程序将为用户提供一组引导选择。这使得Windows Boot Loader确实是一个特定的启动选择,它代表了 Windows 的特定安装。
如果是这种情况,我需要创建一个新的Windows 引导加载程序条目。
这意味着我可能想使用/create参数:
/创建
创建一个新的引导条目:
BCDEDIT [/存储 文件名] /创建[ ID ] / d 描述[/应用 的AppType | /继承[的AppType ] | /继承设备| /设备]
所以我假设一个语法:
>bcdedit /create /d "The old Windows 7" /application osloader
Run Code Online (Sandbox Code Playgroud)
whereapplication可以是以下类型之一:
Apptype Description
BOOTSECTOR The boot sector application
OSLOADER The Windows boot loader
RESUME A resume application
Run Code Online (Sandbox Code Playgroud)
不幸的是,唯一的文档osloader是“Windows 引导加载程序”。我看不出这如何区分一个硬盘上的Windows 8和另一个硬盘上的Windows 7。
/create引导加载程序的另一个可能参数是
>bcdedit /create /D "Windows Vista" /device "The Quick Brown Fox"
Run Code Online (Sandbox Code Playgroud)
不幸的是,缺少以下文档/device:
/设备
可选的。如果 id 未设置为众所周知的标识符,则用于将新引导条目指定为附加设备选项条目的选项。
由于我没有设置id为众所周知的标识符,因此我必须将/device设置为“用于将新引导条目指定为附加设备选项条目的选项”。我知道所有这些话;他们都是英文的。但我不知道它在说什么;那个顺序的那些词似乎是荒谬的。
所以我有点受阻。我不想像微软的 Dan Stolts那样,他试图使用 BCDEdit 破坏了他的硬盘:
当我通过玩 BCDEdit 来冲洗我的机器时,我发现没有任何内容特别有用。这个帖子就OK了,如果有更多的细节尤其是在/ set命令osdevice的,等等。所以一旦我得到了我的机器固定的,我介绍的解决方案和信息是这里...。
我的意思是,如果一个微软人甚至无法弄清楚如何使用 BCDEdit 来编辑他的 BCD,那我还有什么机会呢?
ntloader。我也不是在问双引导到 Linux;或如何引导至虚拟硬盘 (vhd) 映像。只是同一台机器上现有硬盘驱动器上的现代版本的 Windows。sna*_*yob 17
这不是对“背景”之前问题的直接回答,而是指向创建加载程序条目以引导两个(或更多)Windows Vista 和更高版本操作系统的替代解决方案。 另请参阅下面关于 Visual BCD 中使用的术语的评论家的第二个答案。
没有 guids、设备、对象、元素和废话,废话,废话。
我的背景(如果不感兴趣,请跳过并转到下面的解决方案):
我已经实现了 Visual BCD 编辑器。
在实施过程中,我不得不阅读 bcdedit 和 WMI BCD Provider 接口(编程接口,可与 C++、C# 一起使用)上的所有可用资源。微软的文档真的很差。
在 BCD 中有对象(加载程序、设置、设备元素)。尽管存在依赖关系,但没有关于对象之间连接的文档。
Windows 7 中有超过 140 个(!)BCD 对象的元素(属性)。我不知道某些元素的含义 - 根本没有文档。
在 Windows 8 中有新元素 - 我猜现在总数接近 180 (!!)。没有文档。
另一方面,有两个非常强大的工具可用于操作 BCD:bcdboot 和reagentc。
bcdboot - 创建/修复默认加载器以及 BCD 和启动环境作为一个整体!
试剂c - 安装/卸载恢复环境 (winre.wim)
这两种工具也没有很好的文档记录。
几乎不需要 bcdedit,因为只使用 bcdboot,您可以为 Windows Vista 和更高版本的 Windows 操作系统创建加载程序 - 您为最早的操作系统创建加载程序,而不是为最新的操作系统创建加载程序,瞧,您已经为双/多引导系统创建了引导环境:
假设您使用的是 Windows 8:
1. bcdboot f:\windows(这映射到 Windows 7 有问题的图片)
2. bcdboot c:\windows(这映射到 Windows 8)
完毕 !
启动过程的基本 Microsoft 规则:启动环境(和 BCD)应始终位于 [第一个磁盘 + 活动分区] 上。(在图片上 - 磁盘 2 => BIOS 启动顺序中的第一个磁盘!)
最后但并非最不重要的是,有用于写入 MBR 和 PBR(主引导和分区引导记录)的bootsect实用程序 - 现在是 Windows 8 的标准配置(之前仅在 WinRE 中可用)。
因此,可以仅使用 bootsect 和 bcdboot 来创建/修复双引导系统的所有引导实体。
我认为很多网站甚至在 Microsoft.com 上都很好地描述了 Vista 及更高版本的启动过程。
笔记:
关于 Windows BCD 的最佳站点之一是Geoff Chappell 的站点- 那里的信息比 Microsoft.com 上的详细。感兴趣的用户可以在那里找到非常有用的信息以及有关 bcdedit 文档的一些重要说明。
小智 14
当我格式化我的C:驱动器以重新安装 Windows 时,主引导记录被删除,Windows 7 安装程序无法恢复它。我可以使用bcdedit像 Visual BCD 编辑工具这样的 GUI工具,但是当应该有一个简单的命令bcdedit可以完成这项工作时,为什么我必须安装一些东西?在对在线帮助文件进行大量搜索后,我放弃了,bcdedit并在此处找到了离题的答案。要为第二个分区创建引导条目,您必须使用bcdboot.
假设您在C:\Windows:
bcdboot e:\windowsbcdboot c:\windows bcdedit /set {current} description "Windows 7 (Partition 1)" bcdedit /default {current} bcdedit /displayorder {default} /addfirst bcdedit /dispalyorder {current} /addfirst bcdedit /set {current} description "Windows 7 (Partition 2)" bcdedit /export D:\Saved_BCD_Settings\SavedBCD bcdedit /import D:\Saved_BCD_Settings\SavedBCD 虽然旧,但我想补充答案,因为上面的几个答案包含不正确的信息。它们可能有效,但您当然不需要外部程序,甚至bcdboot不需要这样做。供参考,正确信息如下:
BCD 是 Windows 启动配置。它包含许多部分,每个部分都由一个名称(称为“描述”)和一个看起来像这样的标识符标识:“{0743bb44-fda6-11e3-90c8-e3ee27f3aec6}”。
有几个“众所周知的标识符”,bcdedit 将在可能的地方使用它们,(除非您使用/v (详细)选项和/enum)。它们看起来像这样:“{bootmgr}”、“{memdiag}”。这些只是完整标识符的简写名称,但更易于使用。你可以使用。
您可以使用以下命令列出这些部分(“全部”是可选的,但没有它您将看不到完整列表):bcdedit /enum all.
典型输出:
C:\Windows\system32>bcdedit /enum all
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume1
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {92b1a1b0-c023-11e3-b3f1-ec4d94108574}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale en-US
inherit {bootloadersettings}
recoverysequence {92b1a1b2-c023-11e3-b3f1-ec4d94108574}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {92b1a1b0-c023-11e3-b3f1-ec4d94108574}
nx OptIn
Run Code Online (Sandbox Code Playgroud)
类似地,为了便于识别设备,它将使用类似 的格式\Device\HarddiskVolume2,但如果分配了字母(“C:”),它将通过字母(“C:”)识别分区。
生成的列表/enum all以可选的固件引导管理器部分开头(如果您的主板具有 EFI)。它的简写名称是"{fwbootmgr}"。它控制初始 EFI 启动选择(是使用通常的 Windows 启动管理器还是特定设备)。通常,您可以忽略 {fwbootmgr}(如果存在)。
下面是“Windows 启动管理器”(标识符“{bootmgr}”)。这是您将要使用的一种。它包含基本菜单的配置或您在启动时获得的任何其他内容(如果 Windows 启动管理器正在运行并且它可以首先找到 BCD)。
{bootmgr} 下面是任意数量的“Windows 引导加载程序”部分和可能的其他部分,每个部分控制一个操作或引导选项。
要进行双启动,您需要告诉 bcdedit 到您的第一个操作系统/copy的现有已知良好的Windows 启动加载程序条目。
/copy 复制现有条目{current}是要复制的条目的标识符。它是当前启动项的快捷方式。如果这不是您想要双启动的那个,请为您想要的那个使用正确的标识符。每个条目的描述文本将有助于找到您想要的条目。/d "Description for copied entry 将是新项目的描述它将制作该条目的副本,给它指定的描述,并用它给副本的新标识符进行响应:
bcdedit /copy {current} /d "Copy of my current Windows Boot Loader"
The entry was successfully copied to {5599a3fc-e4ee-11e7-a5f3-c86000d0b92a}.
Run Code Online (Sandbox Code Playgroud)
这将创建一个具有正确名称的独立条目,现在您需要告诉它要做什么。由于最近的操作系统几乎没有任何变化,您只需将设备和 osdevice 设置为您的 Win7 分区,它可能会工作。如果需要,在正常启动到 Win7 时查看 /enum 的输出,并复制它似乎期望的条目。但通常情况下,暂时为您的第二个操作系统分配一个字母就足够了,例如“Q”,然后命令是:bcdedit /set {NEW_IDENTIFIER} device partition=Q:或其他东西,对于osdevice. bcdedit 将整理驱动器号,见下文。一旦在 bcd 中使用了临时驱动器号,您就可以删除它。
接下来使用 将其添加到 {bootmgr} 中的条目列表中bcdedit /displayorder {NEW_ID} /addlast,并且 - 至关重要的是 - 告诉 bcd 使用bcdedit /set {bootmgr} displaybootmenu Yes.
完毕。
需要明确的是,当您的新设备“应该是 C:”时,您无需担心它会被识别为 Q:(或其他任何内容)。bcdedit 存储硬盘驱动器 ID,而不是字母。纯粹是接受和展示 Q: 是有帮助的。如果设备有字母,它会默认显示字母而不是设备 ID,以方便您使用。您可以通过从 DISKPART 或 DISKMGMT.MSC 中的第二个操作系统中删除或分配字母来看到这一点,/enum 的输出将立即恢复为 \Device。它实际上保存了正确的硬盘驱动器 ID,当它用于启动时,Windows 会找到该设备——为了方便起见,它从未真正保存过。
关于在 Visual BCD 中使用与 Microsoft 用于 bcdedit 相同的术语的原始问题中的评论家的一些说明。
BCD 概念是由 Microsoft 开发的。它有自己的术语。我不认为我可以改变它。我只能延长它。
Microsoft 提供了两种访问/编辑 BCD 的方法:
两个接口都讨论 BCD 对象和元素。这是在编程/计算机以及其他人类领域中使用的一般概念。我们甚至可以进入哲学,它使用对象、属性和关系的术语来描述世界和宇宙。
BCD WMI 提供程序访问更加灵活,因为它使程序员可以访问 BCD 中的每个对象和元素并自由操作它们。
Visual BCD 充分利用了 BCD WMI Provider Interface 并实现了与我们使用 regedit.exe 访问 Windows 注册表相同的访问方式。此外,该工具自动执行两项主要任务 -创建加载程序和双引导修复。没有其他工具提供这种一键式自动功能。我会说这是新的术语和新的抽象层次。我不会改变微软创建的基础,我只能在它上面构建。
新手用户只需点击一个按钮,即可进行复杂的操作!不需要背景! 您甚至不必知道您安装了多少个 Windows 版本 - 该工具会尝试找到所有版本,然后如果 BCD 中不存在相应的加载程序,则为它们创建加载程序- 使用的术语 - “创建缺少的 Windows 加载程序” - 我认为每个说英语的人都能理解/点击/确认这样的操作还是我错了?
BCD 中对象和元素的复杂性是很自然的,因为该概念涵盖了启动新旧 Windows 操作系统以及 Linux、Unix 等外国操作系统。此外,它是在各种设备上进行 MBR 启动和 EFI 启动的一般概念。
BCD 最复杂的部分是设备概念。你有分区设备、ramdisk 设备、文件设备、定位设备——你必须花一些时间来理解它,我认为这不适合普通的 Windows 用户。论坛上到处都是关于磁盘分区的问题,这是一个远没有那么复杂的话题。例如,许多 Windows 用户甚至不知道主分区和逻辑分区之间的区别。如果要双/多引导,则必须了解分区。如果你想建造第二间房子,你必须购买土地。
BCD 概念与 Vista 相同 - Windows 7/8 中仅定义了新元素。
我认为选择 BCD 的注册表结构是因为 Windows 已经实现了这个接口,而且它是一个可靠的事务接口,多年来被证明可以工作。如果 Windows 注册表概念一般是好的或坏的概念是另一个主题。
由程序员/开发人员创建一个更加用户友好的界面。我开始提供相同的界面 - 相当于 bcdedit 的 GUI - 后来可以根据使用模式在更高级别上抽象该界面。BCD 的结构化视图已经实现。这是基础抽象层。
下一个抽象级别将专注于对象之间的关系,因为 Microsoft 不涵盖此主题。不是一件容易的事。新术语带有抽象。
您需要一个BCDEdit /set命令来配置启动卷。然后通过调用命令将该条目添加到 Windows 启动管理器操作系统菜单BCDEdit /displayorder。
bcdedit /set {ntldr} 设备启动
它将识别其他操作系统的分区或以下命令
bcdedit /set {ntldr} 设备分区=C:
以下行通过将其添加到菜单来使该条目可启动
bcdedit /displayorder {ntldr} /addlast
您可以通过运行命令bcdedit /enum ACTIVE并查找 Windows Legacy OS Loader 条目来验证新条目是否会出现在启动菜单上。
注意:/create命令用于将非 Microsoft 操作系统添加到引导加载程序条目。
有关这方面的更多信息,您可以阅读这篇源文章
关于您关于“ Windows启动加载程序和启动管理器之间的区别”的问题
来自维基百科
当计算机找到 Windows 引导加载程序(Windows 操作系统的一部分,负责查找 Microsoft Windows 并启动它)时,Windows NT 启动过程就会开始。在 IA-32 或 x64 系统上,引导加载程序称为 Windows 引导管理器 (BOOTMGR)。然而,在 Windows Vista 之前,引导加载程序是 NTLDR。
另请参阅technet。
Visual BCD 编辑器是 Windows bcdedit 实用程序的高级 GUI 版本。
它是第一个实现 Windows 7/Vista 启动配置数据 (BCD) 存储的完整编辑的 GUI 工具。
可视化 BCD 编辑器的下载页面。
尝试使用工具中的修复选项。
| 归档时间: |
|
| 查看次数: |
162811 次 |
| 最近记录: |