ハードディスクのイメージバックアップファイルがあります。これは3つのパーティションで構成されています(_Sudo fdisk -l /mnt/hdd/19_02.img
_):
_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
_になります。 (luksFormat
は試していませんが、LUKSデバイスヘッダーを設定し、マスターキーを暗号化します。)
画像ファイルのオフセットで_cryptsetup luksOpen
_を行う方法は?
fdisk
はここでは少し馬鹿げています:パーティションのデバイス名を表示する場合、指定されたディスクデバイス全体の名前を取得し、パーティション番号(p
で始まる)を追加しますディスク全体のデバイス名の最後の文字も数字の場合)。その名前のデバイスが実際に存在するかどうかをチェックせずにこれを行います。
つまり、イメージファイルの名前が/mnt/hdd/19_02.img
で、fdisk
を使用して直接検査している場合、/mnt/hdd/19_02.img3
のようなパーティション名は完全に架空のものであり、使用できません。
オフセットを手動で計算する代わりに、イメージファイルをループデバイスに接続して、パーティションを自動的に検出させることができます。
Sudo losetup -P /dev/loop0 /mnt/hdd/19_02.img
お使いのシステムがlosetup
の-P
オプションをサポートできるほど新しい場合、/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 -P
またはkpartx
を使用してパーティションデバイスを処理したかどうかによって異なります。
イメージへのアクセスが完了したら、パーティションデバイスにマウントされているファイルシステムをすべてマウント解除し、暗号化されたイメージをSudo cryptsetup luksClose
して、ループデバイスバインディングを元に戻します。
kpartx
を使用した場合は、最初にSudo kpartx -d /dev/loop0
を実行してパーティションデバイスを解放します。 losetup -P
を使用した場合、この手順は不要です。
次に、ループデバイスを解放します:Sudo losetup -d /dev/loop0
。