尽管我愿意接受更多有关正确解决方案的建议,但我还是会自己回答。
我的笔记本电脑是双启动的 Linux 和 Windows - Linux 是我选择的操作系统,但由于我的笔记本电脑有 Win10 许可证,所以我也保留了它。每个操作系统都有自己的专用分区,Linux 会检测 Windows 分区并使用双启动选项设置 GRUB(始终启动最后一个选项)。MBR 是标准的,唯一的变化是在安装 Windows 后,我将 Linux 分区重新设置为活动状态,以便 GRUB 可以显示选项。
很长一段时间以来,我都遇到过这个问题:在初始安装后,下一个累积更新会失败。我尝试过重新安装,只使用 Windows 更新驱动程序等。最终,下一个累积更新会发货,笔记本电脑会再次无法更新。我查看了所有故障排除选项,浏览了 WU 日志,尝试了所有可能的修复方法(重建 WU 目录等),但都不起作用。
症状是 WU 在第一次重启后更新阶段报告错误,然后再次重启以撤消更新。更新历史记录中报告的最新错误代码为 0x800f0922 和 0x80070643(对于同一更新,我可以选择其中任何一个 - 最后失败的更新是 2018-11、2019-01 和 2019-02)。
事实证明,我所要做的就是在重启之前再次激活 Windows 分区,然后更新就完成了。除了指出这是多么荒谬之外,我想知道是否有办法避免这种情况,例如在 WU 安装后重启之前添加钩子以设置活动分区,然后再重新设置,或者验证 Windows 引导加载程序配置以提供类似的行为(允许在启动时选择操作系统并将最后一个选择设为默认)。我还希望 MS 的某个人看到这个问题并修复它,或者至少改进错误报告,这样人们就不会花费数月/数年的时间去弄清楚它。
答案1
因此,修复 Linux/Windows 双启动问题使用标准 DOS MBR和Linux 分区上的 GRUB 设置为活动状态执行操作系统选择是在安装 Windows 更新后重新启动之前将 Windows 分区设置为活动分区,然后将其重新设置为 Linux。
我的 Windows 分区是第二个分区,Linux 是第三个分区,所以我创建了这两个 DISKPART 脚本(DRTAIL 命令仅用于验证它是正确的分区,可以删除):
磁盘部分_p2.txt:
SELECT DISK 0
SELECT PARTITION 2
DETAIL PARTITION
ACTIVE
磁盘部分_p3.txt:
SELECT DISK 0
SELECT PARTITION 3
DETAIL PARTITION
ACTIVE
我有一个运行以下命令的 cmd 文件:
切换分区.cmd:
@ECHO OFF
DISKPART /S C:\diskpart_p%1.txt
PAUSE
最后,我使用一对快捷方式在正确的分区上运行命令。快捷方式配置为以管理员身份运行。
Make_Win_Active.cmd:
C:\Toggle_Partition.cmd 2
Make_GRUB_Active.cmd:
C:\Toggle_Partition.cmd 3
答案2
为了未来的读者:
安装 Grub2 1. 阶段进入 MBR,而不是进入 Linux 分区。
在 Windows 分区上保留活动标志。
然后 Windows 的启动管理器就会激活。创建一个条目,如“bcdboot c:\windows /sc: /f BIOS”使用 bcdedit 或 easyBCD 删除其他条目。