TrueCrypt 4.2a do not support the 2.6.18-rc1 and possible newer versions of the
Linux kernel. The problem exists because the kernel developers has changed
"drivers/md/dm.h" in the Linux source code.
They have changed DMERR. In older kernels DMERR looked like this:
#define DMERR(f, x...) printk(KERN_ERR DM_NAME ": " f "\n" , ## x)
but has now been changed to:
#define DMERR(f, arg...) printk(KERN_ERR DM_NAME ": " DM_MSG_PREFIX ": " f
"\n", ## arg)
What needs to be done in the TrueCrypt source to make it work with 2.6.18 is to
simply add:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
#define DM_MSG_PREFIX "truecrypt"
#endif
to the top of "Linux/Kernel/Dm-target.c" in the TrueCrypt source code.
DM_MSG_PREFIX is used to tell from where the DMERR occured. In this case:
truecrypt
I've made a patch for TrueCrypt 4.2a, it's available here:
http://jdz.cute.se/patches/truecrypt-4.2a_kernel-2.6.18-rc1_fix.patch