dmsetup は 2TB より大きいドライブでは動作しません。

dmsetup は 2TB より大きいドライブでは動作しません。

この記事の元のタイトルは、CryptSetupが4096バイトのセクタを持つTruecryptデバイスをロードしないという内容でした。とにかく(マスターキーを使用して)Truecryptヘッダーをダンプしましたが、dmsetupを使用してロードしようとすると機能しません。

echo "0 5860533168 crypt aes-xts-plain64 <my-super-secret-64-byte-key> 256 /dev/sdh 256" | dmsetup create test
device-mapper: resume ioctl on test  failed: Invalid argument
Command failed

2^32以上のサイズ数字はサポートしていないようで追加してみました。セクタサイズ: 4096テーブルパラメータ:

echo "0 732566646 crypt aes-xts-plain64 <my-super-secret-64-byte-key> 256 /dev/sdh 256 sector_size:4096" | dmsetup create test
device-mapper: reload ioctl on test  failed: Invalid argument
Command failed

セクタ数を以下のように設定すると2TB以下(2^32 * 512)、しかしまだ終わっていません。純粋なcryptsetupで同じコマンドを複製しようとしましたが、dmsetupテーブルを正しく一致させる方法がわからず、複製できませんでした。 2TBを超えるデバイスでdmsetupを強制する方法はありますか?マスターキーをcryptsetupに直接渡す方法はありますか?これまでに試したことは次のとおりです。ただし、復号化に無効なキーを使用します。

echo <64-byte-key> | cryptsetup open --type plain /dev/sdh test --offset 256 --cipher aes-xts-plain64 --hash plain --key-size 512

答え1

セクタの総数が正しくありません。セクタの総数を取得し、オフセットを減算する必要があります。 dmsetupがセクタ数がデバイスを超えていると直接話すのではなく、代わりに非常に役に立たない「無効なパラメータ」と言うのはなぜですか?これにより時間が節約されます。

4Kモードの場合、セクタの総数* 512 / 4096 - オフセットを取得する必要があります。また、以下を指定する必要があります。計算テーブルの追加「オプションのパラメータ」の前に。ここには1つしかないので、次のようになります。

... /dev/sdh 256 1 sector_size:4096

関連情報