update-grub 命令无效

ube*_*ben 6 grub2 dual-boot uefi grub-efi

在第二个硬盘驱动器上安装 Kubuntu 后,它更改了我的主硬盘驱动器 GRUB 的引导顺序,此后我无法将其更改回来。

对 grub 配置文件 ( /etc/default/grub) 进行的任何更改update-grub均无效。

正确更改update-grub文件/boot/grub/grub.cfg,但不会修改/boot/efi/目录中的任何文件,而这应该发生,因为我的 GRUB 的安装点是boot/efi.

我以为这是由于write权限,但我检查了,对这些文件root有权限。write

命令的输出sudo update-grub

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-33-generic
Found initrd image: /boot/initrd.img-4.15.0-33-generic
Found linux image: /boot/vmlinuz-4.15.0-32-generic
Found initrd image: /boot/initrd.img-4.15.0-32-generic
Found Ubuntu 18.04.1 LTS (18.04) on /dev/sdb2
Adding boot menu entry for EFI firmware configuration
done
Run Code Online (Sandbox Code Playgroud)

文件内容/etc/default/grub

GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
Run Code Online (Sandbox Code Playgroud)

编辑,重要:

看来 GRUB 只在引导时通过读取配置文件来受配置的影响。所以,如果我理解的话,我的配置正在 Kubuntu 分区上加载。但我怎样才能改变这种行为呢?这个问题已经被问过,但没有正确回答。

ube*_*ben 4

我通过执行grub-install命令解决了这个问题,解释:

如前所述,GRUB 仅在引导时通过读取配置文件来受配置影响。GRUB 二进制文件存储此配置文件的路径。为了设置所需配置文件的正确路径,需要更新这些二进制文件。

我通过从存储所需配置的操作系统sudo grub-install执行命令来轻松完成此操作(该命令不需要任何其他参数)。

现在,GRUB 会受到 的任何更改的影响/boot/grub/grub.cfg


小智 1

我有一个类似的问题。我有三重启动:windows 10、linux mint 和 ubuntu。当我将 linux mint 从 20.3 更新到 21 后,它就崩溃了。我继续在 mint 中运行 update-grub,它确实显示检测到 mint 21(内核 5.15.0-52)并说它已更新。但启动仍保持为 mint 20 并且无法加载(因为旧内核已被删除)。(我可以暂时用 grub 菜单中的“e”更新它。)

原来有效的grub是用ubuntu设置的,ubuntu是在mint之前安装的。我登录到 ubuntu 并运行“update-grub”。grub 菜单是固定的。

希望它对某人有用。