Sharing here what worked correctly for me, after several tries and fails…
Ressources - main ones as I went through many:
Initial problem / status:
Installation made 2 years ago, with Calamares with one main encrypted partition and a boot partition. After upgrading to 20251208 stable, and having installed 6.18 kernel, I was not able to boot into it - see https://forum.manjaro.org/t/stable-update-2025-12-08-25-1-anh-linh-preview/183479/76?u=telcoced
Actions I’ve triggered right after the upgrade: handle the merge of the mkinitcpio pacnew file. Most probably, I’ve done it wrong…but can’t be sure.
Configuration that was applied BEFORE upgrade, as far as I understood - sorry but some topics and file roles are still unclear to me:
- /etc/crypttpad file, handling luks partition unlock - not sure about that - using a luks key located at the root of this encrypted partition and named crypto_keyfile.bin
- /etc/fstab file, handling mountpoint for this partition
- /etc/mkintcpio file, MAYBE defining the luks key location, and handling the intramfs parameters
- /etc/default/grub file, defining that Grub has to handle an encrypted partition, and default options for booting
- Noticeable boot process: in any cases, it seems that the partition is unlocked twice, once for Grub, once for initramfs. Second one can be bypassed / transparent to end user by using a Luks key stored in the encrypted partition
- Noticeable trick - maybe obvious: I never had to chroot as I was lucky enough to never completely be stuck at boot. But you have the ability to tweak the Grub boot options without chrooting, so if it’s all related to grub options, you are still safe…but don’t count on it
Final word on this initial status: I really can’t know what was causing the issue with the 6.18 kernel…
Settings applied and commands to solve the issue:
- Getting your partition names / UUID:
lsblk -f. Mine looked like this one, the important one being nvme0n1p2 / 3d6aebc6-f20e-4479-a851-f2c41ed328c3
nvme0n1
├─nvme0n1p1 vfat FAT32 21E7-5162 298,9M 0% /boot/efi
└─nvme0n1p2 crypto_LUKS 1 3d6aebc6-f20e-4479-a851-f2c41ed328c3
└─root ext4 1.0 39b3a819-f874-44c0-a554-766d566088b8 96,9G 53% /
-
Not sure it’s mandatory, as I already had a key file at the root of the partition, but I created a key for Luks. Commands:
su -
- getting your key created:
dd bs=512 count=4 if=/dev/random iflag=fullblock | install -m 0600 /dev/stdin /etc/cryptsetup-keys.d/cryptlvm.key
- Adding it to luks:
cryptsetup -v luksAddKey /dev/nvme0n1p2 /etc/cryptsetup-keys.d/cryptlvm.key - you’ll need the Luks passphrase for that as far as I remember
-
Modify mkintcpio file, mine now looks like this, extracts:
HOOKS=(base systemd autodetect microcode modconf kms keyboard keymap sd-vconsole block sd-encrypt filesystems fsck) - the key there is the sd-encrypt parameter. Also, base option is described as usesell in some posts / procedures, but I found no issues keeping it…
FILES=(/etc/cryptsetup-keys.d/cryptlvm.key) - used to be FILES=(/crypto_keyfile.bin)
- generate initramfs:
mkinitcpio -P
-
Modify /etc/default/grub, extract:
GRUB_CMDLINE_LINUX_DEFAULT="quiet rd.luks.key=/etc/cryptsetup-keys.d/cryptlvm.key rd.luks.name=3d6aebc6-f20e-4479-a851-f2c41ed328c3=root root=/dev/mapper/root"
Notice the two key inputs: the location of the keyfile and the UUID of the partition, The rd.luks.key parameter is listed as not necessary in resources I provided above - if the key file is located in /etc/cryptsetup-keys.d/, this statement seems false, the parameter is needed if you want to avoid entering the luks passphrase twice at each boot…
- last command,
update-grub
At this point, you may be able to safely reboot. Sorry if I forgot something as it took me hours to come back to an under control situation, I will come back to those instructions later if I find something new or obviously missing.
Now, one last thing happened after that, confirming that I completely changed the way the Luks partition is unlocked / mounted: I had an error displayed between Grub launching boot and my DE login manager. A process - seems that it was not part of systemd as I did not find those logs in journalctl - was complaining that the luks partition could not be mounted as it was already in use. That was meaning that I had a double try/process involved for this mounting process. That’s where the French forum post was useful: it seems that using the sd-encrypt hook makes the crypttad / fstab calls to luks unlocking and mounting useless. So I went ahead and commented lines dedicated to that in the two files, here are the two end results for those files:
# /etc/crypttab: mappings for encrypted partitions.
#
# Each mapped device will be created in /dev/mapper, so your /etc/fstab
# should use the /dev/mapper/<name> paths for encrypted devices.
#
# See crypttab(5) for the supported syntax.
#
# NOTE: You need not list your root (/) partition here, but it must be set up
# beforehand by the initramfs (/etc/mkinitcpio.conf). The same applies
# to encrypted swap, which should be set up with mkinitcpio-openswap
# for resume support.
#
# <name> <device> <password> <options>
#luks-3d6aebc6-f20e-4479-a851-f2c41ed328c3 UUID=3d6aebc6-f20e-4479-a851-f2c41ed328c3 /crypto_keyfile.bin luks
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=21E7-5162 /boot/efi vfat umask=0077 0 2
#/dev/mapper/luks-3d6aebc6-f20e-4479-a851-f2c41ed328c3 / ext4 defaults,noatime 0 1
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
Now, you can reboot once again, and voila!
I hope this quite long post will help some people that encountered issues with their encrypted partition after last upgrade…
Feel free to ask questions but I may not be able to answer to all of them…