update-grub 不会更新 /boot/efi/EFI/ubuntu/grub.cfg

update-grub 不会更新 /boot/efi/EFI/ubuntu/grub.cfg

(编辑 3:用户错误。在调试启动问题时复制了 /boot/efi/EFI/ubuntu/grub.cfg)

在 UEFI 安全启动模式下安装最近发布的 Ubuntu 18.04 Server 后,安装程序将 grub.cfg 放在此位置:

  • /boot/efi/EFI/ubuntu/grub.cfg

这与选择文件系统:手动分区时创建的表相匹配,它将引导分区安装在/启动/efi(/dev/sda1)。

然而,sudo 更新 grubsudo 更新-grub2不会覆盖 grub 配置,而是更新/boot/grub/grub.cfg,即不在启动分区上的文件。

问题 1: update-grub、update-grub2 等是否已被某些新程序取代?问题 2:如果没有,这是否是需要提交的错误?

编辑:困惑++。

  • 计算机 1,实际硬件,安装和小更新的手动分配,例如sudo apt 安装 tboot, 问题再现。

  • 计算机 2,vmware 映像:vanilla 安装,问题不能再现。

两台计算机都是 UEFI 安全启动,并具有相同/相似的分区。不同的 grub.cfg 经历相同的更新行为,但在 vmware 映像上,grub 尊重文件/boot/grub/grub.cfg,在硬件上安装 grub 尊重/boot/efi/EFI/ubuntu/grub.cfg

编辑2:

  • 计算机 1 现在已经重新安装,同时手动分配文件系统,然后再次使用原始分区(250GB 磁盘,使用 120GB,其余空闲)。两者都不重新安装可以重现原始问题,所以基本上现在问题已经消失。计算机上的所有三个安装都来自同一个 ISO/USB 棒。

答案1

我也遇到过这种情况。要更新 EFI grub.cfg,您需要执行以下操作:

grub-install --efi-directory=/boot/efi

如果您的 EFI 安装在/boot/efi.

答案2

只是为了关闭这个查询的循环 - 我需要更新,/boot/efi/EFI/ubuntu/grub.cfg因为我已经改变了我的目录的位置/boot(UUID 改变了)。 update-grub不会更新该文件,但是

sudo dpkg-reconfigure grub-efi-amd64

在您回答了一些问题之后,将会触发重写。

答案3

blaufish 指出

原始的 /boot/efi/EFI/ubuntu/grub.cfg 只是一个引用 /boot/grub.cfg 的三行文件。

这三行 grub.cfg 是不曾用过,至少在我的 grub 2.02-2ubuntu8.6 上是这样的。第二行内容如下

set prefix=($root)'/@/boot/grub'

现在 $root 上没有 @,运行 grub-install 时也没有。(@ 是一个 zesty 安装,已损坏,并在一段时间前被删除。)相反,grub.cfg 的 grub 路径被写入 grubx64.efi 可执行文件中。可以通过运行

strings grubx64.efi | tail

我提到这一点是因为有人可能会想象,就像我曾经想象的那样,将这个 grub.cfg 更改为指向其他地方会很有用。我使用 grub-install 的 --boot-directory 选项来设置它。我在 /mnt/top 上安装了 btrfs 根目录 (subvolid=5,subvol=/),并想引导到 /@grub:

--boot 目录=/mnt/top/@grub/boot

(我不确定这是否一直有效。当我第一次尝试独立于 btrfs 上的任何安装来设置 grub 时,我遇到了麻烦,最后使用了一个可以从中启动的快照来让 grub-install 写入我想要的内容。但现在很好了。)

答案4

我使用 vi 更改了 /boot/efi/EFI/ubuntu/grub.cfg。您只需要更改 UID 和 gpt。工作正常。请小心。

相关内容