You are not logged in.

#1 2021-01-19 11:02:55

The Most Curious Thing
Member
Registered: 2021-01-19
Posts: 6

[SOLVED] After 5.10.8 upgrade, GRUB can't find root to mount

EDIT: Marking this as solved ASAP before anyone sinks time into this, as it seems to be solved. Looking into what I did.

My system went awry after a series of missteps after updating to kernel 5.10.8 and I'm trying to recover it now. For context: my upgrade to 5.10.8 and the latest mesa packages left me with an AMDGPU driver that crashes a few minutes after boot (on KDE Plasma). In trying to troubleshoot this I think I powered down while the kernel was reinstalling (doing this outside chroot on an unstable system was silly, I know). (Also, I put this in Installation as it seems more in line with the content here, despite this being a working system since July -- was this wrong?).

The current evident problem is that GRUB can't seem to find any drive to work with:
https://cdn.discordapp.com/attachments/ … 050126.jpg

Here's how I'm reaching that point. I'm entering chroot as follows:

> su
> cryptsetup open --type luks /dev/nvme0n1p2 crypto_LUKS
> mount /dev/mangrove/root /mnt
> mount /dev/nvme0n1p1 /mnt/boot
> mount -t proc proc /mnt/proc
> mount -t sysfs sys /mnt/sys
> mount -o bind /dev /mnt/dev
> mount -o bind /run /mnt/run
> mount -t devpts pts /mnt/dev/pts/
> chroot /mnt /bin/bash

From there, my drives:

> lsblk -f
NAME                FSTYPE      FSVER    LABEL       UUID                                   FSAVAIL FSUSE% MOUNTPOINT
loop0               squashfs    4.0                                                                        
sda                 crypto_LUKS 2                    1d25b43e-6399-4b03-b621-2e40773a167b                  
sdb                                                                                                        
└─sdb1              vfat        FAT32    ARCH_202007 1C27-67F8                                             
nvme0n1                                                                                                    
├─nvme0n1p1         vfat        FAT32                01E8-21C7                               214.4M    16% /boot
└─nvme0n1p2         crypto_LUKS 2                    372a7379-4469-4d3b-b630-ffe858c2eed1                  
  └─crypto_LUKS     LVM2_member LVM2 001             AcVhJk-vbZO-14c3-z4kf-6Ji9-p3YR-ZKdYZT                
    ├─mangrove-swap swap        1                    db40d3d9-bc12-4fc5-9255-6b4025d9d6cf                  
    └─mangrove-root ext4        1.0                  e261a46f-6b2b-446a-b69d-750771e6528b    555.6G    33% /

/etc/mkinitcpio.conf

# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(piix ide_disk reiserfs)
MODULES=()

# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image.  This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()

# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.
FILES=()

# HOOKS
# This is the most important setting in this file.  The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
##   This setup specifies all modules in the MODULES setting above.
##   No raid, lvm2, or encrypted root is needed.
#    HOOKS=(base)
#
##   This setup will autodetect all modules for your system and should
##   work as a sane default
#    HOOKS=(base udev autodetect block filesystems)
#
##   This setup will generate a 'full' image which supports most systems.
##   No autodetection is done.
#    HOOKS=(base udev block filesystems)
#
##   This setup assembles a pata mdadm array with an encrypted root FS.
##   Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
#    HOOKS=(base udev block mdadm encrypt filesystems)
#
##   This setup loads an lvm2 volume group on a usb device.
#    HOOKS=(base udev block lvm2 filesystems)
#
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr, fsck and shutdown hooks.
HOOKS=(base udev autodetect keyboard keymap consolefont modconf block lvm2 encrypt filesystems fsck)

# COMPRESSION
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"

# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()

/etc/default/grub

# GRUB boot loader configuration

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet cryptdevice=UUID=372a7379-4469-4d3b-b630-ffe858c2eed1:cryptlvm root=/dev/mangrove/root"
GRUB_CMDLINE_LINUX=""

# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y

# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu

# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=auto

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"

# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"

# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
#GRUB_SAVEDEFAULT="true"

(Note that the output from the picture above was after I changed "loglevel=3 quiet" to "loglevel=7" in the GRUB interface.)

I'm generating initramfs like so, but...I'm not sure entirely what I'm doing here. Why does "-p linux" seemingly do nothing?

> mkinitcpio -p linux
> mkinitcpio -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> ERROR: '/lib/modules/5.7.6-arch1-1' is not a valid kernel module directory
> mkinitcpio -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img -k 5.10.8-arch1-1
==> Starting build: 5.10.8-arch1-1
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [autodetect]
  -> Running build hook: [keyboard]
==> WARNING: Possibly missing firmware for module: xhci_pci
  -> Running build hook: [keymap]
  -> Running build hook: [consolefont]
==> WARNING: consolefont: no font found in configuration
  -> Running build hook: [modconf]
  -> Running build hook: [block]
  -> Running build hook: [lvm2]
  -> Running build hook: [encrypt]
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful

I'm generating grub.cfg like so.

> grub-mkconfig -o /boot/grub/grub/cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/amd-ucode.img /boot/initramfs-linux.img
done

What's the problem here, or where's my next area of research? What more info should I share? Thank you!

Mod edit: Replaced oversized image with a link -- V1del

Last edited by V1del (2021-01-19 12:17:13)

Offline

#2 2021-01-22 22:52:22

equalizer876
Member
Registered: 2018-09-11
Posts: 78

Re: [SOLVED] After 5.10.8 upgrade, GRUB can't find root to mount

Offline

Board footer

Powered by FluxBB