You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

双系统(Ubuntu+Windows 10)下如何防止Windows覆盖GRUB引导程序?

双系统(Ubuntu+Windows 10)下如何防止Windows覆盖GRUB引导程序?

兄弟我太懂你这种糟心感了!之前装Ubuntu双系统时,也跟你一样反复踩坑——刚把GRUB弄好,一进Windows直接给我干没了,折腾N次才摸清楚几个靠谱的办法,给你分享下:

一、先给Windows的“自动修复”泼冷水,让它别瞎改引导

Windows有时候自带“强迫症”,觉得GRUB不是它认可的引导就自动替换,咱们直接把这个“瞎折腾”的功能关了,还把启动指向GRUB:

  • 按Win+R输入cmd,一定要右键选“以管理员身份运行”,不然权限不够
  • 依次输入这几个命令:
    1. bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
      这个是把Windows的启动管理器直接绑定到Ubuntu的shim程序(现在大多是UEFI+安全启动环境,shim是Ubuntu用来绕开安全启动的关键)
    2. bcdedit /set {bootmgr} displayorder {bootmgr} /addlast
      把Windows自己的启动项挪到最后,这样开机默认先跑GRUB
    3. bcdedit /set {default} recoveryenabled No
      彻底关闭Windows的自动修复功能,避免它“好心办坏事”替换引导

二、给GRUB锁死UEFI启动优先级

光改Windows不够,咱们还要在BIOS/UEFI层面把Ubuntu设为默认启动项,让硬件层面直接无视Windows的小动作:

  • 进Ubuntu系统,按Ctrl+Alt+T打开终端
  • 先装个管理EFI启动项的工具:sudo apt install efibootmgr
  • 输入efibootmgr查看当前所有EFI启动项,找到标着Ubuntu的那一项,比如你会看到类似Boot0001* Ubuntu的内容,这里的0001就是Ubuntu对应的启动项编号
  • 把它设为默认启动项:sudo efibootmgr -o 0001(把0001换成你查到的自己的Ubuntu编号)
  • 这样不管Windows怎么改自己的启动项,开机时BIOS/UEFI都会优先启动GRUB

三、留个后手:快速恢复GRUB的应急办法

万一哪天还是被Windows覆盖了,别慌,不用重装系统,用Ubuntu启动盘就能快速救回来:

  • 插好Ubuntu的U盘启动盘,开机选“试用Ubuntu”(不用安装系统)
  • 打开终端,先挂载你的Ubuntu系统分区:比如你的Ubuntu在/dev/sda5,就输sudo mount /dev/sda5 /mnt(可以用fdisk -l命令查看自己的系统分区)
  • 再挂载EFI分区:sudo mount /dev/sda1 /mnt/boot/efi(EFI分区一般是/dev/sda1,同样用fdisk -l确认)
  • 安装GRUB到硬盘:sudo grub-install --boot-directory=/mnt/boot --efi-directory=/mnt/boot/efi /dev/sda
  • 最后更新GRUB配置:sudo update-grub
  • 重启之后,熟悉的GRUB就回来了!

最后再提个小提醒:Windows大版本更新的时候最容易搞坏引导,所以更新前最好先进Ubuntu用efibootmgr确认下Ubuntu还是默认启动项,或者提前把EFI分区里的EFI/ubuntu文件夹备份到U盘,万一被删了直接复制回去就能用。

备注:内容来源于stack exchange,提问作者Yair Daon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:19:42