Ubuntu 16.04 LTS中rEFind设为首选启动项却仅Grub启动故障求助
这种情况我之前帮朋友排查过好几次,大概率是Grub的自动更新脚本悄悄把自己又设回了UEFI启动项的首位,或者rEFind的启动项配置出了点小问题。咱们一步步来修复:
1. 先确认rEFind的UEFI启动项是否存在
首先打开终端,用efibootmgr命令查看当前的UEFI启动项详情:
sudo efibootmgr -v
你会看到一堆带编号的启动项,比如Boot0000* ubuntu(这是Grub的),找带rEFind或者refind字样的条目,记下来它的编号(比如Boot0001)。
2. 手动强制设置rEFind为默认启动项
如果rEFind的启动项确实存在,直接用efibootmgr调整启动顺序,把rEFind放在最前面:
sudo efibootmgr -o <rEFind的编号>,<Grub的编号>
举个例子,如果rEFind是Boot0001,Grub是Boot0000,就输入:
sudo efibootmgr -o 0001,0000
执行完后重启电脑,看看能不能正常进入rEFind界面。
3. 阻止Grub自动抢占默认启动项
如果重启后Grub又回到了启动项首位,那肯定是Ubuntu的Grub更新脚本在搞事情。咱们修改Grub的配置文件,禁用它的自动抢占行为:
打开Grub的默认配置文件:
sudo nano /etc/default/grub
找到GRUB_DEFAULT=0这一行(不用修改它),然后在文件里添加下面这一行:
GRUB_DISABLE_OS_PROBER=true
另外,确保GRUB_DISABLE_RECOVERY="true"这一行存在(一般默认就有)。按下Ctrl+O保存,Ctrl+X退出编辑器,然后更新Grub配置:
sudo update-grub
这样Grub以后就不会在更新的时候偷偷把自己设为默认启动项了。
4. 重新安装rEFind(如果前面的步骤都没用)
要是上面的方法都不生效,可能是rEFind的启动项文件损坏了,咱们重新安装一次rEFind:
首先挂载你的EFI分区(先确认分区路径,一般是/dev/sda1,可以用lsblk命令查看):
sudo mount /dev/sda1 /boot/efi
然后运行rEFind的安装脚本:
sudo refind-install
安装完成后,再用efibootmgr确认启动项,重新设置启动顺序即可。
5. 检查UEFI固件的干扰设置
如果以上所有步骤都无效,那可能是你的主板UEFI固件有特殊设置在干扰。重启电脑,按对应的按键进入UEFI设置界面(一般是F2、Del或者F10,看开机时的提示),然后:
- 关闭**快速启动(Fast Boot)**功能,这个功能经常会导致启动项顺序混乱
- 如果之前开了安全启动(Secure Boot),建议关闭它,rEFind对安全启动的兼容性不太好
- 在UEFI的启动项列表里,手动把rEFind拖到最顶部,保存设置后重启
内容的提问来源于stack exchange,提问作者Dante

