简洁版本
bcdedit
在不同的 Windows 安装之间设置双重启动需要哪些命令? 5
长版本
我最近在单独的硬盘1上安装了 Windows 8。现在 Windows 8 已安装完毕,我想双启动回到 Windows 7。
我有两个硬盘:
所以您可以看到我有两个磁盘,其分区包含 Windows:
- Windows 7的:(
\\PhysicalDisk0
分区 0 3) - Windows 8:(
\\PhysicalDisk2
分区 1)
我想弄清楚的是如何使用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
我找不到文档关于Windows 启动管理器和Windows 启动加载程序。
研究成果
有一些关于以下内容的文档Bcdedit
:
但他们没有解释如何编辑二进制启动配置数据。
如果我不得不猜测,我认为Windows 启动管理器指示 BIOS 什么程序它应该运行。该程序将为用户提供一组启动选项。剩下的Windows 启动加载程序做一双特别的靴子选择,代表 Windows 的特定安装。
如果是这样的话,我需要创建一个新的Windows 启动加载程序入口。
这意味着我可能想要使用该/create
参数:
/创造
创建一个新的启动项:
bcd 编辑[/店铺 文件名] /创造[ID] /d 描述[/应用 应用类型| /继承[应用类型] | /继承设备| /设备]
因此我假设语法为:
>bcdedit /create /d "The old Windows 7" /application osloader
在哪里application
可以是下列类型之一:
Apptype Description
BOOTSECTOR The boot sector application
OSLOADER The Windows boot loader
RESUME A resume application
不幸的osloader
是,关于“Windows 引导加载程序”。我不明白这如何区分Windows 8在一块硬盘上,Windows 7的另外一个。
/create
引导加载程序的另一个可能参数是
>bcdedit /create /D "Windows Vista" /device "The Quick Brown Fox"
不幸的是缺少以下文档/device
:
/设备
可选。如果 id 未设置为众所周知的标识符,则用于将新启动项指定为附加设备选项项的选项。
由于我没有设置id
为众所周知的标识符,因此我必须设置/设备到“用于将新启动项指定为附加设备选项项的选项”。我认识所有这些单词;它们都是英语。但我不知道它在说什么;这些单词的顺序似乎毫无意义。
所以我有点不知所措。我不想像微软的 Dan Stolts 在尝试使用 BCDEdit 时损坏了他的硬盘:
当我使用 BCDEdit 弄坏我的机器时,我没有找到特别有用的内容。如果这篇文章有更多细节,尤其是关于 /set 命令 OSDevice 等,那就好了。所以,一旦我的机器修好了,我就记录了解决方案,信息如下这里...。
我的意思是,如果微软员工甚至不知道如何使用 BCDEdit 来编辑他的 BCD,那么我还有什么机会呢?
额外阅读
- BCDEdit 命令行选项
- 编辑
- 使用 BCDEdit 对启动管理器进行更改后,Server 2008 R2 或 Windows 7 系统将无法启动
- 可视化 BCD 编辑器4
- Windows 7 和 Windows 8 RTM 双启动设置
脚注
- 1由于 Windows 8 安装程序可能会损坏我的 Windows 7 安装,因此我决定拔掉我的“主要的”在安装过程中,硬盘驱动器。这是对为什么Windows 8 安装程序没有检测到现有的 Windows 7 安装。通常情况下,安装程序会自动创建双启动所需的条目。原因我问的问题很重要。
- 2确实有三个驱动器,但第三个只是大容量存储。第三个硬盘的存在与问题无关。我提到它只是为了防止有人想知道为什么屏幕截图中有 3 个硬盘而我只提到了 2 个。
- 3我随意开始对分区进行编号“零”;并不意味着分区从零开始编号。我之所以提到分区,是因为我不知道任何引导加载程序如何在不知道 Windows 安装位于哪个分区和哪个文件夹的情况下完成其工作。
- 4我问的是 BCDEdit。我试过可视化 BCD 编辑器. 这似乎是视觉的BCD 编辑器。也就是说,它是一个 GUI,但仍然使用与 BCDEdit 相同的术语,并且需要 BCD 未记录的相同知识。
- 5为简单起见,我们假设我想要双启动的所有 Windows 安装都是 Windows Vista 或更高版本,从而使它们都与 BCDEdit 和二进制引导加载程序兼容。另一种选择需要深入研究旧版本的复杂性
ntloader
。我也不是在问如何双启动 Linux;或者如何启动虚拟硬盘 (vhd) 映像。只是在同一台机器上的现有硬盘上安装现代版本的 Windows。
答案1
这不是“背景”之前的问题的直接答案,但指出了创建用于启动两个(或更多)Windows Vista 及更高版本操作系统的加载程序条目的替代解决方案。 另请参阅下面我关于对 Visual BCD 中使用的术语的批评的第二个回答。
没有引导、设备、对象、元素等等。
我的背景(如果不感兴趣请跳过并转到下面的解决方案):
我已经实现了 Visual BCD 编辑器。
在实现过程中,我必须阅读有关 bcdedit 和 WMI BCD 提供程序接口(编程接口,可用于 C++、C#)的所有可用资源。Microsoft 的文档确实很差。
BCD 中有对象(加载器、设置、设备元素)。尽管存在依赖关系,但没有关于对象之间连接的文档。
Windows 7 中的 BCD 对象有超过 140 个(!)元素(属性)。我不知道某些元素的含义——根本没有文档。
Windows 8 中有一些新元素 - 我猜现在总数已经接近 180 个了 (!!)。没有文档。
另一方面,有两个非常强大的实用程序可用于操作 BCD:bcdboot 和 agentc。
启动- 创建/修复默认加载器以及 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(主引导记录和分区引导记录)的实用程序 - 现在是 Windows 8 中的标准(以前仅在 WinRE 中可用)。
因此,仅使用 bootsect 和 bcdboot 就可以创建/修复双启动系统的所有启动实体。
我认为 Vista 及更高版本的启动过程在许多互联网站点(甚至在 Microsoft.com 上)上都有很好的描述。
笔记:
关于 Windows BCD 的最佳网站之一是Geoff Chappell 的网站- 那里的信息比 Microsoft.com 上的信息更详细。感兴趣的用户可以在那里找到非常有用的信息以及 bcdedit 文档中的一些重要说明。
答案2
当我格式化C:
驱动器以重新安装 Windows 时,主引导记录被删除,Windows 7 安装程序无法恢复它。我可以使用 GUIbcdedit
工具(如 Visual BCD Edit 工具),但为什么我必须安装某些东西,而一个简单的命令就可以bcdedit
完成这项工作?在搜索了大量在线帮助文件后,我放弃了,bcdedit
并在这里找到了隐藏在题外话中的答案。要为第二个分区创建引导项,您必须使用bcdboot
。
假设你位于C:\Windows
:
bcdboot e:\windows
bcdboot c:\windows
重新启动时,您将看到 Windows 启动菜单,其中包含两个 Windows 7 条目。如果您选择启动到 C:\Windows 的条目,您可以使用以下命令重命名此分区的条目:bcdedit /set {current} description "Windows 7 (Partition 1)"
这使得启动时引导的操作系统成为启动菜单中的默认条目:bcdedit /default {current}
这会将默认操作系统置于启动菜单中的启动第一项bcdedit /displayorder {default} /addfirst
或者您可以使启动时的操作系统成为启动菜单中的第一项:bcdedit /displayorder {current} /addfirst
现在重新启动并选择启动菜单中的第二项,该项应标记为“Windows 7”。启动到 E:\Windows 后,重命名启动时启动的操作系统:bcdedit /set {current} description "Windows 7 (Partition 2)"
测试启动菜单是否正常工作,并将 bcd 数据保存到未安装操作系统的分区:bcdedit /export D:\Saved_BCD_Settings\SavedBCD
如果你稍后搞乱了任何东西,你可以使用以下命令恢复 bcd 启动菜单:bcdedit /import D:\Saved_BCD_Settings\SavedBCD
答案3
虽然答案很老套,但我想补充一下,因为上面的几个答案包含不正确的信息。它们可能有效,但您肯定不需要外部程序,甚至不需要外部程序bcdboot
来执行此操作。作为参考,正确的信息如下:
如果是新手可以快速了解 BCD 背景
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
类似地,为了便于识别设备,它将使用类似的格式\Device\HarddiskVolume2
,但如果分配了分区,它将通过字母(“C:”)识别分区。
生成的列表以/enum all
可选的固件启动管理器部分开始(如果您的主板有 EFI)。它的简写名称是“{fwbootmgr}”。它控制初始 EFI 启动选择(是否使用通常的 Windows 启动管理器或特定设备)。通常,如果存在,您可以忽略 {fwbootmgr}。
下面是“Windows 启动管理器”(标识符“{启动管理器}”)。这是您将要使用的。它包含基本菜单的配置或启动时获得的其他任何内容(如果 Windows 启动管理器正在运行并且它可以首先找到 BCD)。
{bootmgr} 下面有任意数量的“Windows 启动加载程序”部分以及可能的其他部分,每个部分控制一个操作或启动选项。
使用 bcdedit 设置双启动(不需要任何其他东西)
要进行双启动,你需要告诉 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}.
这将创建一个具有正确名称的独立条目,现在您需要告诉它要做什么。由于最近的操作系统几乎没有任何变化,您只需将设备和操作系统设备设置为您的 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
。
完毕。
注意 - 在 BCD 中使用“奇数”或“错误”的驱动器号是安全的,并且如果 /enum 的输出包含它们也是安全的。
要清楚的是,您不必担心您的新设备被识别为 Q:(或其他任何名称),而它“应该是 C:”。bcdedit 存储的是硬盘驱动器 ID,而不是字母。它纯粹是为了方便起见而接受和显示 Q:。如果设备有字母,它会默认显示字母而不是设备 ID,以方便您使用。您可以通过从 DISKPART 或 DISKMGMT.MSC 中的第二个操作系统中删除或分配字母来查看这一点,/enum 的输出将立即恢复为 \Device。它实际上保存了正确的硬盘驱动器 ID,当使用它进行启动时,Windows 会找到该设备 - 字母是为了方便起见,实际上从未保存过。
答案4
您需要一个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 NT 启动过程开始,Windows 引导加载程序是 Windows 操作系统的一部分,负责查找 Microsoft Windows 并启动它。在 IA-32 或 x64 系统上,引导加载程序称为 Windows 引导管理器 (BOOTMGR)。然而,在 Windows Vista 之前,引导加载程序是 NTLDR。
另请参阅技术网。
可视化 BCD 编辑器是 Windows bcdedit 实用程序的高级 GUI 版本。
它是第一个实现对 Windows 7/Vista 启动配置数据 (BCD) 存储进行完整编辑的 GUI 工具。
下载页面用于可视化 BCD 编辑器。
尝试该工具中的修复选项。