[Solved] Can't boot after today's update

Hey,

I have a problem similar to OPs. I also reinstalled grub and my filesystem is also encrypted using luks.
When I try to boot grub starts fine and asks for my ecryption password. When I enter the password the computer restarts and I end up in uefi.

I installed manjaro with 20.0.3 (KDE)
I installed using Calamares
and used the following options: nonfree gpu drivers, erase-disk mode, no swap, encryption
I am dual booting with Windows 10

lsblk -f
NAME        FSTYPE      FSVER            LABEL            UUID                                 FSAVAIL FSUSE% MOUNTPOINT
loop0       squashfs    4.0                                                                          0   100% /run/miso/sfs/livefs
loop1       squashfs    4.0                                                                          0   100% /run/miso/sfs/mhwdfs
loop2       squashfs    4.0                                                                          0   100% /run/miso/sfs/desktopfs
loop3       squashfs    4.0                                                                          0   100% /run/miso/sfs/rootfs
sda         iso9660     Joliet Extension MANJARO_KDE_2003 2020-06-06-08-14-33-00                              
├─sda1      iso9660     Joliet Extension MANJARO_KDE_2003 2020-06-06-08-14-33-00                     0   100% /run/miso/bootmnt
└─sda2      vfat        FAT12            MISO_EFI         F327-8F27                                           
nvme0n1                                                                                                       
├─nvme0n1p1 vfat        FAT32                             7164-578E                                           
└─nvme0n1p2 crypto_LUKS 1                                 c543961f-9501-47ee-bb38-f325520fbb71                
nvme1n1                                                                                                       
├─nvme1n1p1 ntfs                         Recovery         30B24095B2406188                                    
├─nvme1n1p2 vfat        FAT32                             1440-D17C                                           
├─nvme1n1p3                                                                                                   
└─nvme1n1p4                                                                                                   
fdisk -l
Disk /dev/nvme0n1: 894.26 GiB, 960197124096 bytes, 1875385008 sectors
Disk model: Force MP510                             
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 19902CC8-BC02-A94D-8FD0-09AE058587F5

Device          Start        End    Sectors  Size Type
/dev/nvme0n1p1   4096     618495     614400  300M EFI System
/dev/nvme0n1p2 618496 1875379904 1874761409  894G Linux filesystem


Disk /dev/nvme1n1: 894.26 GiB, 960197124096 bytes, 1875385008 sectors
Disk model: Force MP510                             
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1D81216F-72FD-451E-BAC8-E45168AF5C62

Device           Start        End    Sectors   Size Type
/dev/nvme1n1p1    2048    1085439    1083392   529M Windows recovery environment
/dev/nvme1n1p2 1085440    1290239     204800   100M EFI System
/dev/nvme1n1p3 1290240    1323007      32768    16M Microsoft reserved
/dev/nvme1n1p4 1323008 1875384319 1874061312 893.6G Microsoft basic data


Disk /dev/loop0: 20.86 MiB, 21852160 bytes, 42680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop1: 565.6 MiB, 593055744 bytes, 1158312 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop2: 1.71 GiB, 1813102592 bytes, 3541216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop3: 596.6 MiB, 625012736 bytes, 1220728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 14.94 GiB, 16013852672 bytes, 31277056 sectors
Disk model: STORE N GO      
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot   Start     End Sectors  Size Id Type
/dev/sda1  *         64 6093039 6092976  2.9G  0 Empty
/dev/sda2       6093040 6101231    8192    4M ef EFI (FAT-12/16/32)

I am not sure how to tackle this issue (other than reinstalling) and would be glad for any ideas.

Dual-booting with windows has really been hit-or-miss in the last few years. Did you install mtools and os-prober per the guide?

I did not. But I´ll retry the whole procedure with mtools and os-prober installed and report back.

I retried now, but when running update-grub I get the following error:

grub-probe: error: cannot find a GRUB drive for /dev/sda1. Check your device.map.

I think this is because I use nvme ssds which, by default, use the names /dev/nvme0n1p1 instead of /dev/sda1. Any idea how I could tell grub to use my nvme ssd?

What command did you use to reinstall grub? Instead of /dev/sda1 you should use your actual partition /dev/nvme1n1p2

Hey, thanks for your help.

I reinstalled grub with

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck

However I was now able to boot from grub successfully by using

grub> cryptomount (hd0,gpt2)
(enter password)
Slot 0 opened
grub> set root=(crypto0)
grub> set prefix=(crypto0)/boot/grub
grub> insmod normal
grub> normal

From there I can boot manjaro regularly. Should I still reinstall grub again with /dev/nvme0n1p2 or is there a possibility to restore grub from within my bootet system. I ran update-grub, but this did not help.

Can you post your /etc/default/grub?

Were you chtooted or booted into your installation when you did the grub-install?

Sure

GRUB_DEFAULT=saved
GRUB_TIMEOUT=10
GRUB_TIMEOUT_STYLE=hidden
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet cryptdevice=UUID=c543961f-9501-47ee-bb38-f325520fbb71:luks-c543961f-9501-47ee-bb38-f325520fbb71 root=/dev/mapper/luks-c543961f-9501-47ee-bb38-f325520fbb71 apparmor=1 security=apparmor udev.log_priority=3"
GRUB_CMDLINE_LINUX=""

# If you want to enable the save default function, uncomment the following
# line, and set GRUB_DEFAULT to saved.
GRUB_SAVEDEFAULT=true

# 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

# 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 'videoinfo'
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/yyy" instead of "root=/dev/disk/by-uuid/yyy"
#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-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/usr/share/grub/background.png"
GRUB_THEME="/usr/share/grub/themes/manjaro/theme.txt"

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

For some reason I am not allowed to post three x in a row. I replaced it with yyy.

The configuration seems correct, as does the grub-install command, assuming you did it from booted installation or chroot. Not sure what is causing the issue. How is your /etc/mkinitcpio.conf?

May it be caused by this line

GRUB_CMDLINE_LINUX_DEFAULT="quiet cryptdevice=UUID=c543961f-9501-47ee-bb38-f325520fbb71:luks-c543961f-9501-47ee-bb38-f325520fbb71 root=/dev/mapper/luks-c543961f-9501-47ee-bb38-f325520fbb71 apparmor=1 security=apparmor udev.log_priority=3"

Or is it normal, that root=/dev/mapper/… Thought it was supposed to be something like /dev/nvme0n1p2

Here’s my /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="/crypto_keyfile.bin"

# 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 modconf block keyboard keymap encrypt filesystems"

# 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=()

Yes, I did it from chroot. I opened the encrypted file with cryptsetup open and mounted the resulting folder under /dev/mapper/… to /mnt Maybe that was the wrong thing to do…

It is is normal for encrypted system.

From live session, decrypt your partition and mount the decrypted volume (/dev/mapper/something) to /mnt. Then mount /dev/nvme1n1p2 /mnt/boot/efi. Then manjaro-chroot /mnt. Then run

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck
update-grub 

Then reboot.

1 Like

Alright, thanks. I`ll do that and report back how it went.

One more question, should I still mount my efi partition, as mentioned in the guide?

Yes, mount it to /mnt/boot/efi before chrooting

Sorry I´m a bit confused. That would mean to mount both /dev/nvme1n1p2 and the efi partition to /mnt/boot/efi. Or did you mean my efi partition with /dev/nvme1n1p2 (my efi is on /dev/nvme0n1p1)

Seems that autocorrect mixed that. Decrypted root volume goes to /mnt, efi partition goes to /mnt/boot/efi

Gotcha, thanks for the clarification.

Hey, sorry for answering so late. I could not answer anymore yesterday, because I reached my maximum amount of posts for my first day.

Your solution fixed the issue for me, and I can use my installation again as normal. :grinning:

Thank you so much for helping me out with this!

For anyone else reading this, this resolved the issue for me:

Of course, keep in mind, that your efi partition may have a different name. Also manjaro-chroot /mnt is your best friend here and easier than chrooting manually.

1 Like

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.