ドライブが起動可能かどうかをBIOSが決定する正確な理由は何ですか?
BIOSは、MBRコード領域(446 番目のバイトから始まるテーブルに保持)の後にある16バイトのパーティションレコードに基づいて、ドライブが起動可能かどうかを判断します。各パーティションレコードの最初のバイトは、ドライブの起動可能状態を表します(起動可能かどうかに応じて設定されます)。一部のBIOSは、MBRの他の部分(パーティションタイプ、チェックサムなど)をチェックしますが、基本的な要件は起動可能フラグです。0x80
0x00
システムに複数のドライブがインストールされている場合、ブートシーケンスはドライブ#1からどのようにスキップし、ドライブ#2からのブートを続行しますか?
これは実装に依存するため、起動順序を適切に選択する必要があるのはこのためです。ほとんどの場合、BIOSは設定された順序で各記憶媒体を調べ、そのデバイスから(MBRデータを介して)起動できるかどうかを判断します。可能であれば、そうします-可能でなければ、他のデバイスをループし続けます(再び、選択した順序で)。
BIOSがドライブ#1のブートローダーに制御を転送した後、たまたま「ブート可能な」パーティションがありませんでした-2番目のドライブのブートローダーはどのくらい呼び出されますか?
有効なブートデバイスが見つかると(つまり、ブート可能フラグが設定され、その他の追加チェックがパスすると)、BIOSはMBRセクターをRAMにコピーします。BIOS JUMP
は、MBRコードセグメントが配置されているこの場所の先頭に命令ポインターを再配置し(命令を使用)、コンピューターが起動します。
BIOSがBIOSブート仕様をサポートしている場合、MBRコードは特定の命令で制御をBIOSに戻し、ブート失敗を通知して次のデバイスを試すように促すことができます。ただし、古いBIOSはエラーメッセージを出力するだけです。BIOSでサポートされているかどうかは、USBから起動できるかどうかがわかります。
私の理解では、BIOSが通常MBRでチェックするのは512バイトセクターの最後の署名のみであり、その後、ブートセクターの最初の446バイトにある初期ブートローダーに制御を移すだけです。
これは正しいですが、最新のBIOSのほとんどは、GUIDパーティションテーブルと、従来の従来のMBRスタイルのテーブルも検索することに注意する必要があります。
ディスクがブート可能でない場合でも、ブートセクターの最初の446バイトに意味のあるブートローダーコードが含まれている必要があることを意味しますか?
いいえ、ただし、ドライブには有効なMBRまたはGUIDパーティションテーブルが必要です。そうでない場合、コンピューターによって検出されません。MBRのコード部分は実際には空である場合がありますが、ドライブの最初のセクターには整形式のMBR / GPTが必要です。