La actualización de grub de Kubuntu 20.04 (UEFI) no encuentra el sistema de una unidad diferente (Fedora 34 KDE)

La actualización de grub de Kubuntu 20.04 (UEFI) no encuentra el sistema de una unidad diferente (Fedora 34 KDE)

Tengo varios sistemas instalados; primero, cronológicamente, Windows 10, luego Kubuntu 20.04, luego Fedora 34 KDE y luego KaOS. Fedora está solo en una segunda unidad, con su EFI separado, pero lo comparte con KaOS.

La configuración es así:

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

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

/dev/nvme0n1p1es la partición EFI para Windows (instalada en /dev/nvme0n1p2) 5y Ubuntu (instalada en nvme0n1p6), /dev/sda1es la partición EFI para Fedora ( /dev/sda4y 5) y KaOS ( /dev/nvme0n1p7)

Esta extraña elección está relacionada con el hecho de que la instalación anterior de otro Linux, además de Kubuntu, usando el mismo EFI que Windows, resultó en corrupción del arranque de Windows; eso se solucionó reinstalando Kubuntu, que agregó Windows a su menú de inicio; Quería evitar tal interferencia con Windows y por lo tanto instalé Fedora en una unidad separada con su propio EFI, y luego, cuando instalé KaOS en la misma unidad que Windows, seleccioné usar el EFI de la otra unidad. compartiéndolo con Fedora.

Después de instalar KaOS, su menú de inicio (ejecutado por systems-boot, no grub)no mostró los otros sistemas.

Los menús de inicio de Fedora y Ubuntu estaban ocultos en la interfaz Firmware UEFI. Fedora incluye todos los sistemas.El menú de inicio de kUbuntu incluía todos excepto Fedora.

He utilizado la reparación de arranque tratando de hacer que el menú de arranque de Fedora sea el predeterminado porque era el más completo (instalando grub en sda1) pero no había una opción para "arrancar primero" Fedora: entonces, seleccioné Kubuntu. Esto resultó enEl menú de inicio de Kubuntu se convierte en el predeterminado y solo falta Fedora.

Dado que Kubuntu grub ahora tiene el control, me gustaría usarlo y simplemente agregarle Fedora. Actualizar grub no ayuda.


EDITAR-1, después de los comentarios de @oldfred:

informe de reparación de arranque enpastilla-tambiénAQUÍ(preguntado en comentarios)

EDITAR-2, después de la respuesta de @oldfred:

Busqué los archivos grub.cfg de Kubuntu y descubrí que la lista de inicio de Kubuntu está determinada por el archivo boot/grub/grub.cfgagregando una entrada de menú allí.

Al mirar el archivo grub.cfg de Fedora, pude encontrar: allí faltan entradas de Fedora, solo se enumeran el resto de los sistemas. Solo estos también se ven en Grub Customizer en Fedora: las entradas de Fedora en su propia lista de inicio parecen determinadas por los archivos separados de /loader/entries/su partición raíz ext4 de 1 GB (sda4). Copiarlos en /boot/efi/loader/entries/ de Kubuntu no tiene ningún efecto.

Al no tener el modelo propio de Fedora para una entrada en Kubuntu boot/grub/grub.cfg, copié y modifiqué las líneas que encontré allí para KaOS, agregando las especificaciones de Fedora, es decir, el UUID. No estoy seguro de que el formato sea correcto, es exactamente el mismo para KaOS en ese archivo, con solo el nombre de la distribución y el UUID ajustados:

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
}

De esta manera, el nombre de Fedora se agrega a la lista de inicio, por supuesto, pero no funciona:

con el UUID de la bfrspartición ( sda5) me sale el mensaje:

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

He probado, por si acaso, con el UUID de la partición “raíz” de Fedora ( sda4), y me sale el mensaje:

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

Creo que la forma correcta de hacerlo es agregar el UUID de la sda5partición; que es el especificado en los tres archivos mencionados anteriormente en Fedora/loader/entries/

Parece que grub no reconoce btrfs.

He instalado todos los archivos relacionados con “btrfs” que pude encontrar usando Apper, unos 30 paquetes, pero sucede lo mismo.


EDITAR-3

Según comentarios adicionales, entiendo que no debo editar boot/grub/grub.cfg, sino editar el archivo etc/grub.d/40_customy copiar partes de otros archivos. Pero no entiendo qué archivos debo usar. No pude encontrar en las particiones de Fedora algo relacionado con su propio arranque y su propia entrada en la lista de arranque que no sean archivos en ext4 - /loader/entries. ¿Entonces es de alguno de esos que debería copiar?

¿Es algo como esto copiado de /media/root/651b659a-8fc5-46d6-b291-22b3b523ebaf/loader/entries/a037a4898b9540bfbc52f3f377b2ff4d-5.13.19-200.fc34.x86_64.conf(es decir, de la partición sda4 ex4 de 1 GB de Fedora):

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

¿O es algo así como la entrada para KaOS en el archivo de Kubununtu boot/grub/grub.cfgpublicado en EDIT-2 arriba?

Respuesta1

Había instalado Fedora una vez, pero antes usaba btrfs. Pero mi entrada grub en Ubuntu cargó en cadena o archivo de configuración en la entrada de arranque UEFI. Los agregué a 40_custom en el grub de Ubuntu. Los UUID son únicos y debe cambiarlos a los UUID de su instalación. Para arrancar directamente a grub

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

A menudo puedes simplemente copiar una sección de arranque para grub de una instalación a otra. Eso es lo que está haciendo os-prober. Es posible que necesite controladores adicionales (btrfs) o archivos .mod de grub2 (como btrfs.mod) para que reconozca diferentes formatos o configuraciones. Si usa rEFInd, debe traducir la estrofa de grub a refind.conf. Un archivo de configuración es un enlace a otro archivo que es grub o que tiene estrofas de inicio de tipo grub.

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

Usando 40_custom y menú personalizado

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

Archivo de configuración:

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

información relacionada