os-prober proporciona un UUID incorrecto para Arch Linux

os-prober proporciona un UUID incorrecto para Arch Linux

Hasta ayer, todo funcionaba y os-prober generaba con éxito entradas de menú para la instalación de Arch Linux. Sin embargo, hoy, cuando intenté iniciar Arch, recibí un error que indicaba que no se podía encontrar el sistema de archivos raíz en el UUID que estaba intentando usar. Después de algunos retoques, pude hacer que Arch arrancara cambiando manualmente la raíz a la partición real "/dev/sda7" en lugar de usar UUID.

Me preguntaba qué podría causar que os-prober genere esta configuración no válida solo para la instalación de Arch Linux. Todavía funciona bien para las instalaciones de openSUSE y Windows 7. Otra cosa a tener en cuenta es que agregó "rw quiet" al final de la línea de inicio de Arch Linux. Eso no es algo que hiciera anteriormente, y me pregunto si el cambio tiene que ver con el motivo por el cual el UUID es incorrecto.

A continuación publicaré la entrada del menú para Arch Linux. Como puede ver, os-prober tiene la parte --set-root= 'algún UUID' con el UUID correcto, pero más adelante, al iniciar Linux, tiene -root=UUID='algún otro UUID incorrecto'.

Solo para aclarar, tengo Ubuntu, Arch Linux, openSUSE y Windows 7 en esta máquina, pero estoy usando Ubuntu como sistema operativo principal y le permito administrar GRUB y sus configuraciones. Todos los sistemas operativos se encuentran en sus versiones más actualizadas.

menuentry 'Arch (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-b9522736-878c-49e3-b30d-ad65589aa1d9' {
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos7'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7  b9522736-878c-49e3-b30d-ad65589aa1d9
    else
      search --no-floppy --fs-uuid --set=root b9522736-878c-49e3-b30d-ad65589aa1d9
    fi
    linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 rw quiet
    initrd /boot/initramfs-linux.img
}

Como puede ver, los dos primeros UUID son diferentes del último. Los dos primeros son correctos y el último es incorrecto. Si reemplazo el último UUID con '/dev/sda7', arranca sin problemas. He editado manualmente grub.cfg para hacer esto, pero me gustaría que os-prober vuelva a funcionar automáticamente. Gracias.

Respuesta1

Bien, entonces la información sobre cómo os-prober busca en diferentes archivos grub.cfg para /bootel directorio respectivo de cada sistema operativo, incluso si ese sistema operativo no es el que instaló grub en el MBR/EFI es lo que me ayudó a resolver este problema.

Resulta que una actualización anterior de Arch Linux bloqueó un archivo grub.cfg en el directorio /boot. Sin entrar demasiado en detalles, no tenía las cosas adecuadas instaladas en Arch para que se ejecutara grub-mkconfig, por lo que obtuve algún tipo de plantilla en grub.cfg. Este era el archivo que os-prober estaba escaneando y era el archivo que tenía el UUID incorrecto. Lo que tuve que hacer fue desactivar os-prober en Arch Linux /etc/default/grub. Luego ejecuté sudo grub-mkconfig -o /boot/grub/grub.cfg, que creó un archivo grub.cfg adecuado para Arch que el sistema operativo de Ubuntu ahora usa correctamente. Usaré la misma técnica para openSUSE.

Una cosa a tener en cuenta es que en lugar de permitir que os-prober genere estas entradas de menú por sí solo, hacer que las extraiga del archivo grub.cfg respectivo de cada sistema operativo le permite tener diferentes valores predeterminados para cada distribución, lo que por lo tanto permite diferentes parámetros para tener un arranque silencioso con bienvenida, o mostrar todo el proceso de arranque, etc.

¡Gracias por la ayuda chicos!

información relacionada