Cryptsetup is responsible for unlocking dm-crypt devices. The cryptsetup Debian provide a whole slew of helper scripts that integrate cryptsetup into the Debian operating system. The most important ones are the cryptdisks
init script and the cryptroot
initramfs scripts, both implementing support for the /etc/crypttab
configuration file and for automatic unlocking of encrypted devices during the boot process.
This page collects information on debugging different features of the Debian cryptsetup packages in case of problems.
In order to debug the cryptroot initramfs script during initramfs stage, the following steps are required:
Boot into the initramfs rescue shell by adding break=premount
as kernel option during boot
In grub, this can be done interactively from the grub boot menu: <E>
to edit, and <Ctrl>+<X>
to boot once you’ve edited the kernel line.
See https://help.ubuntu.com/community/Grub2/Troubleshooting#Editing_the_GRUB_2_Menu_During_Boot for details.
Append -x
to the shebang (first line) of cryptroot initramfs script:
sed -i -e '1s,^#!/bin/sh,& -x,' /scripts/local-top/cryptroot
Run the cryptroot initramfs script manually, redirecting output to a log file:
/scripts/local-top/cryptroot 2>&1 | tee /run/initramfs/cryptroot.debug
Please note: if the boot process is broken, you might need to mount an external storage device (e.g. a USB flash drive) inside the initramfs and redirect the output to a log files on this external device.
Continue the boot process (by pressing <Ctrl>+<D>
) and save a copy of the debug log file to /run/initramfs/cryptroot.debug
. The content of /run/
will be lost after reboot.
Sometimes, debugging the initramfs directly can be helpful as well. See https://wiki.debian.org/InitramfsDebug#Saving_debug_information for details.
Useful commands to gather information from initramfs rescue shell:
Check for device-mapper support (these directories/symlinks exist only if kernel has device-mapper support):
ls -l /sys/class/misc/device-mapper /sys/devices/virtual/misc/device-mapper
Check whether dm-crypt kernel module is loaded:
lsmod | grep dm-crypt
Display cryptroot configuration and list loaded kernel modules:
cat /cryptroot/crypttab
lsmod
Gather information about the available block devices:
blkid
ls -l /dev/disk/by-*/
– Jonas Meurer jonas@freesources.org, Wed 25 Dec 2019 02:58:00 PM CET