如何防止Windows 8.1覆盖GRUB引导加载器?双系统长效解决方案
解决Windows 8.1覆盖GRUB引导的长效方案
我之前也碰到过一模一样的糟心事——每次进Windows再重启,GRUB就没了,直接进Windows,反复用U盘修复太折腾人。试了好几种方法,终于找到能根治的办法,分两种引导模式给你说:
一、如果是UEFI引导(Win8.1大多是这种)
这是最常见的情况,解决步骤如下:
- 确保GRUB安装到ESP分区
先在Trisquel里打开终端,先挂载ESP分区(通常是FAT32格式,分区号一般是/dev/sda1,你可以用lsblk确认):
然后重新安装GRUB到ESP:sudo mount /dev/sdX1 /boot/efi
最后更新GRUB配置:sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grubsudo update-grub - 把GRUB设为UEFI第一启动项
开机时按BIOS/UEFI快捷键(一般是F2、Del、Esc,看电脑品牌),进入启动设置界面,找到启动顺序列表,把「grub」或者「Ubuntu」(Trisquel基于Ubuntu,可能显示这个)移到最顶部,比「Windows Boot Manager」优先级高。 - 禁止Windows篡改引导
进Windows后,右键开始菜单→选择「Windows终端(管理员)」(或者命令提示符管理员),输入这条命令,让Windows的引导管理器指向GRUB的EFI文件:
另外记得关闭Windows快速启动:控制面板→电源选项→选择电源按钮的功能→更改当前不可用的设置→取消勾选「启用快速启动(推荐)」,这个功能也会导致引导异常。bcdedit /set {bootmgr} path \EFI\grub\grubx64.efi
二、如果是传统BIOS引导
如果你的电脑是老旧的BIOS模式,按下面步骤来:
- 重新安装GRUB到磁盘MBR
在Trisquel终端里执行这条命令(注意是磁盘名,比如/dev/sda,不要加分区号):
同样更新GRUB配置:sudo grub-install /dev/sdXsudo update-grub - 禁用Windows自动修复引导
进Windows的管理员命令提示符,输入两条命令关闭自动修复:
这样Windows就不会因为检测到“异常”启动而自动重置MBR了。bcdedit /set {default} recoveryenabled No bcdedit /set {default} bootstatuspolicy ignoreallfailures
注意事项
- 每次Windows大版本更新后,可能会重置引导设置,建议更新后再检查一下UEFI启动顺序,或者重新执行Windows里的
bcdedit命令。 - Trisquel更新内核后,记得运行
sudo update-grub更新引导菜单,避免出现内核找不到的问题。
我用这些方法之后,半年多没再碰到GRUB被覆盖的情况,亲测有效!
内容的提问来源于stack exchange,提问作者Time4Tea
相关产品推荐
相关产品推荐

