No se puede iniciar en gentoo: GRUB2 - xfs - NVME SSD

No se puede iniciar en gentoo: GRUB2 - xfs - NVME SSD

Actualmente estoy configurando gentoo en una máquina nueva usando un SSD NVME de 500 Gb.

Reinicio mi computadora, selecciono el disco desde el que quiero arrancar, grub2 se inicializa,y luego, el error que me sale es el siguiente:

!!Block device UUID="9a89bdb4-8f36-4aa6-a4c7-831943b0985c" is not a valid root device...
!!Could not find the root block device in UUID="9a89bdb4-8f36-4aa6-a4c7-831943b0985c"
Please specify another value or: Press Enter for the same, type "shell" for a shell, or q to skip..." 
root block device() ::

Aquí está mi esquema de partición actual:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0 465.8G  0 disk
├─nvme0n1p1 259:1    0     2M  0 part /boot/efi
├─nvme0n1p2 259:2    0   128M  0 part /boot
├─nvme0n1p3 259:3    0     5G  0 part [SWAP]
├─nvme0n1p4 259:4    0   200G  0 part /
└─nvme0n1p5 259:5    0 260.6G  0 part /home

Aquí está mi blkid:

/dev/nvme0n1p1: SEC_TYPE="msdos" UUID="DC09-2FD7" TYPE="vfat" PARTLABEL="grub" PARTUUID="2d5991fd-18ac-1148-a4d8-deb02f744ecb"
/dev/nvme0n1p2: UUID="6070-07C6" TYPE="vfat" PARTLABEL="boot" PARTUUID="5dba49e5-03cc-744e-bd47-a7570e83b08c"
/dev/nvme0n1p3: UUID="db229aaf-ddb4-4a86-8075-e7f035bfbf19" TYPE="swap" PARTLABEL="swap" PARTUUID="fdc303cc-e54e-c049-899a-e26286b5ec47"
/dev/nvme0n1p4: UUID="9a89bdb4-8f36-4aa6-a4c7-831943b0985c" TYPE="xfs" PARTLABEL="root" PARTUUID="da6232eb-58ab-9948-a3f6-8a7f14eebde4"
/dev/nvme0n1p5: UUID="e3237966-1b71-44b3-9d96-1ed7cc6f4d84" TYPE="xfs" PARTLABEL="home" PARTUUID="5b294354-fc3b-3148-bba2-418acfbb32bc"

Esto es parte de mi configuración en/etc/default/grub

GRUB_CMDLINE_LINUX="rootfstype=xfs init=/usr/lib/systemd/systemd"

Y esta es mi/boot/grub/grub.cfg

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod xfs
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root  9a89bdb4-8f36-4aa6-a4c7-831943b0985c
else
  search --no-floppy --fs-uuid --set=root 9a89bdb4-8f36-4aa6-a4c7-831943b0985c
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_CA
  insmod gettext
fi
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-9a89bdb4-8f36-4aa6-a4c7-831943b0985c' {
    load_video
    if [ "x$grub_platform" = xefi ]; then
        set gfxpayload=keep
    fi
    insmod gzio
    insmod part_gpt
    insmod fat
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  6070-07C6
    else
      search --no-floppy --fs-uuid --set=root 6070-07C6
    fi
    echo    'Loading Linux x86_64-4.19.44-gentoo ...'
    linux   /kernel-genkernel-x86_64-4.19.44-gentoo root=/dev/nvme0n1p4 ro rootfstype=xfs init=/usr/lib/systemd/systemd
    echo    'Loading initial ramdisk ...'
    initrd  /initramfs-genkernel-x86_64-4.19.44-gentoo
}
submenu 'Advanced options for Gentoo GNU/Linux' $menuentry_id_option 'gnulinux-advanced-9a89bdb4-8f36-4aa6-a4c7-831943b0985c' {
    menuentry 'Gentoo GNU/Linux, with Linux x86_64-4.19.44-gentoo' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-x86_64-4.19.44-gentoo-advanced-9a89bdb4-8f36-4aa6-a4c7-831943b0985c' {
        load_video
        if [ "x$grub_platform" = xefi ]; then
            set gfxpayload=keep
        fi
        insmod gzio
        insmod part_gpt
        insmod fat
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root  6070-07C6
        else
          search --no-floppy --fs-uuid --set=root 6070-07C6
        fi
        echo    'Loading Linux x86_64-4.19.44-gentoo ...'
        linux   /kernel-genkernel-x86_64-4.19.44-gentoo root=/dev/nvme0n1p4 ro rootfstype=xfs init=/usr/lib/systemd/systemd
        echo    'Loading initial ramdisk ...'
        initrd  /initramfs-genkernel-x86_64-4.19.44-gentoo
    }
    menuentry 'Gentoo GNU/Linux, with Linux x86_64-4.19.44-gentoo (recovery mode)' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-x86_64-4.19.44-gentoo-recovery-9a89bdb4-8f36-4aa6-a4c7-831943b0985c' {
        load_video
        if [ "x$grub_platform" = xefi ]; then
            set gfxpayload=keep
        fi
        insmod gzio
        insmod part_gpt
        insmod fat
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root  6070-07C6
        else
          search --no-floppy --fs-uuid --set=root 6070-07C6
        fi
        echo    'Loading Linux x86_64-4.19.44-gentoo ...'
        linux   /kernel-genkernel-x86_64-4.19.44-gentoo root=/dev/nvme0n1p4 ro single rootfstype=xfs init=/usr/lib/systemd/systemd
        echo    'Loading initial ramdisk ...'
        initrd  /initramfs-genkernel-x86_64-4.19.44-gentoo
    }
    menuentry 'Gentoo GNU/Linux, with Linux 4.19.44-gentoo' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.44-gentoo-advanced-9a89bdb4-8f36-4aa6-a4c7-831943b0985c' {
        load_video
        if [ "x$grub_platform" = xefi ]; then
            set gfxpayload=keep
        fi
        insmod gzio
        insmod part_gpt
        insmod fat
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root  6070-07C6
        else
          search --no-floppy --fs-uuid --set=root 6070-07C6
        fi
        echo    'Loading Linux 4.19.44-gentoo ...'
        linux   /vmlinuz-4.19.44-gentoo root=/dev/nvme0n1p4 ro rootfstype=xfs init=/usr/lib/systemd/systemd
        echo    'Loading initial ramdisk ...'
        initrd  /initramfs-genkernel-x86_64-4.19.44-gentoo
    }
    menuentry 'Gentoo GNU/Linux, with Linux 4.19.44-gentoo (recovery mode)' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.44-gentoo-recovery-9a89bdb4-8f36-4aa6-a4c7-831943b0985c' {
        load_video
        if [ "x$grub_platform" = xefi ]; then
            set gfxpayload=keep
        fi
        insmod gzio
        insmod part_gpt
        insmod fat
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root  6070-07C6
        else
          search --no-floppy --fs-uuid --set=root 6070-07C6
        fi
        echo    'Loading Linux 4.19.44-gentoo ...'
        linux   /vmlinuz-4.19.44-gentoo root=/dev/nvme0n1p4 ro single rootfstype=xfs init=/usr/lib/systemd/systemd
        echo    'Loading initial ramdisk ...'
        initrd  /initramfs-genkernel-x86_64-4.19.44-gentoo
    }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

Finalmente, aquí está el contenido de mi etc/fstab:

# /etc/fstab: static file system information.
#
# noatime turns off atimes for increased performance (atimes normally aren't
# needed); notail increases performance of ReiserFS (at the expense of storage
# efficiency).  It's safe to drop the noatime options if you want and to
# switch between notail / tail freely.
#
# The root filesystem should have a pass number of either 0 or 1.
# All other filesystems should have a pass number of 0 or greater than 1.
#
# See the manpage fstab(5) for more information.
#

# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
#
# NOTE: Even though we list ext4 as the type here, it will work with ext2/ext3
#       filesystems.  This just tells the kernel to use the ext4 driver.
#
# NOTE: You can use full paths to devices like /dev/sda3, but it is often
#       more reliable to use filesystem labels or UUIDs. See your filesystem
#       documentation for details on setting a label. To obtain the UUID, use
#       the blkid(8) command.

#LABEL=boot             /boot           ext4            noauto,noatime  1 2
#UUID=58e72203-57d1-4497-81ad-97655bd56494              /               ext4            noatime         0 1
#LABEL=swap             none            swap            sw              0 0
#/dev/cdrom             /mnt/cdrom      auto            noauto,ro       0 0

# /dev/nvme0n1p4
UUID=9a89bdb4-8f36-4aa6-a4c7-831943b0985c       /               xfs             rw,relatime,attr2,inode64,noquota       0 1

# /dev/nvme0n1p2
UUID=6070-07C6          /boot           vfat            rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro  0 2

# /dev/nvme0n1p1
UUID=DC09-2FD7          /boot/efi       vfat            rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro  0 2

# /dev/nvme0n1p5
UUID=e3237966-1b71-44b3-9d96-1ed7cc6f4d84       /home           xfs             rw,relatime,attr2,inode64,noquota       0 2

# /dev/nvme0n1p3
UUID=3128bf96-71f7-4a95-a81c-f82788c37f4f       none            swap            defaults        0 0

También hice lo siguiente para solucionar problemas:

  • habilitar el soporte nvme en el kernel
  • habilitar el soporte del sistema de archivos xfs en el kernel
  • cargar grub sin rootfstype=xfs
  • sustituir el UUID /dev/nvme0n1p4en mi archivo fstab
  • ahogar mis penas en licor

Este problemano se aplica porque fue un problema del controlador USB. YÉsteTampoco fue de ninguna ayuda.

Respuesta1

!!Block device UUID="9a89bdb4-8f36-4aa6-a4c7-831943b0985c" is not a valid root device...
!!Could not find the root block device in UUID="9a89bdb4-8f36-4aa6-a4c7-831943b0985c"
Please specify another value or: Press Enter for the same, type "shell" for a shell, or q to skip..." 
root block device() ::

Eso no parece un mensaje producido por GRUB.

¿Quizás su GRUB realmente funciona bien, pero a su initramfs le falta algo esencial, como un controlador NVMe o un módulo de soporte de tipo de partición GPT (a menos que los haya integrado todos como fijos en su kernel, por supuesto)? Entonces, ¿tal vez sea el initramfs de Gentoo el que está fallando en algún tipo de modo de solución de problemas?

Parece que Gentoo tiene varias formas de crear un archivo initramfs: genkernelpuedes hacerlo o puedes usar dracut. Cual estas usando?

Es posible que desee escribir shellese mensaje y ver si los /dev/nvme*nodos del dispositivo están presentes o no, qué módulos del kernel están cargados, etc. Si su utilidad initramfs Creator aún no tiene soporte específico para los discos del sistema NVMe integrados, podría ser tan simple como simplemente decirle a la utilidad "el initramfs debe cargar los módulos nvme-core.koy nvme.koantes de intentar buscar el sistema de archivos raíz"; es posible que no pueda resolverlo automáticamente.

información relacionada