2013-05-10 7 views
6

私は、2番目の段階が複雑なファイルシステムにある場合、わずか446バイトのグラブ初段ブートローダが2番目の段階をどのように検索できるのか疑問に困惑しています。どのようにして2番目のステージを見つけますか?GRUBのステージ1ブートローダはどのようにステージ2のブートローダをロードしますか?

windowsとlinuxの複雑なパーティション化スキームがあり、Linuxシステムが完全に拡張パーティションにある場合、ステージ1はどのようにステージ2を見つけますか?ステージ1.5でさえ?

すべてのgrubチュートリアルはこの重要な部分を見ていません。私はインターネットを検索しましたが、これを説明するものは見つかりませんでした。残念ながら、私は組立プログラマではありません。

私はブートプロセス中に、ハードディスクのどのセクタがくすんでいるか(およそどのように)ブートプロセスが複雑であるかを理解したいと思います。 * 私に良いリソースや答えを教えてください。それは私が嫌なことに賢く遊ぶのに大いに役立ちます。検索 *

いくつかのリソース:

  1. どのようにLinuxの作品:すべてのスーパーユーザは
  2. http://www.dedoimedo.com/computers/grub.html
  3. ブライアン・ウォード
  4. によっていくつかの過去のstackoverflowの質問に知っておくべきこと。

答えて

3

ステージ1は、ステージ2が埋め込まれているブロックリストローディングテーブルのエントリであることを「認識」しています。ブート・ドライブからブロックのリストをロードし、指定されたCS:IPに16ビット・リアル・モードでジャンプします。これらは埋め込みデータのページで説明されています。 BIOSにディスクジオメトリを問い合わせ、INT 13h BIOSインターフェイスで使用されるC:H:Sアドレスにリニアブロック番号をマップします。新しいディスクの配置でも

http://www.uruk.org/orig-grub/technical.html

多くの時間、ちょうどMBRと最初のパーティションとステージ2との間に未割り当て領域で1〜2 MBの下にあり、時にはそこに立ち往生しています。

+0

ありがとうございました!ドキュメントはかなり説明しており、私は大きなイメージを持っています。 2番目のステージはファイルシステム上にあるので、ファイルシステムは2番目のステージを無制限に動かすべきではありません(アドレスは絶対的なC:H:Sなので、ステージ2が動かされるとシステムが壊れます。ビットは8GBのディスクアクセス制限と混同していますが、第2段階はこの制限内になければなりませんか?ドキュメントには関連することはありますが、混乱しています – codeman48

+0

ドキュメントはかなり古く2003年と48ビットのアドレッシングモードが導入されましたドライブの最初の2テラバイトまでBIOSにアクセスできるようにしたATA仕様(したがってほとんどのBIOS)にも対応しています。今では、EFIシステムはブロック単位でドライブをアドレス指定するためのさらに大きな方法を持っています(filestytem EFIのドライバを使用してステージ2を名前でロードすることができます。また、512MBの制限があると、BIOSが課す制限を完全に下回る独立した/ bootパーティションを維持することでステージ2が。 – WorBlux

関連する問題