我使用 Clover 作为我的第一个和默认的引导程序。如果在那里选择了 Ubuntu,那么 Grub 就会被激活(据我所知,没有办法跳过这一步,我根本不使用 Grub,所以我最好把它删除)。我的系统使用 UEFI,所以我使用以下方式设置了我的首选引导顺序
sudo efibootmgr -o XXXX,YYYY,ZZZZ
一切正常,直到 Grub 再次更新。在更新过程中,我的 UEFI 启动顺序设置被 Grub 默认值覆盖,Grub 始终被设置为第一个要访问的引导加载程序。
有没有什么方法可以保留我设置的启动顺序并防止 Grub 将其改回其默认值?
答案1
sudo dpkg-reconfigure grub-efi-amd64
对于前几个问题,请接受现有值(只需按 Enter 键),但是对于这个,请选择否:
+----------------------| Configuring grub-efi-amd64 |-----------------------+
| |
| GRUB can configure your platform's NVRAM variables so that it boots into |
| Debian automatically when powered on. However, you may prefer to disable |
| this behavior and avoid changes to your boot configuration. For example, |
| if your NVRAM variables have been set up such that your system contacts |
| a PXE server on every boot, this would preserve that behavior. |
| |
| Update NVRAM variables to automatically boot into Debian? |
| |
| <Yes> <No> |
| ^^^^ |
+---------------------------------------------------------------------------+
答案2
Tobia 的回答在一台机器上对我来说是有效的,但在另一台机器上我发现grub-pc
安装了 而不是grub-efi-amd64
。当我尝试 时dpkg-reconfigure grub-pc
,我发现它并不总是会问这个问题,尽管它有时在 EFI 模式下使用。因此,找到这个设置的关键所在,我发现它们实际上都在修改debconf
名为 的数据库条目grub2/update_nvram
。感谢本文,我发现可以直接用以下命令设置这个变量:
echo "set grub2/update_nvram false" | debconf-communicate
您可以通过这种方式确认设置:
echo "get grub2/update_nvram" | debconf-communicate
...它将输出变量的当前值。