tcplay is a free (BSD-licensed), pretty much fully featured (including multiple keyfiles, cipher cascades, etc.) and stable TrueCrypt implementation.
This implementation supports mapping (opening) both system and normal TrueCrypt volumes, as well as opening hidden volumes and opening an outer volume while protecting a hidden volume. There is also support to create volumes, including hidden volumes, etc.
Since tcplay uses dm-crypt, it makes full use of any available hardware encryption/decryption support once the volume has been mapped.
It is based solely on the documentation available on the TrueCrypt website, many hours of trial and error and the output of the Linux' TrueCrypt client. As it turns out, most technical documents on TrueCrypt contains mistakes, hence the trial and error approach.
tcplay-git from the AUR.
Encrypting a file as a virtual volume
# losetup -f
to find the first unused loopback device; in this example,
Create a new volume
test.tc, 20M in size for instance, in the working
# dd if=/dev/zero of=test.tc bs=1 count=0 seek=20M # losetup /dev/loop0 test.tc # tcplay -c -d /dev/loop0 -a whirlpool -b AES-256-XTS
Enter a secure password for the volume, and confirm the query to overwrite
test.tc with the new volume. tcplay will then write random data into the
volume. Map the volume and create a filesystem on it in order to mount
# tcplay -m test.tc -d /dev/loop0 # mkfs.ext4 /dev/mapper/test.tc # mount /dev/mapper/test.tc /mnt/truecrypt/
To unset the container,
# umount /mnt/truecrypt # dmsetup remove test.tc # losetup -d /dev/loop0