イメージファイルの暗号化パーティションのマウント

イメージファイルの暗号化パーティションのマウント

sudo fdisk -l /mnt/hdd/19_02.img3つのパーティション()で構成されるハードドライブのイメージバックアップファイルがあります。

Device                 Start       End   Sectors   Size Type
/mnt/hdd/19_02.img1     2048   1050623   1048576   512M EFI System
/mnt/hdd/19_02.img2  1050624  34686975  33636352    16G Linux swap
/mnt/hdd/19_02.img3 34686976 976773134 942086159 449.2G Linux filesystem

3番目のパーティションはタイプですcrypto_LUKS。暗号化されていない場合は、次のようにsudo mount -o loop,offset=$(expr 512 \* 34686976) /mnt/hdd/19_02.img /mnt/imgマウントできます。mount: /mnt/img: unknown filesystem type 'crypto_LUKS'.

私が試したこと

sudo cryptsetup luksOpen /mnt/hdd/19_02.img3 img明らかにするDevice /mnt/hdd/19_02.img3 doesn't exist or access denied.

sudo cryptsetup plainOpen --offset=$(expr 512 \* 34686976) /mnt/hdd/19_02.img img私のパスワードを尋ねましたが、これも許可されましたが、Requested offset is beyond real size of device /mnt/hdd/19_02.img. 「まあ、cryptsetupオフセット値にブロックサイズを掛けます」と返しました。

sudo cryptsetup plainOpen --offset=34686976 /mnt/hdd/19_02.img img私のパスワードを尋ね、パスワードも受け入れられ、正常に返されました。しかしsudo mount /dev/mapper/img /mnt/img文句を言うmount: /mnt/img: wrong fs type, bad option, bad superblock on /dev/mapper/img。分析の結果、sudo lsblk -f /dev/mapper/imgファイルシステムが認識されないことがわかりました。

NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
img

暗号化されたデバイスはLUKSスキーマによって生成されるためplainOpen。ただし、オプションは提供されませluksOpen--offset

これがすることはsudo cryptsetup luksOpen --offset=34686976 /mnt/hdd/19_02.img imgですcryptsetup: Option --offset is supported only for open of plain and loopaes devices and for luksFormat。 (試していませんが、luksFormatLUKSデバイスヘッダを設定し、マスターキーを暗号化します。)

問題は結局

cryptsetup luksOpen画像ファイルのオフセットを処理する方法は?

答え1

fdiskここでは少し愚かです。パーティションのデバイス名を表示するときは、指定されたディスク装置全体の名前を取得してパーティション番号を追加します(ディスクp装置名全体の最後の文字も数字の場合はプレフィックスを追加します)。 。その名前のデバイスが実際に存在することを確認せずにこれを行います。

つまり、イメージファイルに名前が付けられていて/mnt/hdd/19_02.img直接スキャンするために使用するfdisk場合、そのようなパーティション名は/mnt/hdd/19_02.img3完全にフィクションであり、使用できません。

オフセットを手動で計算する代わりに、イメージファイルをループデバイスに追加し、自動的にパーティションを検出することができます。

sudo losetup -P /dev/loop0 /mnt/hdd/19_02.img

-Pシステムがオプションをサポートするのに十分な新しいシステムである場合は、自動的losetupにパーティションデバイスが必要です。/dev/loop0p1/dev/loop0p2/dev/loop0p3

パーティションループデバイスをサポートしていない以前のディストリビューションでは、同じ目的でこのkpartxコマンド(device-mapper-multipath別途パッケージ化されていない場合はツールに付属する可能性があります)を使用できます。この場合、2つのステップを実行する必要があり、デバイス名は少し異なります。

sudo losetup /dev/loop0 /mnt/hdd/19_02.img
sudo kpartx -a /dev/loop0

kpartxこのように使用すると、パーティションデバイスが、たとえば背面/dev/mapper/dev/mapper/loop0p1表示されます。

これで、次のいずれかを実行できます。

sudo cryptsetup luksOpen /dev/loop0p3 img

または

sudo cryptsetup luksOpen /dev/mapper/loop0p3 img

パーティションデバイスを使用するのか処理するのlosetup -Pkpartxによって異なります。


イメージにアクセスしたら、パーティションデバイスにマウントされているすべてのファイルシステムをアンマウントし、sudo cryptsetup luksCloseイメージを暗号化してループデバイスのバインドを解除します。

お使いの場合は、kpartxまず実行してsudo kpartx -d /dev/loop0パーティションデバイスを解放してください。これを使用した場合は、losetup -Pこの手順は必要ありません。

その後、ループデバイスを解放します。sudo losetup -d /dev/loop0

関連情報