内蔵ハードドライブのLUKS

内蔵ハードドライブのLUKS

LUKSを使用して暗号化されたハードドライブがあります。外付けハードドライブから始まりました。最近、ケースを取り外してSATA経由で直接接続しました。ただし、直接接続するとパーティションが表示されず、パスワードの入力を求められません。 4TBのうち500GBの不明なパーティションと3.5TBの空き容量が表示されます。

システムから取り外し、外付けハードドライブに再接続しましたが、Ubuntuはパーティションを検出してパスワードの入力を求めました。

また、パーティションが実際にGPTの場合はMBRとして表示されます。

答え1

これはセクタサイズの問題かもしれません。一部のUSBシェルはそのドライブに4KiBセクタがあると主張していますが、ドライブは512バイトのセクタとして表示され、その逆も同様です。残念ながら、パーティションテーブル(msdosとgpt)はセクタのサイズによって異なります。セクタサイズが変更されると、パーティションテーブルは無効になります。

これで、これはソフトウェアで解決できる問題です。 Linuxは、ドライブが持っていると主張する物理セクタのサイズに関係なく、GPTパーティションテーブルを正しく解釈するのに十分スマートです。しかし、そうしないし、おそらく標準の一部ではないので...

あなたがしなければならないのは、USBシャットダウン時にパーティションの正確なバイトオフセットを取得することです。

parted /dev/usbdrive unit b print free

次に、これらのパーティションオフセットが内部ドライブに適用されることを確認します。

losetup --find --show --read-only --offset 1048576 /dev/internaldrive
file -s /dev/loopX

正しく機能すると、内部ディスクに対して同じ(バイト)オフセットを使用してパーティションテーブルを再作成します(最初にディスクの最初/最後の数メガバイトをバックアップします)。

parted /dev/internaldisk unit b mklabel gpt mkpart 1048576 42424242 ...

セクタサイズが間違ったパーティションテーブルを自動的に「修正」できるように、スマートパーティショニングプログラムがあるかどうか疑問に思います。手動方式よりは良いだろうが..

関連情報