web-dev-qa-db-ja.com

hexdumpを使用してGUIDパーティションテーブル(gpt)を物理的に確認するにはどうすればよいですか?

Hexdumpを使用すると、たとえば、マスターブートレコードのバイナリコンテンツを確認できます。同様に、gptがどのように見えるかを確認したいと思います。 EFIシステムパーティションのどこかにありますか?私は異なる.efiファイルを見つけただけで、パーティションテーブルのようなものと呼ばれるものについてのヒントはありません。

2
Artem Hevorhian

パーティションテーブルは、パーティションがどこにあるかを記述しているため、パーティション内に配置できません。代わりに、パーティションの外側の固定ディスクの場所にあり、通常はファイル表現がありません。以前にディスクの「マスターブートレコード」を確認しているとおっしゃいましたが、GPTも確認するには同じ方法を使用する必要があります。

MBRは、ディスクの1番目のセクター(LBA 0)にあります。 GPTディスクでさえ、このセクターにはまだ「保護」MBRがあります。 (MBRの最初の440バイトはブートコードを格納するために使用されますが、残りの72バイトはパーティションエントリを保持するため、実際にはaパーティションを見ていました。すでにテーブル。)

同様に、GPT ディスクの2番目のセクター(LBA 1)で開始ヘッダーが配置されている場所で、その後に約実際のパーティションリストを含む32セクター(16 KiB)。 (より長いGPTが可能ですが、おそらくまれです。)

Rawディスクセクターの読み取りに使用される方法はOSに依存しますが、次のツールはLinuxで特に役立ちます。

# head -c 512 /dev/sda | hexdump -C
# dd if=/dev/sda bs=512 skip=1 count=33 | hexdump -C
# xfs_io -r -c "pread -v 512 16896" /dev/nvme0n1

プライマリGPTの正確な場所は、ディスクの論理セクターサイズによって異なることに注意してください。ほとんどのディスクは512バイトのセクターを使用しますが、「4Kネイティブ」ディスクの場合、GPTもバイト512ではなくバイト4096から始まります。それに応じてコマンドを調整します。 (データがASCIIのEFI PARTで始まる場合、それを見つけたことがわかります。)

3
user1686