2012-08-12 18:06:22 +0000 2012-08-12 18:06:22 +0000
123
123
Advertisement

如何修复Windows 8 EFI启动加载器?

Advertisement

我前些日子在硬盘上安装了Windows 7和Windows 8在EFI模式下的Windows 7和Windows 8。

我目前将Windows 8安装程序放在闪存盘上,并尝试使用自动修复选项来修复启动加载器,但没有任何作用。

我如何从命令提示符中修复/重建EFI启动程序?

BCDEDIT 返回以下信息:

The requested system device cannot be found.
Advertisement
Advertisement

答案 (10)

182
182
182
2012-11-12 00:27:03 +0000

我花了很多时间试图让我的Windows 8电脑在克隆到新的SSD后再次启动,并尝试总结一下我最终如何让它发挥作用 -

首先,从UEFI的Windows 8恢复盘(CD/DVD/USB)启动 - 我发现自动恢复过程中没有找到正确的Windows分区,当我设法将其添加到BCD设置中时,它也不会使它可靠地启动,例如:使用BCDEDIT,我让它找到并启动Windows分区,但它拒绝冷启动或在第二次重启或关机后不能 “保留 "设置。 例如,使用BCDEDIT,我让它找到并启动了Windows分区,但它拒绝冷启动,或者在第二次重启或关机后,它不会 "保留 "设置。

输入diskpart,使用DiskPart工具,确保你有所有正确的分区,并确定你的EFI分区–这里的关键是你的EFI分区被格式化为FAT32:

DISKPART> sel disk 0

Disk 0 is now the selected disk.

DISKPART> list vol

  Volume ### Ltr Label Fs Type Size Status Info
  ---------- --- ----------- ----- ---------- ------- --------- --------
  Volume 0 E DVD-ROM 0 B No Media
  Volume 1 C NTFS Partition 195 GB Healthy Boot
  Volume 2 WINRE NTFS Partition 400 MB Healthy Hidden
  Volume 3 FAT32 Partition 260 MB Healthy System

然后给EFI分区指定一个驱动器号。

DISKPART> sel vol 3

Volume 3 is the selected volume.

DISKPART> assign letter=b:

DiskPart successfully assigned the drive letter or mount point.
cd /d b:\EFI\Microsoft\Boot\

bootrec /fixboot

退出DiskPart工具,输入exit,在命令提示符下运行以下操作:

ren BCD BCD.bak

删除或重命名BCD文件。

bcdboot c:\Windows /l en-gb /s b: /f ALL
bcdedit /set {default} hypervisorlaunchtype Auto
bcdedit /set {default} nx OptIn

bcdboot.exe 使用 /f ALL 重新创建 BCD 存储:

&001

/l en-gb 参数更新 BIOS 设置,包括 UEFI 固件/NVRAM,&007 是为英国/GB 本地化。本地化默认为美式英语,或者使用en-US。

重启后,横竖都是英文,

这让我很头疼。绕了好长时间的圈子。在写这篇文章的时候,关于修复UEFI/Windows 8的可靠信息并不多。

[EDIT]

要想重新启用Hyper-V,我还得在Windows内的Administrator命令提示符中重启后运行以下内容:

&001

22
22
22
2012-12-12 06:01:57 +0000

他の回答も参考になりますが、私の場合はこんな感じです。その後、購入した150GBのSSDにWindows8をインストールしました。1.5TBのハードディスクが故障して、「システムディスクを挿入してください」と音がしてパソコンが起動しなくなってしまいました。1.5TBのディスクにブートローダが入っていたはずなので、ブートローダがなくなっているのかと思っていました。しかし、問題は、私が従ったガイドでは、ブートローダを再構築していないということでした。

私はすべての私のデータを失いたくなかったので、私は私のWindows 8インストールUSBドライブから起動してコマンドプロンプトに入りました(それが表示された場合、このUEFIバージョンを起動することができないことに注意して、それの前に表示されるUEFIなしでちょうどUSBドライブから起動するように選択します)。これを行うには、次のコマンドを入力し、それぞれの後に Enter を押します:

diskpart

list disk

select disk 0

list partition

select partition 1

shrink desired=200 minimum=200

create partition efi

list partition

select partition 2

format fs=fat32

これらのコマンドは EFI パーティションを作成します。007 と入力して、すべてをダブルチェックしてください。200MB のパーティションが表示されているはずです。これに文字を割り当てる必要があります。

これで新しく作成されたパーティションにブートファイルをコピーする必要があります。

bcdboot C:\Windows /l en-gb /s B: /f ALL

これらは両方とも成功して戻ってきましたが、本当に何かをしたかどうかはわかりませんが、誰が気にしています。これでWindowsは完全に回復しました。

9
Advertisement
9
9
2012-11-28 03:14:27 +0000
Advertisement

好了,我有时间在这里整理了一个合适的大纲。很长,但很完整,应该能帮你看清楚是怎么回事。

首先,有一种情况会发生:

  1. 你的BIOS失去了设置
  2. 没问题,所有的东西都存储在EFI分区里。 3…… …除了SATA IDE和AHCI的设置之外,原因很明显。你用的是SATA-AHCI吗? 5.在你发现这个问题之前,你有没有尝试过启动? 6.如果有,那就是失败了。 7.如果你做了,BLAM,它很可能已经破坏了启动配置数据库。确保你使用的是你上次使用的正确的SATA设置。

这里是你现在可能已经做了什么。如果这些都不匹配,请仔细评估这是否是你的问题,并阅读这段内容以获得想法,但不要不经思考就照做。你希望你忽略了所有关于修复主启动记录(MBR)、分区表、分区标志和其他不适用于EFI启动情况的垃圾的废话。完全不适用于EFI启动情况。最多,你可以完全重建一个新的、_无关的、非EFI启动方案。然而,这可能不是一件小事,因为: 2. 你已经知道Windows确定它没有一个启动配置数据库,但不幸的是,它要么是完全不知道,要么是非常确定它在哪里—-你不太清楚。你知道启动存储区通常是(somewhere)\Boot\BCD,而且文件是HIDDEN,用dir /a:hs查看。你已经对BCDedit.exe有了一定的了解,知道了它可以让你用/CreateStore “模拟 "出一个启动配置数据库(请不要把它命名为 "BCD"),你可以用/Store选项明确地使用这个暂存文件,你可以用/Create {bootmgr}为Windows启动管理器添加一个菜单条目,你应该可以用/Import导入它….. 5………..但是当你尝试这样做的时候,你不能。你研究了一下/SysStore选项,听起来是对的,但你不能让它使用其他商店,因为它 "含糊不清"。你有一种预感,它知道存储空间在哪里–或者应该在哪里–但你找不到。Windows可以告诉你设置为EFI(你已经通过UEFI启动DVD,你有一个EFI分区等)。因此,它知道在哪里可以找到BCD文件—-然而,它要么是位置不对(不是这个问题,而是类似的问题),要么是BCD被删除了。很显然,因为它知道它应该在哪里,这就打破了MountVol—实际上,这可能是正确的行为,否则你会把它放在错误的地方。据我所知,/SysStore故意隐藏了EFI分区(或者说是无法察觉到它)。这样一来,就无法挂载文件系统,从而无法找到正确的子目录,无法验证数据库的存在等等,

所以,最后,这里就是你需要做的事情了。好消息是,这可能比你现在希望的要简单得多。

  1. 事实上,我有一种预感,这并不是严格意义上的正确–我强烈怀疑EFI分区已经被内部的一些子系统挂载了,这就是为什么MountVol会出现问题的原因–它没有看到数据库,但它知道它应该去哪里。但它知道它应该去哪里,但它没有的是一个驱动器号。那么…… 怎么办呢?

那么…… 你的DOS根基有多深? 你还记得BCDedit命令吗?你猜猜怎么着 2. 启动Assign, 3. 如果你不熟悉DiskPart,它的工作方式基本上是一个层次结构的集合,你必须在一个层次上选择一个元素,才能进入下一个层次。所以,DiskPart,然后是List Disk,其中Select Disk n是适合你的就可以了。 4. 用nList Partition(注意不是复数)来了解和识别你的EFI分区。

通常是一个标有List Volume的100MB FAT32分区。请记住,你的磁盘现在应该使用的是GPT分区表,所以你可能会看到很多分区。这些分区中的一些是用于紧急恢复—-对于EFI问题来说,它们的作用很大,是吗?

注意,EFI分区和其他几个分区都没有驱动器字母。如果你有兴趣的话,你也可以查看GPT分区的属性,这可能会给你带来一些与之相关的 "Aha "时刻。(我希望你可以选择卷,如果你需要的话,可以选择卷) 6.System。就这样,就这样了。 7.Select Partition n 7.Assign。 8. Assign DiskPart. 现在….一个大大的警告。你可能会看到 直接转到S:(或你从List Volume中得到的任何东西),并注意到一个启动分区。"AHA!” 你会说:"这里没有Exit文件!"这里没有Assign文件!" 首先…..记住,这个文件是隐藏的。其次…………再多挖一点,你会发现有BCDS:\EFI\Boot

,你需要检查这两个文件是否有问题。之所以有这个名字,是因为主板不知道你要不要装Windows,需要一个固定的路径,这样才有意义。 9、检查 9、检查S:\EFI\Microsoft\Boot。检查S:\EFI\Boot。对于Windows 7 Professional, 64位,你应该会看到: S:\EFI\Boot 如果你安装了EFI shell(总是一个好主意),你可能会看到bootx64.efi。对于Windows 7 Professional, 64位,你应该会看到一堆语言模板(shellx64.efi等)和以下文件: bootmgr.efi bootmgfw.efi memtest.efi BCD BCD.Backup.001 BCD.Backup.002 ………..只是你可能没有看到chainloader+1,是吗?但那些备份文件看起来确实很诱人。 11. 确定你要使用哪个备份文件。无论它最近有什么变化,都比不上你启动系统的能力重要,所以要选择最完整的那个。可能你会看到一个大的一个和一个相当小的一个。小的那一个已经损坏了,是失败修复过程中的伪装品–不要使用它。如果它们都是大的,就用老的那一个。在任何情况下,都要在其他地方做额外的备份。将你决定使用的备份复制到S:\EFI\Microsoft\Boot。13. 退出shell,干净地关机,然后重新启动。告诉Windows正常启动。

Q: 如果你没有备份BCD怎么办?

A: 好吧,这是不应该发生的。这很可能意味着,你要么是在错误的目录中,支持EFI,但实际上并没有使用它,要么是在没有所有所需的Windows材料的情况下重建了整个EFI分区(有可能,特别是在使用多个版本的Windows时)。在这种情况下,你需要从DVD中复制EFI材料,然后用dir修改或重建启动配置数据库。

问:你能给我一个例子,说明在EFI系统中dir a:h可以用来做任何事情吗?

答:到目前为止,没有。最后一点非常重要,请注意,你可以使用上面的en_USBCD技巧,在Windows下正常_挂载和检查你的EFI分区。你应该至少这样做一次,以获得一个完整的EFI分区的备份,在你遇到这种麻烦之前。我建议将一个备份到你的BCD驱动器上的一个子目录,一个备份到U盘上。我需要在某个时候把这篇文章写成一篇合适的文章,但是有很多人都很苦恼,所以我觉得有必要把我的经历尽可能完整、快速地记录下来。

5
5
5
2012-08-25 20:45:34 +0000

Windows 8还没有出最终版本,所以出现问题是意料之中的事情。你所处的领域对我们大多数人来说都是一个新的领域,我们以前使用的命令可能已经不能用了。在@soandos列出的命令中,我再加上这个可以完全重建BCD的命令:

bootrec /rebuildbcd

还可以尝试使用Windows 8的高级启动菜单,让我们知道发生了什么。在任何情况下,看看bcdedit在你的电脑上的输出是什么会很有趣。

[EDIT]

这些链接可能包含一些有用的想法: 从DVD中恢复Windows Bootloader Windows 7启动管理器恢复问题 Windows 7突然无法启动 - 修复Windows 7启动器

3
Advertisement
3
3
2012-11-29 01:17:10 +0000
Advertisement

最简单的方法:

  • 按照上面帖子中的步骤找到BCD文件,然后进入目录。

  • 如果BCD文件是隐藏的,请输入attrib bcd -s -h -r并按回车键,这样可以修改和覆盖该文件。这将重命名当前的BCD文件。

  • 输入ren bcd bcd.old并按回车键,强制Windows 8从头开始重建启动菜单。移除Windows恢复媒体并重新启动。你就大功告成了

2
2
2
2013-02-06 11:50:32 +0000

在DISKPART下,我只有vol 0或D(DVD)和vol 1或C(Windows NTFS分区)。在退出DISKPART后,我只输入了

bootrec /fixboot
bootrec /rebuildbcd

,然后系统就正常修复了。我没有使用

bootrec /fixmbr

,因为我在MBR上使用GAG(gestor de arranque gràfico)进行多引导。

1
Advertisement
1
1
2012-12-05 14:29:49 +0000
Advertisement

经过6个小时的挣扎,我成功地修复了我的Windows 8启动问题。

今天,在通常的重启后,我得到了MBR not found或类似的消息,我不记得了。我试过bootrec命令,Windows自动修复(它不能找到任何已安装的Windows),一百万种其他方法,都没有结果。

问题是,当我执行bootrec /rebuildbcd时,它正常运行,然后当我不得不输入yes,如果我想保存配置时,我得到的消息是,the file is not accessible because it is used by a another process

经过几个小时的头脑风暴,我终于解决了这个问题。

按照这个顺序……

  • 首先,我启动了 easeup 分区主站,并将系统预留卷FORMATED,我将系统预留卷指定为活动卷(我的启动文件夹就在其中)。当我重新启动时,我得到了一个错误的NTLDR missing

  • 然后我在Windows恢复中启动,打开命令提示符,输入bootrec /fixmbr, /fixboot, /scanos, /rebuildbcd, cmd(现在执行的很好:])

  • 我退出&007,点击自动修复。当我重新启动时,我可以看到Windows 8的标志。

0
0
0
2015-12-19 14:57:30 +0000

我的情况;我没有松动EFI系统分区,但切换驱动器和安装Windows似乎把Windows Boot Manager的UEFI启动条目搞得一团糟;不得不使用直接指向驱动器的UEFI条目来启动。我想我通过修正/添加 “device partition=/Device\HarddiskVolumeX "设置(在我的情况下,X=2;我的第2个分区是EFI系统分区,映射到Z:与diskpart.exe):

Bcdedit /set {bootmgr} device partition=Z:

查看:bcdedit.exe /enum firmware

-1
Advertisement
-1
-1
2012-08-13 00:06:38 +0000
Advertisement

使用:bootrec /fixmbr(更新MBR,可能在这种情况下不会有什么作用,但也不会有什么坏处)

bootrec /fixboot重写系统分区的启动扇区。

-4
-4
-4
2012-08-25 20:41:13 +0000

我在恢复控制台中使用以下命令修复了它:

bootcfg C:\Windows /l en-us
Advertisement

相关问题

3
28
13
7
3
Advertisement