更改 Grub 变量的默认位置

更改 Grub 变量的默认位置

我在 BTRFS 分区上安装了 Manjaro Linux,并且没有为“boot”创建单独的分区。我是双引导的,我希望 Grub 记住我最后的选择。我按照教程执行此操作,但随后我开始在启动时看到“不允许稀疏文件”。经过一番查找,似乎是因为分区为 BTRFS 时 Grub 无法保存设置。

本论坛页面(https://archived.forum.manjaro.org/t/solved-grub-btrfs-error-sparse-file-not-allowed/70031/4)有一个已接受的答案,即禁用保存最后的选择,但我想要这样。还有另一个答案说“例如,将 Grub 变量的默认位置从 /boot/grub... 更改为 /boot/efi/EFI/Manjaro(需要对 Grub 进行更改)。”,但他没有给出任何进一步的信息细节。我怎样才能将位置更改为/boot/efi/EFI/Manjaro

答案1

我不确定这种方法的后果,但这对我来说适用于带有根 btrfs 分区的 Ubuntu 22.04。我建议谨慎行事,因为这可能会导致系统无法运行。

  1. 将 grub 复制到 ESP 分区:
sudo cp -r /boot/grub /boot/efi/grub
  1. 更新/boot/efi/EFI/ubuntu/grub.cfg(此路径在 Manjaro 上会有所不同,查找包含 的文件夹grub.cfg)以指向 ESP 路径。

使用现有配置:

search.fs_uuid 1cc8a1e1-9d10-46e9-8e65-3b27047374a4 root 
set prefix=($root)'/@/boot/grub'
configfile $prefix/grub.cfg

更新search.fs_uuidprefix.search.fs_uuid应该是您的 ESP 分区的 ID。

search.fs_uuid 5494-0F80 root 
set prefix=($root)'/grub'
configfile $prefix/grub.cfg
  1. 编辑挂载/etc/fstab并将其绑定/boot/efi/grub/boot/grub.您应该已经有一个要 mount 的条目/boot/efi
UUID=5494-0F80  /boot/efi   vfat  umask=0077     0  1
/boot/efi/grub  /boot/grub  none  defaults,bind  0  0
  1. (可选)删除/重命名旧/boot/grub文件夹:
sudo mv /boot/grub /boot/grub-old
sudo mkdir /boot/grub
  1. 绑定绑定/boot/grub来自/boot/efi/grub
sudo mount /boot/grub
  1. 重新生成 grub 配置。我在这一步中使用了 Grub 定制器,并启用了使用之前启动的条目。

  2. 重启

相关内容