我使用 grub 作为双启动笔记本电脑 (DELL Vostro 3750) 的默认启动加载程序。由于 Windows 更新 3033929,我的系统目前正在经历重启循环 (无限)。
正如所描述的这里:
如果用户的计算机满足以下条件,则无法安装此安全更新:具有 Windows 和各种 Linux 发行版的多重启动配置
一个可能的解决方案似乎是:
要解决该问题,你可以使用 Windows 作为默认引导加载程序
很多文章描述了如何在启动时将 Windows 设置为默认 grub 项,但这与描述的可能的解决方案完全不同。
因此,有人可以描述一个可行的解决方案(分步说明)以Windows Update 3033929
在双启动系统(grub 1.99-27+deb7u2 和:debian wheezy 和 windows 7/64bits)上安装。两个分区分别位于同一磁盘上:sda5
和sda2
,因此我无法使用描述的解决方案这里。
我在网上找到的一个可能的解决方案是完全删除 grub,但这似乎是一个过度的解决方案(而且我甚至不知道之后如何重新安装它)。我也想避免使用列出的解决方案这里其中 grub 引导加载程序已被删除并替换为Windows 7's "bootmgr"
。
答案1
我知道这个帖子现在已经很老了,但如果将来有人遇到这个问题,我希望这可以为人们节省很多麻烦。
当 Windows 和 Linux 安装在同一磁盘上时,有一种更简单的方法来解决这个问题,而不是经历“困难情况”答案中列出的所有努力(至少,根据我的经验)。
在 Windows 机器上双启动 Linux(虽然我不能代表所有发行版,所以在某些情况下可能并非如此)不会以任何方式删除或影响系统分区上的 MBR。它所做的只是使其处于非活动状态,而是使用 GRUB 引导加载程序分区作为活动分区。因此,完全没有必要弄乱任何一个引导加载程序,不需要重建任何引导加载程序,不需要任何复杂的操作。安装此失败的更新所需要做的就是:
- 将 Windows 系统分区(通常是最小的分区,大小为 100MB)更改为活动分区。如果您确实可以进入 Windows 系统,则可以通过磁盘管理 GUI 完成此操作,或者您也可以在修复模式下通过 Diskpart 命令提示符实用程序执行此操作:
diskpart
select disk 0
(或安装 Windows 的任何磁盘号。您可以使用“列出磁盘”(不带引号)来查找)select partition 1
(再次,您可以通过输入“list part”(不带引号)来找到正确的分区号。100 MB 分区通常是 Windows 系统分区)active
(这将激活所选分区,随后使 GRUB 分区处于非活动状态,因为它只允许一个活动的启动分区)exit
并重新启动系统,它应该直接从 Windows 引导加载程序启动到 Windows
安装导致问题的更新(通常是 KB3033929)并重新启动 Windows。它应该可以成功安装。
重新启动进入命令提示符并将活动分区改回 GRUB 分区(通常不超过几百 MB),类似于我们在启动时激活 Windows 系统引导加载程序的方式。执行此操作时,请确保选择正确的分区号。命令示例:
diskpart
select disk 0
select partition 3
active
exit
- 重启系统。系统应该会像之前一样直接启动到 GRUB 加载程序,并且所有操作系统选项都可用。检查 Windows 更新,你会发现所有更新都已成功安装,系统应该可以正常运行。
这个解决方案花了我不到 2 分钟就完成了,非常简单。我希望它能帮助其他人,并在人们遇到这些麻烦时节省一些时间。
答案2
文章Windows 更新 KB3033929 更新循环包含此更新循环的仅有的两个已知解决方案。
在开始之前,我建议对整个磁盘进行映像备份,并确认您有正确的启动 CD 或 USB,以便在发生灾难时恢复它。我建议以后在执行 Windows 更新之前始终进行这样的映像备份,并将其置于手动模式。
简单情况:Windows 安装在单独的磁盘上
- 关闭计算机并拔下非 Windows 驱动器,或者如果 BIOS 支持此操作,则将启动盘设置为包含 Windows 的启动盘。
- 直接重新启动 Windows 并安装 KB3033929 更新。
- 再次重新启动以配置更新。
- 一旦一切安装完毕并正常运行,请关闭电脑并重新连接 Linux 驱动器。
- 下次重启时一切都会恢复正常。
- 如果没有,请在 Windows 启动时使用 F8 启动到安全模式并将 Windows 更新重置为“通知但让我下载”,或将此更新设置为“从不显示”,以避免安装它,直到 Microsoft 最终修复它。
困难情况:Windows 和 Linux 都安装在同一磁盘上
在这种情况下,您必须用 Windows 的引导程序替换引导程序,让此更新自行安装,然后返回 GRUB。步骤如下:
从 Windows 安装媒体启动并选择命令提示符修复选项。
键入以下内容并按 Enter:
Bootrec.exe /FixBoot
然后输入并按 Enter:
Bootrec.exe /FixMbr
直接重新启动进入 Windows(Grub 不再存在)。
安装有问题的更新并正确启动并运行 Windows。
要恢复 GRUB,请将计算机启动到实时 Linux CD 或 USB 并选择“试用”该操作系统。
找出 Linux 安装在哪个分区上,也许可以使用 Gparted 实用程序来查找根“/”分区。我们假设它在 sda1 上。
要挂载该分区,请打开终端并输入以下内容,然后按 Enter:
sudo mount /dev/sda1 /mnt
- 使用以下命令重新安装 grub:
sudo grub-install /dev/sda –root-directory=/mnt
移除安装介质并重新启动。Grub 引导加载程序将仅显示 Linux 安装。
要解决此问题,请启动到 Linux 桌面,打开终端并运行此命令以获取机器上所有可用的操作系统:
sudo update-grub
重新启动后,您现在应该可以使用 Grub 了,并且 Windows 安装为可启动选项。
如果上述方法对你不起作用,请尝试文章中的替代方法 删除 Linux Grub 并恢复 Windows 7 启动 GUI. 本文可能也有用: 如何修复、调整或删除 Grub 引导加载程序。
如果以上方法均无效,请恢复备份磁盘映像,很抱歉,您现在又回到了原点。
答案3
我以为我在双启动 Manjaro Linux 后也遇到了这个问题。Windows 一直提示我重新启动,但更新未安装。我尝试将分区标记为“活动”,但没有成功。
但是,Windows 更新最终出现了错误代码0x80070bc2
。我按照 Microsoft 社区中列出的解决方案运行
SC config wuauserv start= auto
SC config bits start= auto
SC config cryptsvc start= auto
SC config trustedinstaller start= auto
以管理员身份在 cmd 中。
然后,Windows 更新能够继续,但又出现了两个错误: 0x8007045b
和0x80070490
。
然后我跑了:
DISM.exe /Online /Cleanup-image /Restorehealth
sfc /scannow
一切终于都好了。
第一个命令运行了一段时间,似乎卡在了 94.4%。但过了一会儿,它就成功了。
我只是把我遇到的问题留在这里以防将来有人遇到同样的问题。
答案4
您不需要删除 grub。只需使用 gparted live (gparted.org) 并从 Linux 分区中删除启动标志(如果您有一个单独的启动分区,请从中删除启动标志)并将启动标志归因于 Windows 分区。重新启动 PC(它将在 Windows 中启动),安装更新(PC 需要重新启动)。关闭 PC,然后使用 gparted live 重新启动它并撤消启动标志的更改。