Hello,

I have the same problem, with a Windows 11 C:\ drive encrypted as a
veracrypt system drive and trixie gives me the same error and cannot
successfully mount the partition automatically on boot.

Attached is a patch to fix the bug reported in #1037979.

The file that has the problem is:
/usr/lib/cryptsetup/functions
(in the cryptsetup package.)

After applying this patch, running update-initramfs, then rebooting I
am able to automatically mount the veracrypt system drive. It is still
able to mount other normal non-system veracrypt partitions as long as
you don't use the 'tcrypt-system' flag on those partitions in
/etc/crypttab. The 'tcrypt-system' flag for veracrypt system
partitions will need to come on the same line after the tcrypt flag to
work properly.

In my /etc/crypttab file the line is similar to:

unencrypted_c_drive
/dev/disk/by-partuuid/<c-drive-veracrypt-partition-uuid>
tcrypt,tcrypt-veracrypt,tcrypt-system

That same crypttab line entry also works fine for me on RHEL 10.

Hope that helps!

Paul Franklin Richards
--- functions.old.bug.1037973	2025-05-04 15:55:13.000000000 -0400
+++ functions	2026-01-24 19:49:02.731144980 -0500
@@ -83,6 +83,7 @@
              CRYPTTAB_OPTION_keyslot \
              CRYPTTAB_OPTION_header \
              CRYPTTAB_OPTION_tcrypthidden \
+             CRYPTTAB_OPTION_tcryptsystem \
              CRYPTTAB_OPTION_same_cpu_crypt \
              CRYPTTAB_OPTION_submit_from_crypt_cpus \
              CRYPTTAB_OPTION_no_read_workqueue \
@@ -150,6 +151,7 @@
         key-slot) OPTION="keyslot";;
         tcrypt-hidden) OPTION="tcrypthidden";;
         tcrypt-veracrypt) OPTION="veracrypt";;
+        tcrypt-system) OPTION="tcryptsystem";;
     esac
 
     # sanitize the option name so CRYPTTAB_OPTION_$OPTION is a valid variable name
@@ -241,6 +243,7 @@
         tcrypt) ;;
         veracrypt) ;;
         tcrypthidden) ;;
+        tcryptsystem) ;;
         bitlk) ;;
         fvault2) ;;
         same-cpu-crypt) ;;
@@ -357,7 +360,7 @@
         unset -v CRYPTTAB_OPTION_keyfile_offset
     else
         # ignored for non-TCRYPT devices
-        unset -v CRYPTTAB_OPTION_veracrypt CRYPTTAB_OPTION_tcrypthidden
+        unset -v CRYPTTAB_OPTION_veracrypt CRYPTTAB_OPTION_tcrypthidden CRYPTTAB_OPTION_tcryptsystem
     fi
 
     if [ "$CRYPTTAB_TYPE" != "luks" ]; then
@@ -379,6 +382,7 @@
         ${CRYPTTAB_OPTION_veracrypt:+--veracrypt} \
         ${CRYPTTAB_OPTION_keyslot:+--key-slot="$CRYPTTAB_OPTION_keyslot"} \
         ${CRYPTTAB_OPTION_tcrypthidden:+--tcrypt-hidden} \
+        ${CRYPTTAB_OPTION_tcryptsystem:+--tcrypt-system} \
         ${CRYPTTAB_OPTION_keyfile_size:+--keyfile-size="$CRYPTTAB_OPTION_keyfile_size"} \
         ${CRYPTTAB_OPTION_keyfile_offset:+--keyfile-offset="$CRYPTTAB_OPTION_keyfile_offset"} \
         ${CRYPTTAB_OPTION_same_cpu_crypt:+--perf-same_cpu_crypt} \

Reply via email to