如何阻止Ubuntu每次启动时修改UEFI启动顺序
如何阻止Ubuntu每次启动时修改UEFI启动顺序
兄弟,这种每次开机都要进BIOS调启动顺序的糟心事儿我太懂了!折腾好几次终于找到靠谱的解决办法,给你整理几个方案,你挨个试试:
方案一:修改Grub配置,强制指定默认UEFI启动项
这个方法能让Grub不再乱改UEFI启动顺序,而是乖乖用你指定的默认项:
- 先打开终端,输入以下命令查看当前UEFI启动项的编号:
你会看到类似这样的输出,重点看sudo efibootmgrBootOrder和各个启动项的编号(比如Boot0001是Windows Boot Manager):BootCurrent: 0000 Timeout: 10 seconds BootOrder: 0000,0001,0002 Boot0000* ubuntu Boot0001* Windows Boot Manager Boot0002* USB Drive - 编辑Grub的配置文件:
sudo nano /etc/default/grub - 在文件末尾添加两行内容,把
0001换成你想要设为默认的启动项编号(比如上面的Windows编号):GRUB_DISABLE_OS_PROBER=false GRUB_EFI_BOOTNEXT=0001 - 保存并退出(按
Ctrl+O,回车,再按Ctrl+X),然后更新Grub生效:sudo update-grub
方案二:直接在UEFI里锁定启动顺序(最省心)
你的ASUS MAXIMUS Formula VII主板应该支持这个功能,直接在BIOS里锁死启动顺序,不管系统怎么折腾都改不了:
- 重启电脑,开机时按
Del或F2进入UEFI设置界面; - 找到
Boot菜单,再进入Boot Configuration选项; - 找类似Boot Order Lock的选项,把它设为
Enabled; - 先手动把你想要的启动顺序排好(比如Windows Boot Manager放在第一位),保存设置退出即可。
方案三:禁用Grub自动修改启动顺序的脚本
如果上面的方法不管用,可以直接修改Grub的探测脚本,把它修改UEFI顺序的代码关掉:
- 打开Grub的探测脚本文件:
sudo nano /etc/grub.d/30_os-prober - 找到里面调用
efibootmgr -n的段落,看起来大概是这样:if [ "${found_other_os}" = "true" ]; then ... efibootmgr -n "${bootnext}" ... fi - 把这段代码用
#注释掉,或者直接删除; - 保存退出后,更新Grub生效:
sudo update-grub
试完这些方法,应该就能摆脱每次进BIOS改顺序的噩梦了!
备注:内容来源于stack exchange,提问作者Liam Clink




