ブートローダー

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
人気のあるオープンソースブートローダーであるGNUGRUB
Windowsブートローダー

ブートローダー[1] [2]またはブートマネージャー[2]およびブートストラップローダーとも呼ばれるブートローダーは、コンピューターの起動を担当するコンピュータープログラムです。

コンピュータの電源をオフにしても、そのソフトウェア(オペレーティングシステム、アプリケーションコード、データなど)は不揮発性メモリに保存されたままになります。コンピュータの電源がオンになっている場合、通常、ランダムアクセスメモリ(RAM)にオペレーティングシステムまたはそのローダーがありません。コンピュータは最初に、読み取り専用メモリ(ROM、後にEEPROMNORフラッシュ)に格納された比較的小さなプログラムをいくつかの必要なデータとともに実行して、RAMを初期化し(特にx86システムの場合)、不揮発性デバイス(通常はブロックデバイス)にアクセスします。例:NANDフラッシュ)またはオペレーティングシステムのプログラムとデータをRAMにロードできるデバイス。

一部の初期のコンピュータシステムは、人間のオペレータまたは周辺機器からブート信号を受信すると、特定の場所のメモリに非常に少数の固定命令をロードし、少なくとも1つのCPUを初期化してから、CPUに命令を指示します。それらの実行を開始します。これらの命令は通常、一部の周辺機器から入力操作を開始します(オペレーターがスイッチで選択できる場合があります)。他のシステムは、ハードウェアコマンドを周辺機器またはI / Oコントローラに直接送信して、非常に単純な入力操作(「システムデバイスのセクター0を1000の位置からメモリに読み込む」など)を実行し、小さな負荷を効果的にロードする場合があります。メモリへのブートローダー命令の数。

小型のコンピューターは、柔軟性は低くなりますが、より自動化されたブートローダーメカニズムを使用して、コンピューターが事前に定義されたソフトウェア構成で迅速に起動するようにします。たとえば、多くのデスクトップコンピュータでは、ブートストラッププロセスは事前定義されたアドレス(Intelx86シリーズを含む一部のCPU外部の助けなしにリセット後にこのソフトウェアを実行するように設計されています)。このソフトウェアには、起動に参加する資格のあるデバイスを検索し、特別なセクション(最も一般的には起動セクター)から小さなプログラムをロードするための基本的な機能が含まれています)最も有望なデバイスであり、通常、セクターの開始など の固定エントリポイントから開始します。

第一段階のブートローダー

ブートローダーは、特にサイズにおいて、特有の制約に直面する可能性があります。たとえば、以前のIBM PCおよび互換機では、ブートセクタは通常32 KB [3] [4](後で64 KB [5]に緩和)のシステムメモリでのみ動作し、元の8088 /でサポートされている命令のみを使用する必要があります。 8086プロセッサ。固定ディスクリムーバブルドライブにあるPCブートローダーの第1ステージ(FSBL、第1ステージブートローダー)は、デフォルトの64バイトパーティションテーブルに4つのスペースを残すためにマスターブートレコードの最初の446バイトに収まる必要があります。パーティションエントリと2バイトのブート署名、BIOSが適切なブートローダーに必要なもの—またはそれ以下の場合、4つを超えるパーティションエントリ(それぞれ16バイトで最大16)、ディスク署名(6バイト)、ディスクタイムスタンプ(6バイト)などの追加機能、一部の環境では高度なアクティブパーティション(18バイト)または特別なマルチブートローダーもサポートする必要があります。フロッピーおよびスーパーフロッピー ボリュームのブートレコードでは、DOS 4.0以降のFAT12およびFAT16ボリュームの拡張BIOSパラメータブロック最大59バイトが使用されていますが、 FAT32はDOS 7.1で導入されたEBPBは87バイトも必要とし、512バイトのセクターサイズを想定した場合、ブートローダー用に423バイトしか残しません。したがって、Microsoftのブートセクターは従来、ブートプロセスに特定の制限を課していました。たとえば、ブートファイルはファイルシステムのルートディレクトリの固定位置に配置し、連続したセクターとして保存する必要がありました。[6] [7]条件に注意してください。コマンドによって、SYSDOSの新しいバージョンでは少し緩和されます。[7] [nb 1]その後、ブートローダーはファイルの最初の3つのセクターをメモリにロードできました。メモリには、ファイルの残りの部分をメモリにロードできる別の組み込みブートローダーが含まれていました。[7] MicrosoftがLBAを追加したときFAT32のサポートにより、 2つの物理セクターに到達し、サイズ上の理由から386命令を使用するブートローダーに切り替えました。同時に、他のベンダーは、最小限の使用可能なメモリ(32 KB)とプロセッササポート(8088/8086)のみに対する元の制約を緩和することなく、はるかに多くの機能を単一のブートセクターに詰め込むことができました。[nb 2]たとえば、DR-DOSブートセクターは、FAT12、FAT16、およびFAT32ファイルシステムでブートファイルを見つけて、ファイルがに保存されていない場合でも、 CHSまたはLBAを介して全体としてメモリにロードできます。固定された場所と連続したセクター。[8] [3] [9] [10] [11] [nb 3] [nb 2]

BIOSUEFIは、不揮発性デバイスから オペレーティングシステムをロードするだけでなく、オペレーティングシステムのシステムハードウェアを初期化します。

第1ステージのブートローダーの例には、BIOScorebootLibreboot、 DasU -Bootが含まれます。

第2段階のブートローダー

GNU GRUBrEFIndBOOTMGRSyslinuxNTLDRiBoot などの第2ステージのブートローダーは、それ自体がオペレーティングシステムではありませんが、オペレーティングシステムを適切にロードし、実行を転送することができます。その後、オペレーティングシステムはそれ自体を初期化し、追加のデバイスドライバをロードする場合があります。第2ステージのブートローダーは、それ自体の操作にドライバーを必要としませんが、代わりにBIOSやOpen Firmwareなどのシステムファームウェアによって提供される汎用ストレージアクセス方法を使用できますが、通常はハードウェア機能が制限され、パフォーマンスが低下します。[12]

多くのブートローダーは、ユーザーに複数のブート選択肢を提供するように構成できます。これらの選択肢には、さまざまなオペレーティングシステム(さまざまなパーティションまたはドライブからのデュアルブートまたはマルチブートの場合)、同じオペレーティングシステムのさまざまなバージョン(新しいバージョンに予期しない問題が発生した場合)、さまざまなオペレーティングシステムのロードオプション(たとえば、レスキューモードまたはセーフモード)、およびメモリテスター( memtest86 +など)、基本シェル(GNU GRUBなど)、さらにはゲーム(PC Booterゲームのリストを参照)など、オペレーティングシステムなしで機能できるスタンドアロンプ​​ログラム[13]一部のブートローダーは、他のブートローダーをロードすることもできます。たとえば、GRUBはWindowsを直接ロードするのではなく、BOOTMGRをロードします。通常、デフォルトの選択肢は、ユーザーがキーを押して選択肢を変更できる時間遅延を伴って事前に選択されています。この遅延の後、デフォルトの選択が自動的に実行されるため、通常の起動は対話なしで実行できます。

コンピュータがユーザーと対話する準備ができているか、オペレーティングシステムがシステムプログラムまたはアプリケーションプログラムを実行できる場合、起動プロセスは完了したと見なすことができます。

多くの組み込みシステムはすぐに起動する必要があります。たとえば、デジタルテレビGPSナビゲーションデバイスが起動するのを1分間待つことは、一般的に受け入れられません。したがって、このようなデバイスはROMまたはフラッシュメモリにソフトウェアシステムを備えているため、デバイスはすぐに機能を開始できます。デバイスの作成時にロードを事前に計算してROMに保存できるため、ロードはほとんどまたはまったく必要ありません。

大規模で複雑なシステムには、最終的にオペレーティングシステムと他のプログラムがロードされて実行できるようになるまで、複数のフェーズで進行するブート手順がある場合があります。オペレーティングシステムは決して起動または停止しないように設計されているため、ブートローダーはオペレーティングシステムをロードし、それ自体をそのシステム内の単なるプロセスとして構成してから、制御をオペレーティングシステムに取り消し不能に移す可能性があります。その後、ブートローダーは他のプロセスと同様に正常に終了します。

ネットワークブーティング

ほとんどのコンピュータは、コンピュータネットワークを介して起動することもできます。このシナリオでは、オペレーティングシステムはサーバーのディスクに保存され、その一部はTrivial File Transfer Protocol(TFTP)などの単純なプロトコルを使用してクライアントに転送されます。これらのパーツが転送された後、オペレーティングシステムが起動プロセスの制御を引き継ぎます。

第2ステージのブートローダーと同様に、ネットワークブートは、ネットワークインターフェイスのブートROMによって提供される一般的なネットワークアクセス方法を使用して開始されます。これには通常、Preboot Execution Environment(PXE)イメージが含まれます。ドライバは必要ありませんが、オペレーティングシステムのカーネルとドライバが転送されて起動されるまで、システムの機能は制限されます。その結果、ROMベースの起動が完了すると、それ自体がネットワークインターフェイスを使用できないオペレーティングシステムでネットワーク起動することが完全に可能になります。

も参照してください

メモ

  1. ^ PC DOS 5.0マニュアルには、systenファイルが連続している必要がなくなったと誤って記載されています。ただし、ブートプロセスが機能するには、システムファイルが最初の2つのディレクトリエントリを占有し、の最初の3つのセクターが連続して保存されている必要があります。これらの要件を引き続き処理します。IBMBIO.COMSYS
  2. ^ a b 例として、DR-DOS MBRおよびブートセクターの拡張機能は、 MS-DOS / PC DOSの対応物と比較して、最大7.05の従来のコード最適化手法を使用して、LBAFAT32、およびLOADERサポート7.07セクターは、自己変更コードオペコードレベルのプログラミング、副作用の制御された利用、マルチレベルのデータ/コードのオーバーラップおよびアルゴリズムに頼らなければなりませんでしたマルチブートおよびチェーンロードのシナリオでは、後方および他のオペレーティングシステムとの相互互換性の要件であったため、すべてを単一の物理セクターに圧縮するためのフォールディング手法。
  3. ^ DR-DOS VBRがファイル全体するという規則には1つの例外があります。ファイルが約29KBより大きい場合、ファイル全体をメモリにロードしようとすると、ブートローダーがスタックを上書き再配置されたディスクパラメータテーブル(DPT / FDPB)。したがって、 DR-DOS 7.07 VBRは、ファイルの最初の29 KBのみをメモリにロードし、の最初の部分に埋め込まれた別のローダーに依存してこの状態をチェックし、必要に応じてファイルの残りの部分をメモリにロードします。これは互換性の問題を引き起こしません。 IBMBIO.COMIBMBIO.COMIBMBIO.COMIBMBIO.COMのサイズは、このローダーがない以前のバージョンではこの制限を超えることはありませんでした。デュアルエントリ構造と組み合わせると、PC DOS VBRによってシステムをロードすることもできます。これにより、ファイルの最初の3つのセクターのみがメモリにロードされます。

参考文献

  1. ^ 「GNUGRUB-GNUプロジェクト-フリーソフトウェアファウンデーション(FSF)」www.gnu.org 2021年9月27日取得
  2. ^ a b "systemd-boot"www.freedesktop.org 2021年9月27日取得
  3. ^ a b Paul、Matthias R.(1997年10月2日)[1997年9月29日]。「CalderaOpenDOS7.01 / 7.02 Update Alpha 3IBMBIO.COM-README.TXTおよびBOOT.TXT-OpenDOSの起動方法の簡単な説明」2003年10月4日にオリジナルからアーカイブされました2009年3月29日取得 [1]
  4. ^ 坂本正彦(2010年5月13日)。「BIOSがMBRをx86の7C00hにロードするのはなぜですか?」glamenv-septzen.net 2012年8月22日取得
  5. ^ Compaq Computer Corporation; フェニックステクノロジーズ株式会社; インテルコーポレーション(1996年1月11日)。「BIOSブート仕様1.01」(PDF)2017年12月21日取得
  6. ^ Zbikowski、マーク; アレン、ポール; バルマー、スティーブ; ボーマン、ルーベン; ボーマン、ロブ; バトラー、ジョン; キャロル、チャック; チェンバレン、マーク; シェル、デビッド; コーリー、マイク; コートニー、マイク; ドライフース、マイク; ダンカン、レイチェル; Eckhardt、Kurt; エヴァンス、エリック; ファーマー、リック; ゲイツ、ビル; ギアリー、マイケル; グリフィン、ボブ; ホガース、ダグ; ジョンソン、ジェームズW。; Kermaani、Kaamel; キング、エイドリアン; コッホ、リード; Landowski、James; ラーソン、クリス; レノン、トーマス; リプキー、ダン; マクドナルド、マーク; マッキニー、ブルース; マーティン、パスカル; マザーズ、エステル; マシューズ、ボブ; メリン、デビッド; マージェンタイム、チャールズ; ネビン、ランディ; ニューウェル、ダン; ニューウェル、タニ; ノリス、デビッド; O'Leary、マイク; オリア、ボブ; オルソン、マイク; オスターマン、ラリー; オストリング、リッジ; パイ、スニル;パターソン、ティム; ペレス、ゲイリー; ピーターズ、クリス; ペッツォルド、チャールズ; ポロック、ジョン; レイノルズ、アーロン; ルービン、ダリル; ライアン、ラルフ; Schulmeisters、カール; シャー、ラジェン; ショー、バリー; 短い、アンソニー; Slivka、Ben; スミル、ジョン; Stillmaker、Betty; ストッダード、ジョン; ティルマン、デニス; ホイッテン、グレッグ; ヨント、ナタリー; ゼック、スティーブ(1988)。「テクニカルアドバイザー」。MS-DOS百科事典:バージョン1.0から3.2ダンカン、レイ; ボストウィック、スティーブ; バーゴイン、キース; Byers、Robert A。; ホーガン、トム; カイル、ジム; レトウィン、ゴードン; ペッツォルド、チャールズ; ラビノウィッツ、チップ; トムリン、ジム; ウィルトン、リチャード; ウォルバートン、ヴァン; ウォン、ウィリアム; ウッドコック、ジョアン(完全に作り直された版)。米国ワシントン州レドモンド:MicrosoftPressISBN 1-55615-049-0LCCN87-21452 _ OCLC16581341 _(xix +1570ページ; 26 cm)(注:この版は、別の著者チームによって撤回された1986年の初版を大幅に作り直した後、1988年に発行されました。[2]
  7. ^ a b c Chappell、Geoff(1994年1月)。「第2章:システムのフットプリント」。シュルマンでは、アンドリュー。ペダーセン、アモレット(編)。DOS内部Andrew Schulmanプログラミングシリーズ(第1版、第1版)。アディソン-ウェスリーISBN 978-0-201-60835-9(xxvi + 738 + ivページ、3.5 "-フロッピー[3] [4])エラッタ:[5] [6] [7]
  8. ^ Rosch、Winn L.(1991年2月12日)。「DRDOS5.0-より良いオペレーティングシステム?」PCマガジン10、いいえ。3.p。241-246、257、264、266 。 2019年7月25日にオリジナルからアーカイブされました2019年7月26日取得[…]はDRDOS 5.0で改善されたため、起動可能にするディスク上で最初のクラスターを空けておく必要はありません。DR DOSシステムファイルはディスク上のどこにでも配置できるため、システムを起動するために十分な空き容量のあるディスクを設定できます。[…]SYS(注:ソースはこれをSYSユーティリティに起因しますが、実際にはこれはブートセクターの高度なブートストラップローダーの機能です。SYSこのセクターをディスクに配置するだけです。)
  9. ^ Paul、Matthias R.(2001年1月17日)。「DR-DOSのFAT32」opendos @delorie2017年10月6日にオリジナルからアーカイブされました2017年10月6日取得[…] DR-DOSブートセクタ[…]はDRBIOS.SYS)ファイルを検索し、制御を渡す前に*ファイル全体*をメモリにロードします。[…]IBMBIO.COM
  10. ^ Paul、Matthias R.(2002年2月20日)。「コピーできません」opendos @delorie2017年10月6日にオリジナルからアーカイブされました2017年10月9日取得[…] DR-DOSブートセクタは、ファイルを実行する前にファイル全体をメモリにロードします。によってロードされるファイルについてはまったく気にしません[…] DR-DOSブートセクタ[…]は、ルートディレクトリに論理的に保存されている限り、[…]カーネルファイルを検索します。ディスク上のそれらの物理的な位置、およびそれらが断片化されているかどうかにかかわらず、DR-DOSブートセクターは関係ありません。したがって、カーネルファイルをディスクにコピーするだけで済みます(単純な場合でもIBMBIO.COMIBMDOS.COMIBMBIO.COMCOPY)、そしてブートセクターがDR-DOSセクターになるとすぐに、それらを見つけてロードします。もちろん、これらすべてを単一セクターのサイズである512バイトにまとめることは困難ですが、これはDR-DOSシステムをセットアップする必要がある場合の大きな利便性の向上であり、DRの鍵でもあります。 -DOSマルチOSLOADERユーティリティが動作します。MS-DOSカーネルファイルは特定の場所に存在する必要がありますが、DR-DOSファイルはどこにでも配置できるため、他のOSを起動するたびに物理的に入れ替える必要はありません。また、カーネルファイルを古いファイルにコピーするだけでDR-DOSシステムをアップグレードでき、 MS-DOS / PCDOSSYSで必要とされるような難しいセットアップ手順は必要ありません。同じドライブに異なるファイル名で複数のDR-DOSカーネルファイルを保存することもでき、LOADERはBOOT.LSTファイルにリストされているファイル名に従ってそれらを切り替えます。[…]
  11. ^ Paul、Matthias R.(2017年8月14日)[2017年8月7日]。「OmniBook300の拡張モードでのWindows3.1の継続的な物語」MoHPC-HP電卓の博物館2017年8月6日にオリジナルからアーカイブされました2017年10月6日取得[…] DR-DOSはディスクをパーティション分割するだけでなく、新しく作成されたボリュームをフォーマットしてブートセクターを一度に初期化できるため、誤って間違ったボリュームを台無しにするリスクがなく、またはの必要もありませんその後、システムファイルを含む残りのDR-DOSファイルをコピーするだけで済みます。MS-DOS /とは対照的に、それを知っておくことが重要です。 FDISKFORMAT /SSYSPC DOS、DR-DOSには「スマート」ブートセクタがあり、ファイルシステムを実際に「マウント」して、特定の場所に配置されることを期待するのではなく、ルートディレクトリでシステムファイルを検索してロードします。物理的には、システムファイルはどこにでも配置でき、断片化することもできます。[…]
  12. ^ 「第6章-起動とディスクの問題のトラブルシューティング」WindowsNTサーバーリソースキットマイクロソフト。2007年5月15日にオリジナルからアーカイブされました。
  13. ^ 「色合い」coreboot 2010年11月20日取得

外部リンク