[I’m not a native English speaker]
I’m at a complete loss on this issue and could really use some help.
I’m trying to have Plymouth prompting me for my root volume password.
The system has an ESP partition for UEFI booting, a separate boot partition for Manjaro, and another one for Debian.
Then it has a LUKS partition containing Manjaro and Debian root volumes, plus a shared home and swap.
nvme0n1
├─nvme0n1p1 ESP /boot/efi
├─nvme0n1p2 BOOT /boot
├─nvme0n1p3 LUKS
│ └─cryptlvm LVM (meissa)
│ ├─meissa-swap
│ ├─meissa-root Manjaro /
│ ├─meissa-home home /home/data
│ └─meissa-debian Debian
└─nvme0n1p4 BOOT (for Debian)
The best I get for booting Manjaro is a text prompt asking for the cryptlvm password, right after grub and before Plymouth loads.
I’d like this password to be asked while Plymouth is running so I get a nice graphical prompt and a smooth boot experience.
Right now, I have a graphical theme on grub, then the screen goes black, then an ugly text prompt kicks in, then the screen flickers a bit and if I’m lucky, I get a couple of frames of Plymouth before the boot process is complete (damn, Manjaro boots fast!).
On the same machine, Debian smoothly transitions from grub to Plymouth and asks for the password in Plymouth (no text mode, no flicker).
Here’s my config (initramfs and grub config are always rebuilt when needed):
mkinitcpio.conf
HOOKS="base udev autodetect modconf kms block keyboard keymap consolefont encrypt lvm2 filesystems fsck"
/etc/crypttab
cryptlvm UUID=1f9530e0-c897-41ee-941c-aebc26fa3f20 none luks
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet udev.log_priority=3"
GRUB_CMDLINE_LINUX="cryptdevice=UUID=1f9530e0-c897-41ee-941c-aebc26fa3f20:cryptlvm"
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
#GRUB_ENABLE_CRYPTODISK=y # doesn't seem to make any difference
GRUB_TIMEOUT_STYLE=menu
…
/boot/grub/grub.cfg
menuentry 'Manjaro Linux' [redacted] {
savedefault
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 972e1815-893d-4b73-bce9-1b736539b4f0
linux /vmlinuz-6.4-x86_64 root=/dev/mapper/meissa-root rw cryptdevice=UUID=1f9530e0-c897-41ee-941c-aebc26fa3f20:cryptlvm splash quiet udev.log_priority=3
initrd /intel-ucode.img /initramfs-6.4-x86_64.img
}
Where:
972e1815-893d-4b73-bce9-1b736539b4f0 = nvme0n1p2 (ext4 boot partition)
1f9530e0-c897-41ee-941c-aebc26fa3f20 = nvme0n1p3 (luks partition holding lvm)
What I’ve tried
It seems passing cryptdevice to the kernel causes this early password prompt to appear, before Plymouth loads.
If I don’t pass this parameter, I get a blackscreen on boot and I have to shutdown/reboot.
If I give the luks volume another name in crypttab, then I get a text prompt to unlock the volume, then a Plymouth graphical prompt to unlock the same volume. So I guess the Plymouth’s prompt comes from crypttab entries.
I tried giving the cryptdevice the same name as the lvm volume group
grub: root=/dev/mapper/meissa-root cryptdevice=UUID=[…]:meissa
crypttab: meissa UUID=[…] none luks
but I got the same result.
It works fine on Debian. For a comparison, /etc/default/grub
on Debian only has “splash quiet” (no cryptdevice at all), /etc/crypttab
is the same as Manjaro, and the grub menu entry looks like this:
menuentry 'Debian GNU/Linux' [redacted] {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root bdcca85a-5101-4780-a1fc-6f1a00a42b3e
echo 'Loading Linux 6.3.0-1-amd64 ...'
linux /vmlinuz-6.3.0-1-amd64 root=/dev/mapper/meissa-debian ro quiet splash
echo 'Loading initial ramdisk ...'
initrd /initrd.img-6.3.0-1-amd64
}
At this point, I don’t even know who does what and when. Why is the kernel parameter cryptdevice mandatory to boot Manjaro? Why is it not here on Debian? Is it possible to unlock the volume from the initramfs rather than asking the kernel (if that makes any sense)?