TrueCrypt: Error: device-mapper: reload ioctl failed: Invalid argument のとき

ググると -m=nokernelcrypto を使え的なことばかり見つかるんだけど、原因はカーネルに TrueCrypt が使う、CryptoGraphic が有効になってないから。例えば、TrueCrypt 標準の AES + RIPEMD-160 を使うなら、

CONFIG_CRYPTO_XTS=y
CONFIG_CRYPTO_RMD160=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_AES_X86_64=y

を有効にすれば、-m オプションは不要。

TrueCrypt で Linux にて NTFS ボリュームファイルを作る。

truecrypt -t -c --random-source=/dev/urandom

で、途中で聞かれるファイルシステムは none にする。ここでは hoge というファイルを作ったことにする。

 truecrypt -t -m=nokernelcrypto --filesystem=none hoge Data/hoge

みたいな感じでマウントする。Data/hoge はマウント先のディレクトリ。

truecrypt -t -l

で、マウントされたデバイスを確認する。ググると /dev/mapper/truecrypt ってのが出てくるが、うちでは /dev/loop0 だった。

mkfs.ntfs /dev/loop0 -v

NTFS フォーマット。mkfs.ntfs は、http://www.linuxfromscratch.org/blfs/view/svn/postlfs/ntfs-3g.html を参照してインストール。

truecrypt -t -d

でアンマウント。

truecrypt -t -m=nokernelcrypto --filesystem=ntfs-3g hoge Data/hoge

のように次回のマウントでは ntfs-3g をファイルシステムに選択。

HandBrake のビルド

だいたいは https://trac.handbrake.fr/browser/trunk/doc/BUILD-Linux を読めば大丈夫。

基本的にシステムのライブラリを使わず、make の最中に wget したものを自前で静的リンクにコンパイルして使うのだが、なぜか harfbuzz だけはシステムのを使う。

したがって、harfbuzz だけは --enable-static 付きでビルドしておかないといけない。

AMD Catalist の Linux へのインストール

AMD から直にダウンロードしたドライバーは /usr/lib32 と /usr/lib64 にそれぞれビット用のドライバーをインストールする。しかし xorg のデフォルトの検索パスは /usr/lib/xorg であるため、ドライバーが検索できず、X の起動に失敗する。

failed to load module: fglrx

みたいなのが出てきたら、これです。ちなみにこれはカーネルモジュールではなくて、xorg のドライバーモジュールのことです。あと、もう解決してしまっているので、エラーメッセージは私の記憶です。

解決方法は二つ。一つは /usr/lib を /usr/lib64 にリンクを張っておいてから、Catalyst のインストールをすることで、もう一つは、/etc/X11/xorg.conf

Section "Files"
	ModulePath	"/usr/lib64/xorg/"
	ModulePath	"/usr/lib/xorg/"
EndSection

を追加すること。