興味深いのですが、メディアを起動可能にするにはどうすればいいのでしょうか? 説明へのリンクがあるとありがたいです。
答え1
おそらく、起動可能なメディアがどのように構成されているかについての詳細をいくつか知ることで、「起動可能なメディアを起動可能にするものは何か」を定義するのに役立つでしょう。
起動手順はアーキテクチャによって異なるため、ここでは標準の PC (つまり x86 アーキテクチャ) に限定します。
まず、効果的に「起動」するには、BIOSの電源投入時セルフテスト(POST)後にメディアが選択される必要がある。これが起こるためには、メディアは起動可能としてマークつまり、最初のセクターにブート署名がなければなりません。これが、メディアを起動可能にする最初の要素です。
次に、BIOS がロードしてこのブート セクターに指示を与えます (そこに保存されているものは何でも... 適切なリアル モード プログラムである可能性もありますが、ここでは「通常の」スキームに固執します)。したがって、ブート可能にするには、メディアにこのような機能が必要です。ブートセクター。
メディアがパーティション化されている場合、このセクターにマスターブートレコード(MBR)がインストールされます。このコードはパーティションテーブルをチェックし、起動可能フラグセット次に、MBR はこのパーティションの最初のセクターをロードします。このセクターには、ボリューム ブート レコード (VBR) と呼ばれるものが含まれています。パーティション化されていないメディアの場合、VBR はメディアの最初のセクターに配置されているため、BIOS によって直接呼び出されることに注意してください。
VBRにはブートストラッププログラムこのプログラムは、マシンを初期化し (つまり、A20 ゲートによる拡張メモリのアクティブ化、リアル モードから保護モードへの切り替えなど)、「最新の」コードを実行するのに適した環境を設定し、このコードをメモリにロードして、そのコードに「ジャンプ」する必要があります。上記のコードは、ブートローダ プログラムの場合は OS カーネル、チェーン ロードの場合はマルチブート システム (GRUB、LILO など) のいずれかになります。いずれにせよ、最終的には、メディアをブートするには、実行する実行可能コードが必要です。
これに続くもの (例: カーネルの解凍、初期の RAM ディスクのマウント、ハイブリッド カーネルの場合のモジュールのロード、またはマイクロカーネル用のサーバーの起動など) は、起動可能なメディアの構成の観点からは厳密には関連がありません。
注: 私が説明したのは、ハードディスクとフロッピーのプロセスです。CD の場合もほとんど同じです。さらに、CD がブート可能であるためには、ISO9660 標準の拡張である El-Torito 仕様に従う必要があります。元々、CD にはブート可能なフロッピー ディスク イメージ (つまり、実際には 1.44M のイメージ) が含まれている必要があり、BIOS によってフロッピーとして扱われ、それに応じてブートされていました。最近のハードウェアでは、この回避策なしで直接ブートできます。
答え2
起動可能なメディアを起動可能にするのは
- 次のような事項を定義するブート可能なメディアの標準:
- ブートローダが適用可能なハードウェア プラットフォーム。
- ブートローダー ソフトウェアのメディア上の場所。
- そのソフトウェアがロードされるプロセス。
- メディアを接続可能なハードウェアにこれらの標準を実装します。
ウィキペディアには記事ブートプロセスについて説明します。