GRUB 2“卡”在特定的启动选项上

GRUB 2“卡”在特定的启动选项上

我刚刚使用 btrfs 根目录安装了 openSUSE 13.1 系统,并错误地在 KDE 的重启下拉菜单中选择了 Windows。现在 grub 似乎每次都会自动加载 Windows,而不是像它应该的那样只加载一次。换句话说,grub 确实加载了(并显示一些快速状态消息),但它每次启动时都会直接跳到 Windows 选项。

Grub 确实提到它正在加载配置文件,并且没有显示任何错误,因此我相当确信它没有被覆盖或任何类似的问题。我还将 Windows 安装在单独的磁盘上,以避免我的引导加载程序因 Windows 更新而随机被删除。

在我放弃并重新安装引导程序之前,是否有任何方法可以手动撤消grub2-reboot对我的配置所做的任何操作(或菜单使用的任何实用程序)?我仍然能够从实时环境中顺利安装磁盘上的分区,并且应该能够 chroot 以执行所需的任何更新。

编辑:通过执行以下操作从活动磁盘通过 chroot 进行修复:

grub2-editenv /boot/grub2/grubenv unset next_entry

答案1

检查脚本源代码后,/usr/sbin/grub2-reboot我发现启动选择由文件中的“next_entry”变量处理grubenv

通过运行(chroot进入系统)可以看到这个问题grub2-editenv list,结果显示:

saved_entry=openSUSE 13.1
next_entry=Windows 8.1 (loader) ...

在这种情况下,该next_entry字段在重启后并没有像应该的那样被清除(可能是由于某些 btrfs 不兼容?)

我成功地像这样取消设置它(再次,在 chroot 中):

grub2-editenv /boot/grub2/grubenv unset next_entry

重新启动后,grub 菜单恢复正常!

答案2

如果您可以使用某种类型的 Live CD,则可以使用 grub 配置命令来解决问题。或者,您可以手动配置上述 GRUB 配置文件这里。但是,与 GRUB 不同,GRUB 2 的配置文件不能手动编辑,因此要格外小心。

相关内容