我在 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。我建议谨慎行事,因为这可能会导致系统无法运行。
- 将 grub 复制到 ESP 分区:
sudo cp -r /boot/grub /boot/efi/grub
- 更新
/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_uuid
和prefix
.search.fs_uuid
应该是您的 ESP 分区的 ID。
search.fs_uuid 5494-0F80 root
set prefix=($root)'/grub'
configfile $prefix/grub.cfg
- 编辑挂载
/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
- (可选)删除/重命名旧
/boot/grub
文件夹:
sudo mv /boot/grub /boot/grub-old
sudo mkdir /boot/grub
- 绑定绑定
/boot/grub
来自/boot/efi/grub
:
sudo mount /boot/grub
重新生成 grub 配置。我在这一步中使用了 Grub 定制器,并启用了使用之前启动的条目。
重启