Kubuntu 20.04(UEFI)grub-update 未找到不同驱动器的系统(Fedora 34 KDE)

Kubuntu 20.04(UEFI)grub-update 未找到不同驱动器的系统(Fedora 34 KDE)

我安装了多个系统;首先,按时间顺序,是 Windows 10,然后是 Kubuntu 20.04,然后是 Fedora 34 KDE,然后是 KaOS。Fedora 单独安装在第二个驱动器上,具有单独的 EFI,但与 KaOS 共享。

配置如下:

Device             Start       End   Sectors   Size Type
/dev/nvme0n1p1      2048    739327    737280   360M EFI System
/dev/nvme0n1p2    739328   1001471    262144   128M Microsoft reserved
/dev/nvme0n1p3   1001472 457750527 456749056 217,8G Microsoft basic data
/dev/nvme0n1p4 457750528 459757567   2007040   980M Windows recovery environment
/dev/nvme0n1p5 459757568 500107263  40349696  19,2G Microsoft basic data
/dev/nvme0n1p6 500107264 644737022 144629759    69G Linux filesystem
/dev/nvme0n1p7 644737023 976773134 332036112 158,3G Linux filesystem



Device          Start        End    Sectors   Size Type
/dev/sda1        2048    1230847    1228800   600M EFI System
/dev/sda2   251660288 1258293247 1006632960   480G Linux filesystem
/dev/sda3  1258293248 1875384319  617091072 294,3G Microsoft basic data
/dev/sda4     1230848    3327999    2097152     1G Linux filesystem
/dev/sda5     3328000  251660287  248332288 118,4G Linux filesystem

在此处输入图片描述

在此处输入图片描述

/dev/nvme0n1p1/dev/nvme0n1p2是 Windows(安装在上5)和 Ubuntu(安装在 上nvme0n1p6) 的 EFI 分区,是 Fedora(和)和 KaOS()/dev/sda1的 EFI/dev/sda45/dev/nvme0n1p7

这个奇怪的选择与以下事实有关:过去除了 Kubuntu 之外还安装了其他 Linux,使用与 Windows 相同的 EFI,导致 Windows 启动损坏;通过重新安装 Kubuntu 解决了这个问题,将 Windows 添加到了它的启动菜单中;我想避免对 Windows 的这种干扰,因此我在单独的驱动器上安装了 Fedora,它有自己的 EFI,然后,当我在与 Windows 相同的驱动器上安装了 KaOS 时,我选择使用另一个驱动器中的 EFI,并与 Fedora 共享。

安装 KaOS 后其启动菜单(由 运行systems-boot,而不是grub没有显示其他系统

Fedora 和 Ubuntu 的启动菜单隐藏在固件 UEFI 界面中。Fedora 包含所有系统。kUbuntu 的启动菜单包括 Fedora 之外的所有内容

我曾尝试使用启动修复将 Fedora 的启动菜单设为默认菜单,因为它是最完整的(通过在 上安装 grub sda1),但没有“首先启动” Fedora 的选项:因此,我选择了 Kubuntu。结果Kubuntu 的启动菜单成为默认,仅缺少 Fedora。

鉴于 Kubuntu grub 现已控制,我想使用它并将 Fedora 添加到其中。更新 grub 没有帮助。


EDIT-1,根据@oldfred的评论:

启动修复报告粘贴箱-还这里(评论中询问)

EDIT-2,在@oldfred回答之后:

我查看了 Kubuntu grub.cfg 文件,发现 Kubuntu 启动列表是boot/grub/grub.cfg通过在文件中添加菜单项来确定的。

查看我能找到的 Fedora 自己的 grub.cfg 文件:那里缺少 Fedora 条目,只列出了其余系统。在 Fedora 上的 Grub Customizer 中也只看到这些条目:其自己的启动列表中的 Fedora 条目似乎由其/loader/entries/1 GB 根 ext4 分区 (sda4) 中的单独文件决定。将这些条目复制到 Kubuntu 的 /boot/efi/loader/entries/ 上没有任何效果。

由于 Kubuntu 的条目中没有 Fedora 自己的模型boot/grub/grub.cfg,我复制并修改了那里为 KaOS 找到的行 — 通过添加 Fedora 的规范,即 UUID。我不确定格式是否正确,该文件中的 KaOS 格式正是如此,仅调整了发行版名称和 UUID:

menuentry 'Fedora 34 KDE' --class Fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-4834b108-13c9-406c-8a7b-a9c53440283c' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod fat
    set root='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  F4F4-1172
    else
      search --no-floppy --fs-uuid --set=root F4F4-1172
    fi
    echo    'Loading Linux linux ...'
    linux   /vmlinuz-linux root=UUID=4834b108-13c9-406c-8a7b-a9c53440283c rw  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /initramfs-linux.img
}

这样,Fedora 名称当然就添加到了启动列表中,但是不起作用:

使用分区的 UUID bfrs( sda5) 我收到消息:

mount: new/-root: unknown filesystem type ‘btrfs’

为了以防万一,我尝试使用“根” Fedora 分区 () 的 UUID sda4,然后收到以下消息:

Error: root device mounted successfully but sbin/init does not exist

我认为,正确的做法是添加sda5分区的 UUID;它是 Fedora 上上述所有三个文件中指定的 UUID。/loader/entries/

看起来 grub 无法识别 btrfs。

我已经安装了使用 Apper 能找到的所有“btrfs”相关文件,大约 30 个包,但还是发生了同样的情况。


編輯-3

从进一步的评论中我明白我不能编辑boot/grub/grub.cfg,而是编辑文件etc/grub.d/40_custom并复制其他文件的部分。但我不明白我应该使用哪些文件。除了ext4 -中的文件外,我在 Fedora 自己的分区上找不到与其自己的启动和启动列表中的自己的条目相关的内容/loader/entries。那么我应该从其中一个中复制吗?

/media/root/651b659a-8fc5-46d6-b291-22b3b523ebaf/loader/entries/a037a4898b9540bfbc52f3f377b2ff4d-5.13.19-200.fc34.x86_64.conf它是从(即从 Fedora 的 1GB ex4 分区 sda4)复制而来的内容吗:

title Fedora (5.13.19-200.fc34.x86_64) 34 (KDE Plasma)
version 5.13.19-200.fc34.x86_64
linux /vmlinuz-5.13.19-200.fc34.x86_64
initrd /initramfs-5.13.19-200.fc34.x86_64.img
options root=UUID=4834b108-13c9-406c-8a7b-a9c53440283c ro rootflags=subvol=root rhgb quiet 
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel

boot/grub/grub.cfg或者它类似于上面 EDIT-2 下发布的Kubununtu 文件中的 KaOS 条目?

答案1

我曾经安装过 Fedora,但之前它使用 btrfs。但是我在 Ubuntu 中的 grub 条目链式加载或配置文件到 UEFI 启动条目。我将这些添加到 Ubuntu 的 grub 中的 40_custom。UUID 是唯一的,您需要更改为安装的 UUID。要直接启动到 grub

menuentry "Fedora UEFI" {
  search --file --no-floppy --set=root F496-1330
  chainloader (${root})/efi/fedora/grub.cfg
}

您通常只需将 grub 的启动节从一个安装复制到另一个安装即可。这就是 os-prober 所做的。您可能需要额外的驱动程序 (btrfs) 或 grub2 的 .mod 文件(如 btrfs.mod)才能使其识别不同的格式或配置。如果使用 rEFInd,您必须将 grub 节转换为 refind.conf。配置文件是指向另一个 grub 文件或具有 grub 类型启动节的文件的链接。

menuentry "Fedora UEFI" {
search.fs_uuid a9bd9a65-bc8c-41b1-95b1-2dceb66b2652 root hd1,gpt2 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
}

使用 40_custom 和自定义菜单

https://help.ubuntu.com/community/Grub2/CustomMenus

配置文件:

https://www.gnu.org/software/grub/manual/grub/grub.html#Multi_002dboot-manual-config

https://ubuntuforums.org/showthread.php?t=2076205&page=54&p=13788092#post13788092

相关内容