"Failed to mount /boot/efi" after 2026-06-26 stable update

New stable update, and once again the system won’t boot:

[FAILED] Failed to mount /boot/efi.

[DEPEND] Dependency failed for Local File Systems.

At least it lets me enter emergency mode. But I don’t know what to do next. :man_facepalming: :sweat_smile:

PD:In the previous update, it was a matter of mkinitcpio’s HOOKS and the GRUB CMDLINE. (I have my root partition encrypted with LUKSv1)

I’ve moved your post into a dedicated Topic for individual attention.

Are you able to chroot in to your system? I’m afraid I have no experience with LUKS, so won’t be able to help with this specific issue, so hopefully those who do will see this. :wink:

I’m going to copy and paste the contents of my mkinitcpio, grub, fstab, and crypttab files here in case they’re useful:

GRUB:

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=hidden
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet rd.luks.uuid=70a88b71-2f8d-4908-b4ad-c8278ee3ef5e root=/dev/mapper/luks-70a88b71-2f8d-4908-b4ad-c8278ee3ef5e 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="cryptodisk 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/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 this option to enable os-prober execution in the grub-mkconfig command
GRUB_DISABLE_OS_PROBER=false

# 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"

# Uncomment to ensure that the root filesystem is mounted read-only so that
# systemd-fsck can run the check automatically. We use 'fsck' by default, which
# needs 'rw' as boot parameter, to avoid delay in boot-time. 'fsck' needs to be
# removed from 'mkinitcpio.conf' to make 'systemd-fsck' work.
# See also Arch-Wiki: https://wiki.archlinux.org/index.php/Fsck#Boot_time_checking
#GRUB_ROOT_FS_RO=true

MKINITCPIO:

# 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=(usbhid xhci_hcd)
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 microcode modconf block filesystems fsck)
#
##   This setup will generate a 'full' image which supports most systems.
##   No autodetection is done.
#    HOOKS=(base udev microcode modconf block filesystems fsck)
#
##   This setup assembles a mdadm array with an encrypted root file system.
##   Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
#    HOOKS=(base udev microcode modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#
##   This setup loads an lvm2 volume group.
#    HOOKS=(base udev microcode modconf block lvm2 filesystems fsck)
#
##   This will create a systemd based initramfs which loads an encrypted root filesystem.
#    HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)
#
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr and fsck hooks.
HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block encrypt filesystems fsck)

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

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

# MODULES_DECOMPRESS
# Decompress loadable kernel modules and their firmware during initramfs
# creation. Switch (yes/no).
# Enable to allow further decreasing image size when using high compression
# (e.g. xz -9e or zstd --long --ultra -22) at the expense of increased RAM usage
# at early boot.
# Note that any compressed files will be placed in the uncompressed early CPIO
# to avoid double compression.
#MODULES_DECOMPRESS="no"

CRYPTTAB:

luks-70a88b71-2f8d-4908-b4ad-c8278ee3ef5e	UUID=70a88b71-2f8d-4908-b4ad-c8278ee3ef5e	none	luks,nofail

FSTAB:

# <file system> <mount point> <type> <options> <dump> <pass>

UUID=D763-0A94	/boot/efi	vfat	umask=0077	0	2
UUID=02038e0c-764b-4b14-ab8b-b1f739cddf6e	/	ext4	noatime	0	1

I can enter emergency mode. Can I try something from here, or should I use chroot with a Live USB?

:thinking:

Mod edit: Consecutive posts merged.

You need to change the encrypt hook to sd-encrypt:

##   This will create a systemd based initramfs which loads an encrypted root filesystem.
#    HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)
3 Likes

What about sudo mkinitcpio -P after that?

3 Likes

Yes, that is required when mkinitcpio.conf is modified.

I edited mkinitcpio.conf from emergency mode, changed the “encrypt” hook to “sd-encrypt,” ran mkinitcpio -P and update-grub, and rebooted, but I’m still getting the same error: “failed to mount /boot/efi.”

Please forgive me if I say something silly—I’m new to Linux—but is it possible that the module needed for systemd to mount the VFAT boot partition is missing?

I’d say chroot. I wouldn’t know what to suggest for “emergency mode” as I’ve always just booted the Live USB when needing to fix things. :wink:

Edit: Our replies “crossed in the post”. :smiley:

The best way to do it is from a chroot, because emergency mode does not use the actual root filesystem — it’s a ramfs.

Negative, because then you would get an error message about a wrong or unsupported filesystem type, and the kernel normally always has support for vfat.

1 Like

The solution is already written above (chroot, hooks, mkinit, grub). But you say it happens AGAIN to you. This is strange. Is it possible, that you merge falsely pacnew file (like deleting instead of merging or similar), or booting and working from a snapshot without properly restoring it? Food for thought. Because those changes are persistent, once fixed it should not happen again next month.
Fix the current problem but just think about it.

I’m going to try chroot—could you give me some guidance on the best way to do a chroot on an encrypted partition?

I already have a live USB with Manjaro KDE.

You’ll first have to open the container with cryptsetup before you can mount it, but the rest should be pretty well documented in the HowTo below. :wink: :backhand_index_pointing_down:

1 Like

This had also crossed my mind. :thinking:

I’ve already done manjaro-chroot:

sh-5.3# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/cryptroot  228G   60G  158G  28% /
/dev/nvme0n1p1         300M  184M  117M  62% /boot/efi
efivarfs               128K   42K   82K  34% /sys/firmware/efi/efivars
udev                   7.4G     0  7.4G   0% /dev
shm                    7.5G     0  7.5G   0% /dev/shm
run                    7.5G     0  7.5G   0% /run
tmp                    7.5G     0  7.5G   0% /tmp
overlay                 12G  374M   11G   4% /etc/resolv.conf

What would be the next steps? :sweat_smile:

Should I do this?

[ -f /var/lib/pacman/db.lck ] && rm -f /var/lib/pacman/db.lck
pacman-mirrors -f && pacman -Syyu
mkinitcpio -P
update-grub
exit

UPDATE:

I’ve made following in manjaro-chroot:

sh-5.3# [ -f /var/lib/pacman/db.lck ] && rm -f /var/lib/pacman/db.lck
sh-5.3# pacman -Syyu
:: Synchronizing package databases...
 core                                                       150.4 KiB   874 KiB/s 00:00 [--------------------------------------------------] 100%
 extra                                                        8.9 MiB  26.1 MiB/s 00:00 [--------------------------------------------------] 100%
 multilib                                                   142.7 KiB   892 KiB/s 00:00 [--------------------------------------------------] 100%
:: Starting full system upgrade...
warning: f3: local (10.0-1) is newer than extra (8.0-1)
resolving dependencies...
looking for conflicting packages...

Packages (1) chromium-149.0.7827.200-1

Total Download Size:   125.55 MiB
Total Installed Size:  402.54 MiB
Net Upgrade Size:        0.00 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 chromium-149.0.7827.200-1-x86_64                           125.5 MiB  65.7 MiB/s 00:02 [--------------------------------------------------] 100%
(1/1) checking keys in keyring                                                          [--------------------------------------------------] 100%
(1/1) checking package integrity                                                        [--------------------------------------------------] 100%
(1/1) loading package files                                                             [--------------------------------------------------] 100%
(1/1) checking for file conflicts                                                       [--------------------------------------------------] 100%
(1/1) checking available disk space                                                     [--------------------------------------------------] 100%
:: Running pre-transaction hooks...
(1/1) Creating Timeshift snapshot before upgrade...
==> skipping timeshift-autosnap due skipRsyncAutosnap in /etc/timeshift-autosnap.conf set to TRUE.
:: Processing package changes...
(1/1) upgrading chromium                                                                [--------------------------------------------------] 100%
:: Running post-transaction hooks...
(1/6) Arming ConditionNeedsUpdate...
(2/6) Refreshing PackageKit...
Error connecting: Could not connect: No such file or directory
error: command failed to execute correctly
(3/6) Updating icon theme caches...
(4/6) Looking for Pacnew/Pacsave created.
(5/6) Checking which packages need to be rebuilt
(6/6) Updating the desktop file MIME type cache...
sh-5.3# mkinitcpio -P
==> Building image from preset: /etc/mkinitcpio.d/linux612.preset: 'default'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-6.12-x86_64 -g /boot/initramfs-6.12-x86_64.img
==> Starting build: '6.12.94-1-MANJARO'
  -> Running build hook: [base]
  -> Running build hook: [systemd]
  -> Running build hook: [autodetect]
  -> Running build hook: [microcode]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
  -> Running build hook: [keyboard]
  -> Running build hook: [sd-vconsole]
  -> Running build hook: [block]
  -> Running build hook: [sd-encrypt]
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-6.12-x86_64.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux618.preset: 'default'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-6.18-x86_64 -g /boot/initramfs-6.18-x86_64.img
==> Starting build: '6.18.36-1-MANJARO'
  -> Running build hook: [base]
  -> Running build hook: [systemd]
  -> Running build hook: [autodetect]
  -> Running build hook: [microcode]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
  -> Running build hook: [keyboard]
  -> Running build hook: [sd-vconsole]
  -> Running build hook: [block]
  -> Running build hook: [sd-encrypt]
==> WARNING: Possibly missing firmware for module: 'qat_6xxx'
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-6.18-x86_64.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful
sh-5.3# update-grub
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-6.18-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-6.18-x86_64.img
Found linux image: /boot/vmlinuz-6.12-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-6.12-x86_64.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
ERROR: mkdir /var/lock/dmraid
Adding boot menu entry for UEFI Firmware Settings ...
Root filesystem isn't btrfs
If you think an error has occurred, please file a bug report at "https://github.com/Antynea/grub-btrfs"
Found memtest86+ image: /boot/memtest86+/memtest.bin
done
sh-5.3# 

I’m going to restart, and I’ll update you later with the results.

LAST UPDATE:

After the reboot, the problem persists—I still can’t mount the /boot/efi partition. :scream: :cry:

Mod edit: Consecutive posts merged.
If there are no intervening replies, please edit your previous post instead to add further information. Cheers!
:wink:

1 Like

I’m guessing that the mkinitcpio.conf you edited was not the one on your actual root filesystem. You should check its contents while inside the chroot, and only if they are correct, rebuild the initramfs.

Judging by the sh shell i suspect this too.

2 Likes

After upgrading my Manjaro KDE installation today, I also ran into the same error.

In the boot logs I found the lines

Jun 26 12:59:21 reckoner mount[923]: mount: /boot/efi: unknown filesystem type 'vfat'.
Jun 26 12:59:21 reckoner mount[923]:        dmesg(1) may have more information after failed mount system call.
Jun 26 12:59:21 reckoner systemd[1]: boot-efi.mount: Mount process exited, code=exited, status=32/n/a
Jun 26 12:59:21 reckoner systemd[1]: boot-efi.mount: Failed with result 'exit-code'.
Jun 26 12:59:21 reckoner systemd[1]: Failed to mount /boot/efi.
Jun 26 12:59:21 reckoner systemd[1]: Dependency failed for Local File Systems.

My installation does not use LUKS though.

After upgrading the system and rebooting, the kernel in use was still logging “Linux version 7.0.10-1-MANJARO” as first boot message.
During the installation, the kernel version 7.0.13 was installed on my machine.

Running sudo mkinitcpio -P gave an error because of a non-existing path being used in folder /lib/modules.

What finally solved the problem for me was forcefully reinstalling the latest Linux 7.0 kernel using

sudo pacman -S --overwrite "*" linux70 linux70-headers
sudo mkinitcpio -P
sudo update-grub

Worth mentioning might be

  • the upgrade operation went through without any error (and no pacman db lock file being present)
  • I found failing unmount calls during the system reboot

Good luck solving your issue.

2 Likes

I think the same thing happened to me:

Jun 26 12:14:55 X300 systemd[1]: Mounting /boot/efi...
Jun 26 12:14:55 X300 systemd[1]: Mounting Arbitrary Executable File Formats File System...
Jun 26 12:14:55 X300 systemd[1]: Virtual Machine and Container Storage (Compatibility) skipped, unmet condition check ConditionPathExists=/var/lib/>
Jun 26 12:14:55 X300 systemd[1]: Listening on Disk Image Download Service Socket.
Jun 26 12:14:55 X300 systemd[1]: Mounted Arbitrary Executable File Formats File System.
Jun 26 12:14:55 X300 mount[782]: mount: /boot/efi: tipo de sistema de ficheros 'vfat' desconocido.
Jun 26 12:14:55 X300 mount[782]:        dmesg(1) puede ser que tenga m<C3><A1>s informaci<C3><B3>n tras el fallo de la llamada al sistema de montaj>
Jun 26 12:14:55 X300 systemd[1]: boot-efi.mount: Mount process exited, code=exited, status=32/n/a
Jun 26 12:14:55 X300 systemd[1]: boot-efi.mount: Failed with result 'exit-code'.
Jun 26 12:14:55 X300 systemd[1]: Failed to mount /boot/efi.
Jun 26 12:14:55 X300 systemd[1]: Dependency failed for Local File Systems.
Jun 26 12:14:55 X300 systemd[1]: local-fs.target: Job local-fs.target/start failed with result 'dependency'.
Jun 26 12:14:55 X300 systemd[1]: local-fs.target: Triggering OnFailure= dependencies.

:thinking:

After compiling all the information that has been generously provided to me in this post, I’m going to give it another try. I’ll use a Manjaro KDE live USB drive and post all the step-by-step details here:

MOUNTING PARTITIONS:

sudo su -                                                                                                                            ✔ 
[manjaro ~]# lsblk --fs
NAME        FSTYPE      FSVER            LABEL            UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
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
sdb                                                                                                           
├─sdb1      exfat       1.0              Ventoy           4ACB-755E                                           
│ ├─ventoy  iso9660     Joliet Extension MANJARO_KDE_2604 2026-03-27-22-39-34-00                     0   100% /run/miso/bootmnt
│ └─sdb1    exfat       1.0              Ventoy           4ACB-755E                                           
├─sdb2      vfat        FAT16            VTOYEFI          EA6C-95B2                                           
└─sdb3      exfat       1.0              ALMACEN          6301-9879                                           
nvme0n1                                                                                                       
├─nvme0n1p1 vfat        FAT32            NO_LABEL         D763-0A94                                           
└─nvme0n1p2 crypto_LUKS 1                                 70a88b71-2f8d-4908-b4ad-c8278ee3ef5e                
[manjaro ~]# cryptsetup luksOpen /dev/nvme0n1p2 cryptroot
enter password /dev/nvme0n1p2: 
[manjaro ~]# mount /dev/mapper/cryptroot /mnt
[manjaro ~]# mount /dev/nvme0n1p1 /mnt/boot/efi
[manjaro ~]# lsblk --fs
NAME          FSTYPE      FSVER            LABEL            UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
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
sdb                                                                                                             
├─sdb1        exfat       1.0              Ventoy           4ACB-755E                                           
│ ├─ventoy    iso9660     Joliet Extension MANJARO_KDE_2604 2026-03-27-22-39-34-00                     0   100% /run/miso/bootmnt
│ └─sdb1      exfat       1.0              Ventoy           4ACB-755E                                           
├─sdb2        vfat        FAT16            VTOYEFI          EA6C-95B2                                           
└─sdb3        exfat       1.0              ALMACEN          6301-9879                                           
nvme0n1                                                                                                         
├─nvme0n1p1   vfat        FAT32            NO_LABEL         D763-0A94                             116,1M    61% /mnt/boot/efi
└─nvme0n1p2   crypto_LUKS 1                                 70a88b71-2f8d-4908-b4ad-c8278ee3ef5e                
  └─cryptroot ext4        1.0                               02038e0c-764b-4b14-ab8b-b1f739cddf6e  156,9G    26% /mnt

BINDS AND MOUNTS:

[manjaro ~]# mount --bind /dev /mnt/dev
[manjaro ~]# mount --bind /dev/pts /mnt/dev/pts
[manjaro ~]# mount -t proc proc /mnt/proc
[manjaro ~]# mount -t sysfs sysfs /mnt/sys
[manjaro ~]# mount -t efivarfs efivarfs /mnt/sys/firmware/efi/efivars
[manjaro ~]# mount --bind /run /mnt/run
[manjaro ~]# findmnt | grep /mnt
└─/mnt                                        /dev/mapper/cryptroot ext4        rw,relatime
  ├─/mnt/dev                                  dev                   devtmpfs    rw,nosuid,relatime,size=7719044k,nr_inodes=1929761,mode=755,inode64
  │ └─/mnt/dev/pts                            devpts                devpts      rw,nosuid,noexec,relatime,gid=5,mode=600,ptmxmode=000
  ├─/mnt/boot/efi                             /dev/nvme0n1p1        vfat        rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro
  ├─/mnt/proc                                 proc                  proc        rw,relatime
  ├─/mnt/sys                                  sysfs                 sysfs       rw,relatime
  │ └─/mnt/sys/firmware/efi/efivars           efivarfs              efivarfs    rw,relatime
  └─/mnt/run                                  run                   tmpfs       rw,nosuid,nodev,relatime,mode=755,inode64

CHROOTING:

[manjaro ~]# chroot /mnt /bin/bash
[manjaro /]#

CHECKING HOOKS AND CMDLINE:

[manjaro /]# grep HOOKS /etc/mkinitcpio.conf
# HOOKS
# This is the most important setting in this file.  The HOOKS control the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
#    HOOKS=(base)
#    HOOKS=(base udev autodetect microcode modconf block filesystems fsck)
#    HOOKS=(base udev microcode modconf block filesystems fsck)
#    HOOKS=(base udev microcode modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#    HOOKS=(base udev microcode modconf block lvm2 filesystems fsck)
#    HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)

HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)
[manjaro /]# cat /etc/default/grub | grep -i cmdline
GRUB_CMDLINE_LINUX_DEFAULT="quiet rd.luks.uuid=70a88b71-2f8d-4908-b4ad-c8278ee3ef5e root=/dev/mapper/luks-70a88b71-2f8d-4908-b4ad-c8278ee3ef5e apparmor=1 security=apparmor udev.log_priority=3"
GRUB_CMDLINE_LINUX=""

REINSTALLING KERNELS:

[manjaro /]# mhwd-kernel -li
Currently running: 6.18.18-1-MANJARO (linux618)
The following kernels are installed in your system:
   * linux612
   * linux618
[manjaro /]# pacman -S --overwrite "*" linux612 linux612-headers linux618 linux618-headers
advertencia: linux612-6.12.94-1 está actualizado -- reinstalándolo
advertencia: linux612-headers-6.12.94-1 está actualizado -- reinstalándolo
advertencia: linux618-6.18.36-1 está actualizado -- reinstalándolo
advertencia: linux618-headers-6.18.36-1 está actualizado -- reinstalándolo
resolviendo dependencias...
buscando conflictos entre paquetes...

Paquetes (4) linux612-6.12.94-1  linux612-headers-6.12.94-1  linux618-6.18.36-1  linux618-headers-6.18.36-1

Tamaño total de la instalación:  587,78 MiB
Tamaño neto tras actualizar:       0,00 MiB

:: ¿Continuar con la instalación? [S/n] 
(4/4) comprobando las claves del depósito                                                [----------------------------------------------------] 100%
(4/4) verificando la integridad de los paquetes                                          [----------------------------------------------------] 100%
(4/4) cargando los archivos de los paquetes                                              [----------------------------------------------------] 100%
(4/4) comprobando conflictos entre archivos                                              [----------------------------------------------------] 100%
(4/4) comprobando el espacio disponible en el disco                                      [----------------------------------------------------] 100%
:: Ejecutando los «hooks» de preinstalación...
(1/1) Creating Timeshift snapshot before upgrade...
==> skipping timeshift-autosnap due skipRsyncAutosnap in /etc/timeshift-autosnap.conf set to TRUE.
:: Procesando los cambios de los paquetes...
(1/4) reinstalando linux612                                                              [----------------------------------------------------] 100%
(2/4) reinstalando linux612-headers                                                      [----------------------------------------------------] 100%
(3/4) reinstalando linux618                                                              [----------------------------------------------------] 100%
(4/4) reinstalando linux618-headers                                                      [----------------------------------------------------] 100%
:: Ejecutando los «hooks» de posinstalación...
(1/7) Arming ConditionNeedsUpdate...
(2/7) Updating module dependencies...
(3/7) Updating linux initcpios...
==> Building image from preset: /etc/mkinitcpio.d/linux612.preset: 'default'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-6.12-x86_64 -g /boot/initramfs-6.12-x86_64.img
==> Starting build: '6.12.94-1-MANJARO'
  -> Running build hook: [base]
  -> Running build hook: [systemd]
  -> Running build hook: [autodetect]
  -> Running build hook: [microcode]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
  -> Running build hook: [keyboard]
  -> Running build hook: [sd-vconsole]
  -> Running build hook: [block]
  -> Running build hook: [sd-encrypt]
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-6.12-x86_64.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux618.preset: 'default'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-6.18-x86_64 -g /boot/initramfs-6.18-x86_64.img
==> Starting build: '6.18.36-1-MANJARO'
  -> Running build hook: [base]
  -> Running build hook: [systemd]
  -> Running build hook: [autodetect]
  -> Running build hook: [microcode]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
  -> Running build hook: [keyboard]
  -> Running build hook: [sd-vconsole]
  -> Running build hook: [block]
  -> Running build hook: [sd-encrypt]
==> WARNING: Possibly missing firmware for module: 'qat_6xxx'
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-6.18-x86_64.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful
(4/7) Refreshing PackageKit...
Error: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
error: la orden no se ejecutó correctamente
(5/7) Updating Grub-Bootmenu
Generando un fichero de configuración de grub...
Encontrado tema: /usr/share/grub/themes/manjaro/theme.txt
Encontrada imagen de linux: /boot/vmlinuz-6.18-x86_64
Encontrada imagen de memoria inicial: /boot/amd-ucode.img /boot/initramfs-6.18-x86_64.img
Encontrada imagen de linux: /boot/vmlinuz-6.12-x86_64
Encontrada imagen de memoria inicial: /boot/amd-ucode.img /boot/initramfs-6.12-x86_64.img
Aviso: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Adding boot menu entry for UEFI Firmware Settings ...
Root filesystem isn't btrfs
If you think an error has occurred, please file a bug report at "https://github.com/Antynea/grub-btrfs"
Found memtest86+ image: /boot/memtest86+/memtest.bin
hecho
(6/7) Looking for Pacnew/Pacsave created.
(7/7) Checking which packages need to be rebuilt
[manjaro /]# 

REBOOTING

PD:
Bad news, the same problem persists. “Failed to mount /boot/efi”

Is it possible that, in the cmdline, I need to specify the rd.luks.uuid of the boot partition in addition to the root rd.luks.uuid? :thinking:

I’m also considering reverting the changes to hooks and cmdline and switching back to udev instead of systemd.

Any helpful suggestions? :sweat_smile:

HAPPY ENDING?

Well, I have some good news. I finally have my system back—alive, kicking, and fully functional—though thanks to a little trick. :partying_face:

IN SUMMARY:

In emergency mode, I realized that the encrypted / (root) partition was mounting correctly and in read-write (rw) mode. So I tried a different approach. I edited /etc/fstab and added the nofail option to the /boot/efi partition so that the boot process would continue and I wouldn’t be forced into emergency mode because it couldn’t mount the partition:

# <file system> <mount point> <type> <options> <dump> <pass>

UUID=D763-0A94  /boot/efi       vfat    umask=0077,nofail      0       2

It worked only partially—I was finally able to access my system’s graphical environment, but I had no Ethernet connection, and neither the boot vfat partition nor another btrfs storage partition I had on a different disk would mount. Only the LUKS-encrypted partitions mounted (the root partition and another encrypted partition where I store my Timeshift snapshots). So I decided to restore the system using a Timeshift snapshot I had taken two hours before the fateful update. :smirking_face:

CONCLUSIONS

1.- LUKSv1, GRUB2 and Systemd don’t get along very well.
2.- Sooner or later I’ll have to deal with this update, and there’s a very high probability that the same thing will happen to me again. So right now, I’m not too enthusiastic about reopening this battle.
3.- God bless Timeshift. :squinting_face_with_tongue:
4.- I’ve learned more from these last two Stable Updates than I did in the previous four years I’ve been using Manjaro KDE.
5.- Knowledge is valuable and very rewarding, but the path to its acquisition is very painful. :sweat_smile:
6.- I’m too old for these kinds of surprises. :winking_face_with_tongue:

Does sudo mkinitcpio -P complete without an error?

No it is not possible because the boot is not encrypted. Which actually means there is another problem, besides the hooks that are supposed to be fixed now (which also means switching back to udev will not fix anything).
Unfortunately i have no idea what can prevent you from mounting the ESP. The only thing i can think of is to check it for errors. Boot from live usb, do not mount anything and fsck /dev/nvme0n1p1

1 Like