web-dev-qa-db-ja.com

gdisk、破損したGPTテーブルを非永続的に修正します

ラップトップを起動できません。そのため、起動可能なUSBからUbuntu18.04をライブで実行します。 GPTを使用する500GBのハードディスク/dev/sdaは自動的にマウントされませんでした。

lsblkはディスクのみを表示し、パーティションは表示しません。 fdiskは代わりにそれらを表示することができます。

gdiskこのページ (セクション「半自動回復」)と同じエラーを示します:

# gdisk /dev/sda
GPT fdisk (gdisk) version 0.7.2

Warning! Main partition table CRC mismatch! Loaded backup partition table
instead of main partition table!

次に、リンクされたページの「手動リカバリ手順」セクションに、recovery/transformation commandのオプションのリストが表示されます。

今説明したすべてのオプションを試すことができます(wを除く)。どのデータ回復ツールも、ディスクへの即時書き込みを引き起こしません。

永続的な変更を行う前に、これらのオプションが機能するかどうかを確認する方法がわかりませんでした。

gdiskを使用して、一時的にbackup partition tableを使用して、Ubuntuが/dev/sdaディスクパーティションをマウントし、Ubuntuがシャットダウンされたときにディスクを変更しないようにすることは可能ですか?

4
BowPark

パーティションを認識するためにOSは必要ありません。適切なオフセットでデバイス全体をマウントできます(試行できます)。例えば。パーティションがセクター_2048_(512バイトの論理セクターとかなり共通の値)で始まっていると思われる場合(またはツールから指示された場合)は、次のことを試してください。

_Sudo mount -o ro,offset=$((2048*512)) /dev/sda /some/mountpoint
_

(念のためro;それがないと-o offset=$((2048*512))になります)。それがマウントされ、コンテンツが正常に見える場合、開始セクターは正しいです。

4096バイトの論理セクターの場合はセクター番号_256_の場合があります。 $((256*4096))$((2048*512))は同じ番号であることに注意してください。

また、セクター_14649344_から開始するように指示されたツールがある場合は、offset=$((14649344*512))を使用します(512バイトのセクターを想定)。

Microsoftは以前は_63_から始めるのが好きでした(CHSではトラックあたり63セクターの一般的な値があるため)が、これはGPTの前でした。 XP時代のWindows _C:\_がどこから始まるかを推測する必要がある場合は、offset=$((63*512))を試してください。


fdiskは正常なパーティション構造を示すことができるとおっしゃいました。これが出発点になります。

fdiskが役に立たなかった場合は、testdiskが次に実行するツールになります。ドライブを変更することなく、失われたパーティションを検索し、それらの開始セクターを表示できると思います。これにより、試すオフセットが得られるはずです。

1