双系统(Ubuntu+Windows 10)下如何防止Windows覆盖GRUB引导程序?
双系统(Ubuntu+Windows 10)下如何防止Windows覆盖GRUB引导程序?
兄弟我太懂你这种糟心感了!之前装Ubuntu双系统时,也跟你一样反复踩坑——刚把GRUB弄好,一进Windows直接给我干没了,折腾N次才摸清楚几个靠谱的办法,给你分享下:
一、先给Windows的“自动修复”泼冷水,让它别瞎改引导
Windows有时候自带“强迫症”,觉得GRUB不是它认可的引导就自动替换,咱们直接把这个“瞎折腾”的功能关了,还把启动指向GRUB:
- 按Win+R输入
cmd,一定要右键选“以管理员身份运行”,不然权限不够 - 依次输入这几个命令:
bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
这个是把Windows的启动管理器直接绑定到Ubuntu的shim程序(现在大多是UEFI+安全启动环境,shim是Ubuntu用来绕开安全启动的关键)bcdedit /set {bootmgr} displayorder {bootmgr} /addlast
把Windows自己的启动项挪到最后,这样开机默认先跑GRUBbcdedit /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
相关产品推荐
相关产品推荐

