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 解決了這個問題,Kubuntu 將 Windows 新增到了啟動選單中;我想避免對Windows 的這種幹擾,因此我將Fedora 安裝在具有自己的EFI 的單獨驅動器上,然後,當我將KaOS 安裝在與Windows 相同的驅動器上時,我選擇使用另一個驅動器中的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 定制器中看到: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 上上述所有三個文件中指定的文件/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

相關內容