0

PentiumMラップトップのハードドライブのMBRを印刷しました。これが私が使用したコマンドです:

$ sudo od -N 512 -x /dev/sda

出力ではバイトを順番に取得することを期待しますが、バイトのすべてのペアが逆になっているようです。

たとえば、次の16バイトは2番目のパーティションを表します。

0000700 .... .... .... .... .... ........0080。
0000720 0601 fe07 ffff 7886 0001 1990 0353

これは起動可能なパーティションです。したがって、このパーティションエントリの最初のバイトは80である必要があります。5番目のバイトには、NTFSの場合は「07」であるファイルシステムコードが含まれている必要があります。ただし、これらはそれぞれ2番目と6番目の位置に表示されます。

別の例-最後の4バイトはパーティションのサイズである必要があります。これは、0x03531990(28.5GB)として意味があります。ただし、上記の出力は19900353を示しています。

バイトのすべてのペアを反転しているように見えます。これはリトルエンディアンのチップなので、最下位バイトを最初に配置していることがわかりますが、ワードサイズからは機能しませんか?これは4バイトになります。上記の出力は2バイトごとに反転しているようです。

これによって非常に混乱しているので、どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

5

どうやら、これは正常です。見る:

すべてのIBMPC、PC互換、またはその他のリトルエンディアンのコンピューターでは、2バイト以上の16進数は、常に逆の順序でメディアまたはメモリーに保管されます(より効率的なCPU処理のため)。したがって、MBR署名の16進数0xAA55(またはAA55h)は、55AAのシーケンスとしてディスクエディタに表示されます。

http://en.wikipedia.org/wiki/Partition_table_%28master_boot_record%29から。

于 2011-04-22T02:48:13.157 に答える
1

od マニュアルページから:

'-x'16進数の2バイト単位で出力します。'-tx2'と同等です。

タイプインジケータ文字の後に10進整数を続けることにより、特定のデータ型の各数値の解釈に使用するバイト数を指定できます。

したがって、おそらく代わりに-t x1(または)を好むでしょう。-t x4

于 2011-04-22T02:47:27.710 に答える