最近、Linuxの起動プロセスについて学びました。BIOSの後にMBRにアクセスして、そこでの命令でカーネルをRAMにロードできるようにするために、なぜ問題が発生するのか疑問に思わずにはいられません。
なぜ仲介者-BIOSがカーネルを直接ロードしないのですか?
最近、Linuxの起動プロセスについて学びました。BIOSの後にMBRにアクセスして、そこでの命令でカーネルをRAMにロードできるようにするために、なぜ問題が発生するのか疑問に思わずにはいられません。
なぜ仲介者-BIOSがカーネルを直接ロードしないのですか?
起動は、多段階のプロセスになるように設計されています。各ステージは、次のステージをロードするのに十分な知識を持っています。これにより、各段階がシンプルになり、アップグレードが可能な限り簡単になります(新しいOSをインストールするときにBIOSを再プログラムする必要があると想像してください)。
おそらくもっと重要なことは、プロセス全体を可能な限りプラットフォームに依存しないようにすることです。チェーン内の任意のステップを新しいプラットフォームまたは実装に置き換えることができ、残りのプロセスは引き続き機能します。BIOSがOSを直接ロードした場合、ファイルシステム、ブートローダー、OSがコンポーネントをディスクに保存する方法、どのコンポーネントをロードする必要があるかなどを理解して解釈できる必要があります。これを行う必要があります。 OS、ファイルシステム、ブートローダーなどごとに。新しいファイルシステム(たとえば)が作成された場合、BIOSを再プログラムして理解しない限り、それを使用することはできません。ほとんどのBIOSソースコードは公開されていないため、ファイルシステムとOSの開発が非常に困難になります。
考慮すべきもう1つのことは、BIOSをアップグレードして新しいもののサポートを取得することはかなり可能ですが、それは人々が可能な限り避けようとしていることです。BIOSの再フラッシュ中に問題が発生した場合、システムが壊れて回復不能になる可能性が高くなります。BIOSをフラッシュする必要を回避する最も簡単な方法は、BIOSを非常に単純に保ち、アップグレードする必要のあるものがないほど一般的であるようにすることです(バグ修正にもかかわらず)。
そうしないと、別のディスクまたはファイルシステムを使用するたびに、BIOSの命令を書き直す必要があるためです。MBRは、BIOSに代わってそれを処理する仲介者であり、オペレーティングシステムのどこに行くべきかを知っています。
実行する内容(システムの初期化、構成、および基本的な健全性テストの実行)は「単純」であると想定されていますが、BIOSには少なくともある程度の柔軟性が必要です。したがって、次のように設計されています。
A)ユーザー/システム管理者がいくつかのハードウェア機能を構成できるようにします。そのため、「DELを押してセットアップに入ります」というメッセージが表示されます。通常、デフォルトはシステムに合わせて最適化されていますが、一部の構成オプションには、CPUクロッキング、メモリレイテンシ、ペリフェラル割り込みなどが含まれます。
B)画面への印刷など、些細なことのための最小限の基本APIを提供します。オペレーティングシステムが同じことを行うために独自のルーチンを再定義し、一般的にはより特殊な方法で(たとえば、より高い解像度をサポートするグラフィックスドライバー)、これが今日使用されることはめったにありません。
C)さまざまなメディアセット(CD-ROM、USBフラッシュ、さまざまなハードディスクなど)からさまざまなオペレーティングシステムのセットを起動します。
その最後の項目は、MBRが存在する理由です。これは、ドライブのプライマリパーティション(同じドライブに複数のOSが存在できるようにする)と、オペレーティングシステムをロードして起動するために実行する必要のあるコード(このコードはブートローダーと呼ばれます)を一覧表示するための標準形式です。
とにかく、少なくともそれが「レガシー」BIOSがそのように機能する理由です。これは徐々に段階的に廃止され、UEFI(少なくともx86およびx86-64用)と呼ばれる新しい初期化ファームウェアが採用され、さらに柔軟性が向上しています。
最後に、カーネルを直接ロードできます。最小限の初期化を行ってからペイロードをロードするCorebootプロジェクト(www.coreboot.org)を見てください。これはカーネルであるか、標準の「レガシー」BIOSである可能性があります;-)
お役に立てれば、
ジャニート
BIOSがLinuxをロードできるようにするには、BIOSがそのパーティションとファイルシステムの形式を理解している必要があります。後者は、/bootファイルシステムが持つ可能性のあるファイルシステムに多くの制限を課します。したがって、BIOSを最小限に抑え(BはBasic:Dを表します)、OSを独立して進化させるために、BIOSはブートメディアの最初の512バイトのみをロードします。