Ich konfiguriere derzeit Gentoo auf einer neuen Maschine mit einer NVME 500 GB SSD.
Ich starte meinen Computer neu, wähle die Festplatte aus, von der ich booten möchte, grub2 initialisiert,und dann, ich erhalte die folgende Fehlermeldung:
!!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() ::
Hier ist mein aktuelles Partitionsschema:
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
Hier ist mein schwarzes Kind:
/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"
Dies ist Teil meiner Konfiguration in/etc/default/grub
GRUB_CMDLINE_LINUX="rootfstype=xfs init=/usr/lib/systemd/systemd"
Und das ist mein/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 ###
Abschließend hier der Inhalt meines 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
Zur Fehlerbehebung habe ich außerdem Folgendes getan:
- Aktivieren Sie die NVMe-Unterstützung im Kernel.
- Aktivieren Sie die XFS-Dateisystemunterstützung im Kernel.
- Laden Sie Grub ohne rootfstype=xfs
- Ersetzen Sie die UUID durch
/dev/nvme0n1p4
in meiner fstab-Datei - ertränke meinen Kummer im Alkohol
Dieses Problemtrifft nicht zu, da es ein USB-Treiberproblem war. UndDieses hierwar auch keine Hilfe.
Antwort1
!!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() ::
Das sieht nicht wie eine von GRUB erstellte Nachricht aus.
Vielleicht funktioniert Ihr GRUB tatsächlich einwandfrei, aber Ihrem Initramfs fehlt etwas Wesentliches, wie ein NVMe-Treiber oder ein Supportmodul für den GPT-Partitionstyp (es sei denn, Sie haben sie alle als Fix in Ihren Kernel eingebaut)? Und dann ist es vielleicht das Gentoo-Initramfs, das in eine Art Fehlerbehebungsmodus abstürzt?
Sieht so aus, als ob Gentoo mehrere Möglichkeiten zum Erstellen einer Initramfs-Datei bietet: genkernel
Sie können es tun, oder Sie können verwenden dracut
. Welche verwenden Sie?
Sie können in diese Eingabeaufforderung Folgendes eingeben shell
und nachsehen, ob die /dev/nvme*
Geräteknoten vorhanden sind, welche Kernelmodule geladen sind usw. Wenn Ihr Dienstprogramm zum Erstellen von Initramfs noch keine spezielle integrierte Unterstützung für NVMe-Systemfestplatten bietet, reicht es möglicherweise aus, dem Dienstprogramm einfach mitzuteilen, dass „Initramfs die nvme-core.ko
und nvme.ko
Module laden muss, bevor nach dem Root-Dateisystem gesucht werden kann“. Möglicherweise kann es dies nicht automatisch herausfinden.