マスターブートレコードによると、GRUBのフェーズ2はブータブルコンパクトフラッシュメモリのどこにありますか?

マスターブートレコードによると、GRUBのフェーズ2はブータブルコンパクトフラッシュメモリのどこにありますか?

ブート可能なコンパクトフラッシュでGRUBのステップ2がどこにあるかを理解しようとしています。以下は、コンパクトフラッシュのMBR(最初の512バイト)イメージに対して実行されるファイルコマンドの出力です。

2段階のアドレスは0x2000または8192の10進数で、これはセクタ16(セクタあたり8192バイト/ 512バイト)に配置されます。

ブートローダの2番目のステップは、VBRまたはPBRのブータブルパーティションに配置する必要があると思います。この場合、アドレスは0x100000になると予想されます。これは、セクタ 2048 で起動可能なパーティションの先頭です。 (2048セクタ×512バイト= 1048576 = 0x100000)

それでは、以下の出力で2段階のアドレス0x2000と2段階のセグメント0x200はどういう意味ですか?

[centos@centos6 ~]$ file SQFlash_MBR
SQFlash_MBR: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3,
stage2 address 0x2000, stage2 segment 0x200;
partition 1: ID=0x83, active, starthead 1, startsector 2048, 1880064 sectors, code offset 0x48
[centos@centos6 ~]$

ベストアンサー1

出力にstage1と が言及されているのでstage2ここではGRUBレガシー(つまり、GRUBバージョン0.97以下)について話しています。最新バージョンには「コアイメージ」とモジュールセットがあります。

stage2 addressそして、stage2 segment彼らが参照しているディスクセクタを参照しないでください。メモリアドレスのステップ2がロードされます。このアドレスは、8086互換モード(「リアルモード」)でx86プロセッサが使用するセグメント:オフセット形式です。

これはGRUBレガシーなので、GRUBが単一の32ビット値でコンパクトフラッシュにインストールされると、GRUBが読み取る次のディスクブロックの番号がMBRコードに含まれます。 MBRはブロック#0で、GRUBが読み取る次のブロックは通常ブロック#1です。これには、次のステップで読み取るディスクブロックの順序を定義するGRUBブロックのリストが含まれます。次のステップは、「stage1.5」(単一の読み取り専用ファイルシステムドライバ)または完全な「stage2」です。

stage1.5を使用する場合(ディスク、パーティション)識別子+パス名を順に含め、特定のパーティションのファイルシステム上のstage2の場所を通常のファイルとして識別します。ディスク部分は省略でき、その場合、ディスクはstage1.5コンポーネントを含む同じディスクと見なされます。通常、別々のパーティションを使用する/grub/stage2場合、またはルートファイルシステムの汎用ディレクトリを使用する場合は、パス名は 。/boot/boot/grub/stage2/boot

表示された情報だけでは、file次のステップがどこにあるかを判断するのに十分ではありません。これを見つけるには、リストブロックの内容をブロックする必要があります。

おすすめ記事