
コンピューティングにおいて、ブートとは、コンピュータの物理的なボタンなどのハードウェア、またはソフトウェアコマンドによって開始される、コンピュータを起動するプロセスです。コンピュータの電源投入後、コンピュータの中央処理装置(CPU) のメイン メモリにはソフトウェアがないので、プロセスを実行するには、まずソフトウェアをメモリにロードする必要があります。これは、CPU 内のハードウェアまたはファームウェアによって実行される場合もあれば、コンピュータ システム内の別のプロセッサによって実行される場合もあります。一部のシステムでは、パワーオン リセット (POR) ではブートが開始されず、POR の完了後にオペレータがブートを開始する必要があります。IBM は一部[ nb 1 ] の製品ライン で初期プログラム ロード( IPL )という用語を使用しています。
コンピュータの再起動はリブートとも呼ばれ、CPUへの電源がオフからオンに切り替わった後などの「ハードブート」と、電源が切れない「ソフトブート」があります。一部のシステムでは、ソフトブート時にオプションでRAMをゼロクリアすることもできます。ハードブートとソフトブートはどちらも、ボタンの押下などのハードウェア、またはソフトウェアコマンドによって開始できます。ブートは、通常はオペレーティングシステムと一部のアプリケーションで構成されるランタイムシステム( [注2 ])が動作可能になった時点で完了します。
コンピュータをスリープ状態(サスペンド)から復帰させるプロセスにはブートは含まれませんが、休止状態から復帰させるプロセスにはブートが含まれます。一部の組み込みシステムは、動作を開始するために目立ったブートシーケンスを必要とせず、電源を入れると、読み取り専用メモリ(ROM)に保存されている動作プログラムを実行するだけの場合もあります。すべてのコンピューティングシステムはステートマシンであり、意図しないロック状態から指定されたゼロ状態に戻すには、再起動が唯一の方法となる場合があります。
ブート プロセスでは、オペレーティング システムまたはスタンドアロン ユーティリティをロードするだけでなく、オペレーティング システムの問題を診断するためのストレージ ダンプ プログラムをロードすることもできます。
ブートは、ブートストラップ[ 1 ] [ 2 ]またはブートストラップロードの略で、 「自分のブーツストラップで自分自身を引き上げる」というフレーズに由来しています。[ 3 ] [ 4 ]この用法は、ほとんどのソフトウェアがコンピュータ上で既に実行されている他のソフトウェアによってコンピュータにロードされる場合、最初のソフトウェアをコンピュータにロードするための何らかのメカニズムが存在する必要があるという要件に注意を喚起します。[ 5 ]初期のコンピュータでは、この問題を解決するために、さまざまなアドホックな方法を使用して小さなプログラムをメモリに読み込んでいました。さまざまな種類のROMの発明により、コンピュータのブートROMに格納された消去できない起動プログラムをコンピュータに搭載して出荷できるようになり、このパラドックスは解決されました。ROMの容量の増大により、これまで以上に複雑な起動手順を実装できるようになりました。
歴史

短い初期プログラムをコンピュータにロードする方法は数多くあります。単純な物理的な入力から、より複雑なプログラムを保存できるリムーバブルメディアまで、多岐にわたります。
集積回路ROM以前の例
初期のコンピュータ
1940年代から1950年代にかけての初期のコンピュータは、プログラミングに数週間かかることもあり、他に類を見ないエンジニアリングの成果でした。プログラムのロードは、解決すべき多くの問題の一つでした。初期のコンピュータであるENIACは、メモリにプログラムを保存せず、相互接続ケーブルの構成によって問題ごとにセットアップされていました。ブートストラップはENIACには適用されず、電源投入と同時にハードウェア構成が問題解決の準備を整えていました。
2番目に製作されたプログラム内蔵型コンピュータであるEDSACシステムは、スタートボタンが押されると、ステッピングスイッチを用いて固定プログラムをメモリに転送した。デイビッド・ウィーラーが1948年後半に完成させたこの装置に記憶されたプログラムは、パンチテープからさらに命令を読み込み、実行した。[ 6 ] [ 7 ]
最初の商用コンピュータ
UNIVAC IやIBM 701 [ 8 ]など、最初に市販されたプログラム可能なコンピュータには、操作を簡素化する機能が搭載されていました。これらのコンピュータには通常、完全な入出力操作を実行する命令が含まれていました。同じハードウェアロジックを使用して、パンチカード(最も一般的なもの)や、磁気ドラムや磁気テープなどのブートストラッププログラムが保存された他の入力メディアの内容を、ボタンを1つ押すだけでロードすることができました。このブートコンセプトは、1950年代から1960年代初頭にかけてのIBMコンピュータで様々な名前で呼ばれていましたが、IBMはIBM 7030 Stretch [ 9 ]で「初期プログラムロード」という用語を使用し、後に1964年のSystem/360からメインフレーム製品にも使用しました。

IBM 701コンピュータ(1952~1956年)には「ロード」ボタンがあり、カードリーダーのパンチカード、テープドライブの磁気テープ、または磁気ドラムユニットから、ロードセレクタスイッチの位置に応じて、最初の36ビットワードをメインメモリに読み込みます。残りの18ビットハーフワードは命令として実行され、通常は追加のワードをメモリに読み込みます。[ 10 ] [ 11 ]ロードされたブートプログラムが実行され、今度は、人間の操作による操作なしに、その媒体からより大きなプログラムをメモリにロードします。IBM 704、[ 12 ] 、 IBM 7090、[ 13 ]、IBM 7094 [ 14 ]にも同様のメカニズムがありましたが、デバイスごとにロードボタンが異なっていました。「ブート」という用語は、少なくとも1958年からこの意味で使用されています。[ 15 ]

当時の他のIBMコンピュータにも同様の機能がありました。例えば、IBM 1401システム(1959年)は、カードリーダーを使用してパンチカードからプログラムを読み込みました。パンチカードに格納された80文字はメモリ位置001から080に読み込まれ、コンピュータはメモリ位置001に分岐して最初の格納命令を読み取ります。この命令は常に同じで、最初の80のメモリ位置の情報をアセンブリ領域に移動し、そこでパンチカード2、3、4、…の情報を組み合わせて格納プログラムを作成します。この情報がアセンブリ領域に移動されると、マシンは位置080(カードの読み取り)の命令に分岐し、次のカードが読み取られて情報が処理されます。
もう1つの例は、10進マシンであるIBM 650(1953年)で、その操作パネルには10個の10ポジションスイッチがあり、メモリワード(アドレス8000)としてアドレス指定でき、命令として実行できました。したがって、スイッチを7004000400に設定し、適切なボタンを押すと、カードリーダーの最初のカードがメモリに読み込まれ(オペコード70)、アドレス400から始まり、次に400にジャンプしてそのカード上のプログラムの実行が開始されました。[ 16 ] IBM 7040と7044にも同様のメカニズムがあり、ロードボタンを押すと、フロントパネルの入力キーで設定された命令が実行され、その命令で設定されたチャネルに、アドレス00100から始まるメモリにデータを転送するコマンドが送られます。転送が完了すると、CPUはアドレス00101にジャンプします。[ 17 ]
IBM の競合他社もワンボタン プログラム ロードを提供していました。
- CDC 6600(1964年頃)には144個のトグルスイッチを備えたデッドスタートパネルがありました。デッドスタートスイッチはトグルスイッチから12ビットワード12個を周辺プロセッサ(PP)0のメモリに入力し、PP 0にメモリにロードされたコードを実行させることでロードシーケンスを開始しました。[ 18 ] PP 0は必要なコードを自身のメモリにロードし、他のPPを初期化しました。
- GE 645(1965年頃)には「SYSTEM BOOTLOAD」ボタンがあり、これを押すとI/Oコントローラの1つがダイオード読み取り専用メモリから64ワードのプログラムをメモリにロードし、割り込みを送信してそのプログラムの実行を開始した。[ 19 ]
- PDP-10の最初のモデルには「READ IN」ボタンがあり、これを押すとプロセッサがリセットされ、コントロールパネルのスイッチで指定されたデバイスに対してI/O操作が開始され、36ビットワードが読み込まれ、後続のワード読み取りのターゲットアドレスとカウントが与えられます。読み取りが完了すると、プロセッサは最後に読み込んだワードにジャンプして、読み込んだコードの実行を開始します。[ 20 ]
この方式の注目すべきバリエーションは、Burroughs B1700に見られる。この機種にはブートROMもハードワイヤードIPLも存在しない。代わりに、システムがリセットされると、フロントパネルに搭載されたカセットテープドライブからマイクロ命令を順次読み出して実行する。これによりRAMにブートローダーがセットアップされ、それが実行される。[ 21 ]しかし、この方式はシステムに関する前提条件をほとんど考慮しないため、CPUが重度に故障した場合でもフロントパネルに判読可能なコードを表示する診断(メンテナンステストルーチン)テープをロードするのにも同様に使用できる。 [ 21 ]
IBM System/360および後継機種
IBM System/360およびその後継機種 (現在のz/Architectureマシンを含む) では、ブート プロセスは初期プログラム ロード(IPL) と呼ばれています。
IBM は7030 (Stretch)向けにこの用語を作り出し、[ 9 ] System/360 の設計時にもそれを復活させ、現在でもそれらの環境で使い続けています。[ 22 ] System/360 プロセッサでは、コンピュータ オペレータが 3 桁の 16 進数のデバイス アドレス (CUU; C = I/O チャネル アドレス、UU = 制御装置、デバイス アドレス[ nb 3 ] ) を選択し、 LOADボタンを押すことで IPL が開始されます。ハイエンドのSystem/360モデル、ほとんどの[ nb 4 ] System/370およびそれ以降のシステムでは、スイッチと LOAD ボタンの機能は、多くの場合[ nb 5 ] IBM 2250のようなデバイスまたはIBM 3270のようなデバイスのグラフィック コンソールの画面上の選択可能な領域を使用してシミュレートされます。例えば、System/370 モデル158では、キーボードで0-7-X(ゼロ、7、Xの順)と入力すると、入力領域に入力されたデバイスアドレスからIPLが実行されます。Amdahl 470V/6および関連CPUは、オプションのセカンドチャネルユニットを搭載したCPUで4桁の16進数をサポートし、合計32チャネルをサポートしていました。後にIBMは16チャネルを超えるチャネルもサポートするようになりました。
System/360 およびIBM Zより前の後継機、および Amdahl などの互換機の IPL 機能は、オペレータ指定のデバイスから実アドレス 0 から始まる 24 バイトを主記憶装置に読み取ります。2 番目と 3 番目の 8 バイト グループはチャネル コマンド ワード(CCW) として扱われ、スタートアップ プログラムのロードを続行します (最初の CCW は常に CPU によってシミュレートされ、コマンド チェーンと不正な長さの表示の抑制が強制されている Read IPL コマンド02hで構成されます)。I/O チャネル コマンドが完了すると、最初の 8 バイト グループがプロセッサのプログラム ステータス ワード(PSW) にロードされ、スタートアップ プログラムがその PSW で指定された位置から実行を開始します。[ 22 ] IPLデバイスは通常ディスクドライブであるため、02h読み取りタイプコマンドは特別な意味を持ちますが、まったく同じ手順が、テープドライブやカードリーダーなどの他の入力タイプのデバイスからデバイスに依存しない方法でIPLを行うためにも使用され、たとえば、OSの初期配布磁気テープから新しいコンピュータにオペレーティングシステムをインストールすることが可能です。ディスクコントローラの場合、02hコマンドは、選択されたデバイスをシリンダ0000h、ヘッド0000hにシークさせ、シリンダとヘッドのシークコマンド07hをシミュレートし、レコード01hを検索させ、ID一致検索コマンド31hをシミュレートします。テープコントローラとカードコントローラでは、シークと検索はシミュレートされません。これらのデバイスクラスでは、Read IPLコマンドは単なるシーケンシャル読み取りコマンドだからです。
ディスク、テープ、またはカード デッキには、実際のオペレーティング システムまたはスタンドアロン ユーティリティをメイン ストレージにロードするための特別なプログラムが含まれている必要があり、この特定の目的のために、スタンドアロン DASDI (Direct Access Storage Device Initialization) プログラムまたはオペレーティング システムで実行される同等のプログラム (ICKDSF など) によって「IPL テキスト」がディスク上に配置されますが、IPL 対応のテープやカード デッキには通常、この「IPL テキスト」がすでに含まれた状態で配布されます。
IBM は IPL プロセスにいくつかの進化的な変更を導入し、System/370 Extended Architecture (S/370-XA) 以降の詳細をいくつか変更し、z/Architecture に新しいタイプの IPL を追加しました。
ミニコンピュータ

ディジタル・イクイップメント・コーポレーション(DEC)のPDP-5およびPDP-8 (1965年)に始まるミニコンピュータは、 CPUを入出力操作の補助に使うことで設計を簡素化した。これによりコストは削減されたが、ブートはボタンを1つ押すよりも複雑になった。ミニコンピュータは通常、フロントパネル上のスイッチの配列を操作することで、短いプログラムを切り替える何らかの方法を持っていた。初期のミニコンピュータは磁気コアメモリを使用していたため、電源を切っても情報が失われなかったため、これらのブートストラップローダは消去されない限りそのまま残っていた。プログラムのバグによってループが発生し、メモリ全体が上書きされると、誤って消去されることもあった。
このような単純なブート形式を備えた他のミニコンピュータとしては、ヒューレット・パッカードのHP 2100シリーズ (1960 年代半ば)、オリジナルのData General Nova (1969 年)、DEC のPDP-4 (1962 年) およびPDP-11 (1970 年)などがあります。
ミニコンピュータの I/O デバイスで読み取り操作を実行するために必要な I/O 操作は、通常、デバイス コントローラごとに異なるため、デバイスごとに異なるブートストラップ プログラムが必要でした。
DECは1971年、PDP-11向けにオプションのダイオード・マトリックス読取専用メモリ(ROM)を追加しました。このメモリは、最大32ワード(64バイト)のブートストラップ・プログラムを格納できます。このメモリは、 Unibusに差し込むM792というプリント基板カードで構成され、32×16の半導体ダイオードアレイを搭載していました。512個のダイオードすべてが取り付けられると、メモリのビットはすべて「1」になります。このカードは、「0」にしたいビットを持つダイオードをそれぞれ切断することでプログラムされました。DECは、不要なダイオードを省略することで、多くの標準入力デバイス向けにプリプログラムされたBM792-Yxシリーズというカードも販売していました。[ 23 ] [ 24 ]
従来のアプローチに従って、初期のPDP-1にはハードウェアローダーが搭載されており、オペレータはロードスイッチを押すだけで紙テープリーダーにプログラムをコアメモリに直接ロードするように指示できます。PDP -4の後継機であるPDP-7、[ 25 ] 、 PDP-9、[ 26 ]、PDP-15 [ 27 ]には、紙テープからプログラムを読み込み、そのプログラムにジャンプするための読み込みボタンが追加されました。データジェネラルのスーパーノヴァは、フロントパネルのスイッチを使用して、コンピュータがフロントパネルのデータスイッチで指定されたデバイスからメモリに命令を自動的にロードし、ロードされたコードにジャンプするようにしました。[ 28 ]
初期のミニコンピュータのブートローダーの例
紙テープリーダーを備えたミニコンピュータでは、ブートプロセスで最初に実行されるプログラムであるブートローダーは、チェックサム付きの紙テープを読み取る第2段階ブートローダー(バイナリローダーと呼ばれることが多い)か、外部記憶媒体からオペレーティングシステムをコアメモリに読み込みます。ブートローダーの擬似コードは、次の8つの命令のように単純なものになる場合があります。
- Pレジスタを9に設定する
- 紙テープリーダーの準備を確認する
- 準備ができていない場合は2へ進んでください
- 紙テープリーダーからアキュムレータに1バイトを読み込む
- アキュムレータをPレジスタのアドレスに格納する
- テープの終わりの場合は9へジャンプ
- Pレジスタをインクリメントする
- 2へジャンプ
関連する例として、1970年代のNicolet Instrument Corporation製ミニコンピュータ用のローダーがあります。これは、テレタイプ・モデル33 ASRテレプリンターの紙テープ読み取りパンチユニットを使用しています。第2段階ローダーのバイトは、紙テープから逆順に読み取られます。
- Pレジスタを106に設定する
- 紙テープリーダーの準備を確認する
- 準備ができていない場合は2へ進んでください
- 紙テープリーダーからアキュムレータに1バイトを読み込む
- アキュムレータをPレジスタのアドレスに格納する
- Pレジスタをデクリメントする
- 2へジャンプ
第2ステージローダーの長さは、最終バイトがアドレス7を上書きする程度です。アドレス6の命令が実行されると、アドレス7から第2ステージローダーの実行が開始されます。その後、第2ステージローダーは、オペレーティングシステムを格納した、はるかに長いテープがテープリーダーにセットされるのを待ちます。ブートローダーと第2ステージローダーの違いは、紙テープ読み取りエラーを捕捉するためのチェックコードが追加されていることです。これは、テレタイプモデル33 ASRのような比較的低コストの「パートタイムデューティ」ハードウェアで頻繁に発生します。(フリーデン社のフレキソライターははるかに信頼性が高かったものの、比較的高価でした。)
最初のマイクロコンピュータの起動
初期のマイクロコンピュータ、例えばAltair 8800(1975年発売)や、それ以前の類似機種(Intel 8008 CPUベース)には、ブートストラップ用のハードウェアは搭載されていなかった。[ 29 ]電源投入時、CPUはランダムデータが格納されたメモリを認識する。これらのマシンのフロントパネルには、アドレスとデータを入力するためのトグルスイッチが備えられており、コンピュータのメモリワードとアドレスバスのビットごとに1つずつ配置されていた。ハードウェアに簡単な追加を行うことで、これらのスイッチから一度に1つのメモリ位置をロードし、ブートストラップコードを格納できるようになった。その間、CPUはメモリの内容を実行しようとはしなかった。正しくロードされると、CPUはブートストラップコードを実行できるようになる。このプロセスは、初期のいくつかのミニコンピュータで使用されていたものと同様に、面倒で、エラーのないものでなければならなかった。[ 30 ]
集積回路の読み取り専用メモリの時代

集積回路の読み取り専用メモリ(ROM)の導入により、マスクプログラムROM、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、フラッシュメモリなど、様々なバリエーションが生まれ、ROMの物理的なサイズとコストが削減されました。これにより、ファームウェアのブートプログラムをコンピュータに組み込むことが可能になりました。
ミニコンピュータ
Data General Nova 1200 (1970) とNova 800 (1971) にはプログラムロードスイッチがあり、2つのROMチップを提供するオプションと組み合わせることで、それらのROMチップからメインメモリにプログラムをロードし、そこにジャンプすることができました。[ 28 ] Digital Equipment Corporation は集積回路ROMベースの BM873 (1974)、[ 31 ] M9301 (1977)、[ 32 ] M9312 (1978)、[ 33 ] REV11-A および REV11-C、[ 34 ] MRV11-C、[ 35 ]および MRV11-D [ 36 ] ROMメモリを導入し、すべてブートストラップROMとして使用可能でした。 PDP-11/34(1976)、[ 37 ] PDP-11/60(1977)、[ 38 ] PDP-11/24(1979)、[ 39 ]およびそれ以降のほとんどのモデルにはブートROMモジュールが含まれています。
イタリアの電話交換機「Gruppi Speciali」は、1975年にCSELTの研究員アルベルト・シアラメラによって特許を取得しました[ 40 ] 。このコンピュータには(外付け)ROMが搭載されていました。Gruppi Specialiは1975年から、フェライトコアではなく半導体で構成されたROMメモリからオペレーティングシステムを起動する、完全にワンボタン式のマシンでした。ROMデバイスはGruppi Specialiのコンピュータにネイティブに組み込まれていませんでした。しかし、マシンの設計上、ROMデバイスはPDP-11のように、シングルボタンROMブート用に設計されていないマシンでも可能でした(したがって、この「ブートストラップデバイス」はアーキテクチャに依存しませんでした)。電源オフ後のマシンの状態を保存する機能も備えており、これは電話交換機の競争においてもう一つの重要な機能でした[ 41 ] 。
一部のミニコンピュータおよびスーパーミニコンピュータには、メインプロセッサをブートストラップする独立したコンソールプロセッサが搭載されている。PDP-11/44はコンソールプロセッサとしてIntel 8085を搭載していた[ 42 ]。Digitalの32ビットスーパーミニコンピュータであるVAXシリーズの最初の製品であるVAX-11/780はLSI - 11ベースのコンソールプロセッサを搭載していた[ 43 ]。VAX-11/730は8085ベースのコンソールプロセッサを搭載していた[ 44 ] 。これらのコンソールプロセッサは、様々な記憶装置からメインプロセッサを起動することができた。
VAX-11/750などの他のスーパーミニコンピュータでは、起動の最初の段階を含むコンソール機能をCPUマイクロコードで実装しています。[ 45 ]
マイクロプロセッサとマイクロコンピュータ
通常、マイクロプロセッサは、リセットまたは電源投入後、起動プロセスを実行します。このプロセスは通常、「特定のアドレスから始まるコードの実行を開始する」か、「特定のアドレスでマルチバイトコードを探し、指定された場所にジャンプして実行を開始する」という形式をとります。このマイクロプロセッサを使用して構築されたシステムでは、これらの特別な位置を占有する永続ROMが備えられているため、システムは常にオペレータの操作なしに動作を開始します。例えば、Intel x86プロセッサは常にF000:FFF0から始まる命令を実行することから開始されます[ 46 ] [ 47 ]。一方、MOS 6502プロセッサでは、初期化は$FFFD(MSバイト)と$FFFC(LSバイト)の2バイトのベクターアドレスを読み取り、その位置にジャンプしてブートストラップコードを実行することから始まります[ 48 ] 。
アップルコンピュータ社が1976年に発売した最初のコンピュータ、Apple 1はPROMチップを搭載しており、商用コンピュータにおけるブートプロセス用のフロントパネル(Altair 8800の場合)の必要性を排除しました。Appleの広告によると、「スイッチもランプも不要…PROMのファームウェアにより、キーボードからプログラム(すべて16進数)を入力、表示、デバッグできます。」[ 49 ]
当時の読み取り専用メモリの高コスト化に伴い、Apple II はディスクオペレーティングシステムの起動を非常に小さなステップで実行し、各ステップで制御を次の段階へと移し、徐々に複雑化する起動プロセスを進めていました(Apple DOS:ブートローダーを参照)。ディスクオペレーティングシステムの ROM への依存度が非常に低かったため、ハードウェアは非常に柔軟で、幅広いカスタマイズされたディスクコピー防止メカニズムをサポートしていました(ソフトウェアクラッキング:歴史 を参照)。
一部のオペレーティングシステム、特にAppleの 1995 年以前のMacintoshシステムは、ハードウェアと非常に密接に連携しているため、標準以外のオペレーティングシステムをネイティブで起動することは不可能です。これは、前述のスイッチを使用するシナリオとは正反対の極端な例です。柔軟性は非常に低いですが、すべてのハードウェアが正常に動作している限り、比較的エラーや誤操作がありません。このような状況で一般的な解決策は、システムを乗っ取って代替 OS をロードする、標準 OS に属するプログラムとして機能するブートローダーを設計することです。この手法は、Apple のA/UX Unix 実装で使用され、さまざまなフリーウェアオペレーティングシステムやBeOS Personal Edition 5に模倣されました。
Atari STマイクロコンピュータのような一部のマシンは「インスタント・オン」で、オペレーティングシステムはROMから実行されました。そのため、ブートストラップの特徴的な操作の一つである、二次記憶装置や三次記憶装置からのOSの取得は不要になりました。システムのカスタマイズ、アクセサリ、その他のサポートソフトウェアを自動的にロードできるように、Atariのフロッピードライブはブートプロセス中に追加のコンポーネントを読み込んでいました。システムが追加のコンポーネントを検索している間、手動でフロッピーディスクを挿入するためのタイムアウト遅延がありました。これは、空のディスクを挿入することで回避できました。Atari STハードウェアはまた、Atariの電子ゲーム製作の伝統を引き継ぎ、カートリッジスロットがゲーム用のネイティブプログラム実行を提供できるように設計されていました。MacintoshシステムROMを搭載したSpectre GCRカートリッジをゲームスロットに挿入し、Atariの電源を入れると、Atari独自のTOSではなく、Macintoshオペレーティングシステムを「ネイティブにブート」することができました。
IBMパーソナルコンピュータには、 BIOSと呼ばれるROMベースのファームウェアが搭載されていました。このファームウェアの機能の一つは、マシンの電源投入時にパワーオンセルフテストを実行し、ブートデバイスからソフトウェアを読み取って実行することでした。IBMパーソナルコンピュータのBIOSと互換性のあるファームウェアは、 IBM PC互換機で使用されています。UEFIはIntelによって開発され、当初はItaniumベースのマシン向けに開発されましたが、後にIntelプロセッサを搭載したApple Macを含むx86ベースのマシンでもBIOSの代替として使用されるようになりました。
Unixワークステーションは当初、ベンダー固有のROMベースのファームウェアを搭載していました。サン・マイクロシステムズは後にOpenBoot(後にOpen Firmwareとして知られる)を開発しました。これはForthインタプリタを組み込み、ファームウェアの大部分はForthで記述されていました。これはIEEEによってIEEE標準1275-1994として標準化され、この標準を実装したファームウェアは、PowerPCベースのMacやその他のPowerPCベースのマシン、そしてサン自身のSPARCベースのコンピュータで使用されました。Advanced RISC Computing仕様では別のファームウェア標準が定義され、一部のMIPSベースおよびAlphaベースのマシン、そしてSGI Visual Workstation x86ベースのワークステーションに実装されました。
最新のブートローダー
コンピュータの電源を切ると、そのソフトウェア(オペレーティングシステム、アプリケーションコード、データなど)は不揮発性メモリに保存されたままになります。コンピュータの電源を入れると、通常、ランダムアクセスメモリ(RAM)にはオペレーティングシステムやそのローダーは保存されません。コンピュータはまず、インプレース実行をサポートする読み取り専用メモリ(ROM、後にEEPROM、NORフラッシュ)に保存された比較的小さなプログラムを実行し、CPUとマザーボードを初期化し、メモリを初期化し(特にx86システム)、オペレーティングシステムのプログラムとデータをRAMにロードできるストレージ(通常はブロックアドレス指定デバイス、たとえばハードディスクドライブ、NANDフラッシュ、ソリッドステートドライブ)を初期化してアクセスし、その他のI/Oデバイスを初期化します。
このシーケンスを開始する小さなプログラムは、ブートストラップローダー、ブートストラップ、またはブートローダーと呼ばれます。多くの場合、多段階ブートローダーが使用され、チェーンロードのプロセスで、複雑さが増す複数のプログラムが次々にロードされます。
初期のコンピュータシステムの中には、人間のオペレータまたは周辺機器からブート信号を受信すると、ごく少数の固定命令をメモリの特定の位置にロードし、少なくとも1つのCPUを初期化した後、CPUにこれらの命令を指定して実行を開始するものがありました。これらの命令は通常、何らかの周辺機器(オペレータがスイッチで選択できるものも含む)からの入力操作を開始します。他のシステムでは、周辺機器またはI/Oコントローラにハードウェアコマンドを直接送信し、非常に単純な入力操作(例えば「システムデバイスのセクタ0をメモリの1000番地から読み込む」など)を実行させることで、少数のブートローダ命令をメモリにロードします。その後、I/Oデバイスからの完了信号を使用して、CPUによる命令の実行を開始します。
小型のコンピュータでは、柔軟性は劣るものの、より自動的なブートローダ機構が採用されていることが多く、コンピュータがすばやく起動し、所定のソフトウェア構成で起動するようにしています。たとえば、多くのデスクトップ コンピュータでは、ブートストラップ プロセスは、CPU が定義済みアドレスにある ROM ( IBM PCの BIOSなど) に含まれるソフトウェアを実行することから始まります (Intel x86 シリーズなどの一部の CPU は、リセット後に外部からの支援なしにこのソフトウェアを実行するように設計されています)。このソフトウェアには、ブートに参加できるデバイスを検索し、最も可能性の高いデバイスの特別なセクション (最も一般的にはブート セクタ) から小さなプログラムをロードする基本的な機能が含まれており、通常はセクタの先頭などの 固定のエントリ ポイントから開始します。
ブートローダは、特にサイズに関して特殊な制約を受ける場合があります。たとえば、IBM PC および互換機では、ブートコードはマスターブートレコード(MBR) とパーティションブートレコード(PBR) に収まる必要があり、これらは 1 つのセクターに制限されています。IBM System/360では、サイズは IPL メディア (カードサイズ、トラックサイズなど) によって制限されます。
このような制約のあるシステムでは、RAMに最初にロードされるプログラムはオペレーティングシステムをロードするのに十分な大きさではない場合があり、代わりにより大きな別のプログラムをロードする必要があります。RAMに最初にロードされるプログラムは第1ステージブートローダーと呼ばれ、それがロードするプログラムは第2ステージブートローダーと呼ばれます。多くの組み込みCPUでは、CPU内蔵のブートROM(ゼロステージブートローダーと呼ばれることもあります)[ 50 ]が第1ステージブートローダーを検出してロードすることができます。
第一段階ブートローダー
第一段階(ハードウェア初期化段階)のブートローダの例としては、BIOS、UEFI、coreboot、Libreboot、Das U-Bootなどがある。IBM PCでは、マスターブートレコード(MBR)とパーティションブートレコード(PBR)のブートローダは、少なくとも32KB [ 51 ] [ 52 ](後に64KB [ 53 ]に拡張)のシステムメモリを必要とするようにコーディングされており、オリジナルの8088/8086プロセッサでサポートされている命令のみを使用する。
第2段階ブートローダー
shim、 [ 54 ] GNU GRUB、rEFInd、BOOTMGR、Syslinux、NTLDR などの第2段階(OS初期化段階)ブートローダは、それ自体はオペレーティングシステムではありませんが、オペレーティングシステムを適切にロードし、実行を移すことができます。その後、オペレーティングシステムは自身を初期化し、追加のデバイスドライバをロードする場合があります。第2段階ブートローダは、自身の動作にドライバを必要とせず、代わりにBIOS、UEFI、 Open Firmwareなどのシステムファームウェアによって提供される汎用ストレージアクセス方法を使用できますが、通常はハードウェア機能が制限され、パフォーマンスが低くなります。[ 55 ]
多くのブートローダ(GNU GRUB、rEFInd、WindowsのBOOTMGR、Syslinux、Windows NT/2000/XPのNTLDRなど)は、ユーザーに複数のブート選択肢を与えるように設定できます。これらの選択肢には、異なるオペレーティングシステム(異なるパーティションやドライブからのデュアルブートまたはマルチブート用)、同じオペレーティングシステムの異なるバージョン(新しいバージョンで予期しない問題が発生した場合)、異なるオペレーティングシステムの読み込みオプション(レスキューモードまたはセーフモードでの起動など)、およびオペレーティングシステムなしで機能できるスタンドアロンプログラム(メモリテスター(memtest86+など)、基本シェル(GNU GRUBの場合)、ゲーム( PC Booterゲームの一覧を参照)など)が含まれます。[ 56 ]一部のブートローダは他のブートローダを読み込むこともできます。たとえば、GRUBはWindowsを直接読み込む代わりにBOOTMGRを読み込みます。通常、デフォルトの選択肢が事前に選択されており、その間にユーザーがキーを押して選択を変更できます。この遅延の後、デフォルトの選択が自動的に実行されるため、対話なしで通常の起動が行われます。
コンピュータがユーザーと対話する準備ができたとき、またはオペレーティング システムがシステム プログラムまたはアプリケーション プログラムを実行できるようになったときに、ブート プロセスは完了したと見なすことができます。
第一段階と第二段階のブートローダー
Das U-BootやiBootなどの一部のブートローダーには、第 1 段階と第 2 段階の両方のブート機能が含まれています。
組み込みおよび多段ブートローダー
多くの組み込みシステムは、即座に起動する必要があります。例えば、デジタルテレビやGPSナビゲーションデバイスの起動に1分も待つのは、一般的に許容されません。そのため、これらのデバイスは、ROMまたはフラッシュメモリにソフトウェアシステムを搭載し、デバイスが即座に動作を開始できるようにしています。デバイスの製造時にロード処理を事前に計算してROMに保存できるため、ロード処理はほとんど、あるいは全く必要ありません。
大規模で複雑なシステムでは、複数のフェーズを経て最終的にオペレーティングシステムやその他のプログラムがロードされ、実行準備が整うまで、ブート手順が実行されることがあります。オペレーティングシステムは起動も停止もしないものとして設計されているため、ブートローダーはオペレーティングシステムをロードし、そのシステム内の単なるプロセスとして自身を設定し、その後、制御をオペレーティングシステムに不可逆的に移行させる場合があります。その後、ブートローダーは他のプロセスと同様に正常に終了します。
ネットワークブート
ほとんどのコンピュータは、コンピュータネットワーク経由で起動することも可能です。このシナリオでは、オペレーティングシステムはサーバーのディスクに保存され、その一部がTFTP ( Trivial File Transfer Protocol)などの単純なプロトコルを使用してクライアントに転送されます。転送が完了すると、オペレーティングシステムが起動プロセスの制御を引き継ぎます。
第2ステージブートローダーと同様に、ネットワークブートは、ネットワークインターフェースのブートROM(通常はPXE( Preboot Execution Environment)イメージを含む)が提供する汎用ネットワークアクセス方法を使用して開始されます。ドライバーは不要ですが、オペレーティングシステムのカーネルとドライバーが転送され起動されるまで、システム機能は制限されます。そのため、ROMベースのブートが完了すると、ネットワークインターフェースを使用できないオペレーティングシステムでもネットワークブートが可能になります。
IBM互換パーソナルコンピュータ(PC)
ブートデバイス

ブート デバイスは、オペレーティング システムがロードされるストレージ デバイスです。最近の PC の UEFI または BIOS ファームウェアは、さまざまなデバイスからのブートをサポートしています。通常は、ローカルのソリッド ステート ドライブまたはハード ディスク ドライブ(そのドライブまたはディスク上のGPTまたはマスター ブート レコード(MBR)経由)、光ディスク ドライブ( El Toritoを使用)、USB大容量ストレージデバイス ( USB フラッシュ ドライブ、メモリ カード リーダー、USB ハード ディスク ドライブ、USB 光ディスク ドライブ、USB ソリッド ステート ドライブなど)、またはネットワーク インターフェイス カード ( PXEを使用) からのブートです。あまり一般的ではない古い BIOS ブート可能デバイスには、フロッピー ディスク ドライブ、Zip ドライブ、およびLS-120ドライブがあります。IBM 互換 PC は、水平統合ハードウェアと UEFI/BIOS ファームウェアを使用する例です。
通常、システムファームウェア(UEFIまたはBIOS)では、ユーザーがブート順序を設定できます。ブート順序が「1番目にDVDドライブ、2番目にハードディスクドライブ」に設定されている場合、ファームウェアはDVDドライブからのブートを試行します。これが失敗した場合(例えば、ドライブにDVDが入っていない場合)、ローカルのハードディスクドライブからのブートを試行します。
例えば、ハードドライブにWindowsがインストールされている PC では、ユーザーは上記のようにブート順序を設定し、Linux Live CDを挿入することで、ハードドライブにオペレーティングシステムをインストールせずにLinuxを試すことができます。これはデュアルブートの例であり、コンピューターが電源投入時セルフテスト(POST) を実行した後に起動するオペレーティングシステムをユーザーが選択します。このデュアルブートの例では、ユーザーはコンピューターに DVD を挿入するか取り出すことで選択しますが、選択したデバイスのブートマネージャーメニューから選択するか、コンピューターのキーボードを使用して BIOS または UEFI ブートメニューから選択するか、またはその両方によって、起動するオペレーティングシステムを選択する方が一般的です。ブートメニューは通常、 POST 中にF8またはキーを押すことで入ります。BIOS セットアップは通常、POST 中にまたはキーを押すことで入ります。 [ 57 ] [ 58 ]F12F2DEL
インターネットアクセスなどの様々な単純なタスクを実行するために、ユーザーがLinuxの亜種にクイックブートできるようにするデバイスがいくつかある。例としてはSplashtopやLatitude ONなどがある。[ 59 ] [ 60 ] [ 61 ]
ブートシーケンス


IBM互換パーソナルコンピュータのx86 CPUは起動時に、リセットベクター( 16ビットx86プロセッサ[ 62 ]では物理メモリアドレスFFFF0h、32ビットおよび64ビットx86プロセッサ[ 63 ]ではFFFFFFF0h )にある命令をリアルモードで実行し、通常はROM内のファームウェア(UEFIまたはBIOS)エントリポイントを指します。このメモリ位置には通常、ファームウェア(UEFIまたはBIOS)スタートアッププログラムの位置に実行を移すジャンプ命令が含まれています。このプログラムはパワーオンセルフテスト(POST)を実行し、メインメモリ(DRAM)、PCIバス、PCIデバイス(組み込みオプションROMの実行を含む)などの必要なデバイスをチェックして初期化します。最も複雑なステップの1つは、 SPDを介してDRAMを設定することです。
必要なハードウェアを初期化した後、ファームウェア (UEFI または BIOS) は、起動可能なデバイスが見つかるまで、事前に構成された不揮発性ストレージ デバイスのリスト(「ブート デバイス シーケンス」) を調べます。
BIOS
BIOS が起動可能なデバイスを見つけると、ブートセクターをリニアアドレス7C00h (通常はセグメント:オフセット0000h : 7C00h、[ 51 ] [ 53 ] :29 です が、一部の BIOS は誤って07C0h : 0000hを使用します) にロードし、実行をブートコードに移します。ハードディスクの場合、これはマスターブートレコード(MBR) と呼ばれます。従来の MBR コードは、MBR のパーティションテーブルでブート可能として設定されているパーティション[ nb 6 ] (アクティブフラグが設定されているパーティション) を確認します。アクティブなパーティションが見つかった場合、MBR コードはボリュームブートレコード(VBR)と呼ばれるブートセクターコードをそのパーティションからロードして実行します。MBR ブートコードは多くの場合、オペレーティングシステム固有です。
ブート可能な MBR デバイスは、読み取り可能で、最初のセクターの最後の 2 バイトにリトルエンディアンワードAA55h [ nb 7 ]が含まれており、ディスク上ではバイト シーケンス55h、AAh ( MBR ブート署名とも呼ばれる) として見つかるか、またはセクター内のコードが x86 PC で実行可能であることが別途確立されているデバイスとして定義されます。
ブートセクタコードは、第一段階のブートローダです。これは固定ディスクとリムーバブルドライブ上にあり、マスターブートレコードの最初の446バイトに収まる必要があります。これは、 4つのパーティションエントリと2バイトのブートシグネチャを含むデフォルトの64バイトのパーティションテーブルのためのスペースを確保するためです。BIOSは、これらのスペースを適切なブートローダの動作に必要とします。また、環境によっては、5つ以上のパーティションエントリ(最大16個、各16バイト)、ディスクシグネチャ(6バイト)、ディスクタイムスタンプ(6バイト)、アドバンストアクティブパーティション(18バイト)、特殊なマルチブートローダなどの追加機能もサポートする必要がある場合、このスペースはさらに少なくなります。フロッピーおよびスーパーフロッピーのボリューム ブート レコードでは、 DOS 4.0 以降、FAT12およびFAT16ボリューム上の拡張 BIOS パラメータ ブロック(EBPB)に最大 59 バイトが占有されていますが、DOS 7.1 で導入されたFAT32 EBPB では 87 バイトも必要なため、セクター サイズを 512 バイトと想定すると、ブートローダーに残されるのは 423 バイトだけです。そのため、Microsoft のブート セクターでは伝統的にブート プロセスに一定の制限が課されていました。たとえば、ブート ファイルは、ファイル システムのルート ディレクトリの固定位置に配置され、連続するセクターとして保存される必要がありました。[ 65 ] [ 66 ]この条件はコマンドによって処理され、DOS のそれ以降のバージョンでは若干緩和されました。[ 66 ] [注 8 ]その後、ブートローダーはファイルの最初の 3 つのセクターをメモリにロードできましたが、そのセクターには、ファイルの残りをメモリにロードできる別の埋め込みブートローダーが含まれていました。[ 66 ]マイクロソフトがLBAとFAT32のサポートを追加した際、サイズ上の理由から、 2つの物理セクターにまたがり、386命令を使用するブートローダーに切り替えました。同時に、他のベンダーは、最小限の利用可能なメモリ(32KB)とプロセッササポート(8088/8086)という当初の制約を緩和することなく、単一のブートセクターにはるかに多くの機能を詰め込むことに成功しました。[注 9 ]例えば、DR-DOSのブートセクターは、FAT12、FAT16、FAT32ファイルシステム内のブートファイルを見つけ、ファイルが固定された場所や連続したセクターに保存されていない場合でも、 CHSまたはLBAを介してファイルをまとめてメモリにロードできます。[ 67 ] [ 51SYS] [ 68 ] [ 69 ] [ 70 ] [ 10 ] [ 9 ]
VBRは多くの場合OS固有のものですが、その主な機能は、第2段階のブートローダーであるオペレーティングシステムのブートローダーファイル( または などbootmgr)をntldrアクティブパーティションから読み込み、実行することです。その後、ブートローダーはストレージデバイスから OSカーネルを読み込みます。
アクティブパーティションが存在しない場合、またはアクティブパーティションのブートセクタが無効な場合、MBRはセカンダリブートローダをロードすることがあります。セカンダリブートローダはパーティション(多くの場合、ユーザー入力経由)を選択し、そのブートセクタをロードします。通常、このブートセクタは対応するオペレーティングシステムカーネルをロードします。場合によっては、MBRはアクティブパーティションのブートを試みる前にセカンダリブートローダのロードを試みることもあります。他の方法がすべて失敗した場合、 BIOSに制御を戻すためにINT 18h [ 53 ] [ 51 ] BIOS割り込み呼び出し(INT 18hが返された場合に備えてINT 19hが続く)を発行する必要があります。これにより、BIOSは他のデバイスからのブートを試みたり、ネットワーク経由のリモートブートを試みたりします。[ 51 ]
UEFI
多くの最新システム(Intel Macや最近のPC)はUEFIを使用しています。[ 71 ] [ 72 ]
BIOSとは異なり、UEFI( CSM経由のレガシーブートではない)はブートセクターに依存せず、UEFIシステムはブートローダー(USBディスクまたはEFIシステムパーティション内のEFIアプリケーションファイル)を直接ロードし、[ 73 ] OSカーネルはブートローダーによってロードされます。
SoC、組み込みシステム、マイクロコントローラ、FPGA
最近の CPU、SoC、マイクロコントローラ ( TI OMAPなど)、場合によってはデジタル信号プロセッサ(DSP)にも、シリコンに直接統合されたブート ROM が搭載されている場合があります。そのため、このようなプロセッサは、シンプルなブート シーケンスを独自に実行し、NAND フラッシュや eMMC などのブート ソースからブート プログラム (ファームウェアまたはソフトウェア) をロードできます。 このようなデバイスの処理に必要なロジックをすべてハードワイヤードすることは難しいため、このようなシナリオでは代わりに統合ブート ROM が使用されます。 また、ブート ROM は、UART、SPI、USBなどのシリアル インターフェイスを介してブート ローダまたは診断プログラムをロードできる場合があります。 この機能は、システム回復の目的でよく使用されますが、不揮発性メモリにまだソフトウェアがない場合に、初期の不揮発性メモリ プログラミングに使用することもできます。 最近のマイクロコントローラ ( USB フラッシュ ドライブのフラッシュ メモリ コントローラなど) の多くには、ファームウェア ROM がシリコンに直接統合されています。
一部の組み込みシステム設計では、中間のブートシーケンスステップも含まれる場合があります。例えば、Das U-Bootは2段階に分割される場合があります。プラットフォームはU-Bootの簡易版である小さなSPL(Secondary Program Loader)をロードし、SPLは初期のハードウェア構成( CPUキャッシュをRAMとして使用したDRAMの初期化など)を行い、より大きく機能豊富なU-Bootをロードします。[ 74 ]このような組み込みシステムでは、高度にカスタマイズされた垂直統合型のハードウェアとソフトウェアが使用される場合があり、ブートプログラムはよりシンプルです。[ 75 ]一部のCPUやSoCは、ブートプロセスでCPUキャッシュをRAMとして使用せず、統合ブートプロセッサを使用してハードウェア構成を行い、コストを削減します。[ 76 ]
JTAGなどのハードウェア デバッグ インターフェイスを使用してシステムを制御することもできます。このようなインターフェイスは、プロセッサ コアに不揮発性メモリをプログラムするために必要なアクションを実行するように指示することにより、ブートローダ プログラムを起動可能な不揮発性メモリ (フラッシュなど) に書き込むために使用できます。または、デバッグ インターフェイスを使用して、診断コードまたはブート コードを RAM にアップロードし、プロセッサ コアを起動して、アップロードされたコードを実行するように指示することもできます。これにより、たとえば、サポートされているブート デバイスにソフトウェアが残っておらず、プロセッサに統合ブート ROM がない組み込みシステムの回復が可能になります。JTAG は標準で普及しているインターフェイスであり、多くの CPU、マイクロコントローラ、およびその他のデバイスが JTAG インターフェイスを備えて製造されています (2009 年現在)。
一部のマイクロコントローラは、システムを任意に制御したり、コードを直接実行したりするために使用できない特別なハードウェアインターフェイスを提供しますが、代わりに単純なプロトコルを介してブート可能な不揮発性メモリ(フラッシュメモリなど)にブートコードを挿入できます。次に、製造段階で、このようなインターフェイスを使用してブートコード(および場合によっては他のコード)を不揮発性メモリに挿入します。システムリセット後、マイクロコントローラは、通常のプロセッサがブートにROMを使用するのと同じように、不揮発性メモリにプログラムされたコードの実行を開始します。特に注目すべきは、この手法がAtmel AVRマイクロコントローラで使用されていることですが、他にも同様の手法が使用されています。多くの場合、このようなインターフェイスはハードワイヤードロジックによって実装されます。それ以外の場合は、このようなインターフェイスは、 GPIOピン から統合されたオンチップブートROMで実行されるソフトウェアによって作成できます。
ほとんどの DSP には、ホスト ポート インターフェイス (HPI ブート) などのシリアル モード ブートとパラレル モード ブートがあります。
DSP の場合、システム設計に第 2 のマイクロプロセッサまたはマイクロコントローラが存在することが多く、これがシステム全体の動作、割り込み処理、外部イベントへの対応、ユーザーインターフェイスなどを担当し、DSP は信号処理タスクのみに専念します。このようなシステムでは、DSP は別のプロセッサによってブートされる可能性があり、このプロセッサはホストプロセッサ(ホストポートの名前の由来) と呼ばれることもあります。このようなプロセッサは、通常最初に独自のメモリからブートし、次に DSP のブートを含むシステム全体の動作を制御し、さらに DSP の動作を制御するため、マスターと呼ばれることもあります。DSP には独自のブートメモリがないことが多く、代わりに必要なコードを供給するホストプロセッサに依存しています。このような設計の最も注目すべきシステムは、携帯電話、モデム、オーディオおよびビデオ プレーヤーなどであり、DSP と CPU/マイクロコントローラが共存しています。
多くのFPGAチップは、電源投入時に外部構成 ROM (通常はシリアル EEPROM) から構成を読み込みます。
安全
ブートプロセスのセキュリティを強化するために、様々な対策が実装されています。これらの対策には、必須のものもあれば、エンドユーザーが無効化または有効化できるものもあります。従来、ブートには暗号化は使用されていませんでした。ブートローダーのロックを解除することでセキュリティを回避できますが、これはメーカーの承認を得ているかどうかに関わらず可能です。最新のブートローダーは並行処理を利用しており、複数のプロセッサコアとスレッドを同時に実行できるため、セキュアブートの複雑さが増しています。
マシュー・ギャレットは、ブートセキュリティは正当な目的を果たすが、そうすることでユーザーにとって敵対的なデフォルトを選択することになると主張した。[ 77 ]
対策
- UEFIセキュアブート[ 78 ]
- Android 検証済みブート
- サムスン ノックス
- Trusted Platform Module を使用した測定ブート (「信頼できるブート」とも呼ばれます)。
- インテル ブートガード
- ディスク暗号化
- ファームウェアパスワード
ブートループ

同時実行型および分散型のシステムをデバッグする場合、ブートループ(ブート ループまたはブート ループとも表記) は、コンピューティング デバイスで発生するエラー状態の診断条件です。これらのデバイスがブート プロセスの完了に繰り返し失敗し、ブート シーケンスが完了する前に再起動すると、再起動によってユーザーが通常のインターフェイスにアクセスできなくなる可能性があります。
今日の製品の複雑性が増すにつれ、単一のプロジェクト、単一の部門、あるいは単一の企業でさえも、完全な製品を開発することができなくなり、同時並行開発と分散開発が求められています。今日、そして世界中で、産業界は複雑な製品開発と、それに伴うプロジェクト組織、プロジェクト管理、製品品質など、多岐にわたる問題に直面しています。多くのプロセスも分散化していくでしょう。製品品質を測定し、最終的に達成するために非常に重要な欠陥検出プロセスは、プロジェクトの分散性に起因する問題を最初に経験するプロセスの一つです。欠陥検出活動を複数の関係者に分散させると、作業成果物の不適切なレビュー、テストカバレッジに関する「盲点」の発生、コンポーネントの過剰テストなどのリスクが生じます。したがって、欠陥検出活動の有効性と効率性を確保するためには、ライフサイクル全体にわたる欠陥検出の調整が必要です。—JJM Trienekens; RJ Kusters (2004) [ 79 ]
エラー状態の検出
システムは、回復が示される前に、例えば明示的なブートループやブルースクリーンなどのエラー状態を示す可能性があります。 [ 80 ]エラー状態の検出には、分散システムのリアルタイム操作のために、 分散イベントストアとストリーム処理プラットフォームが必要になる場合があります。
エラー状態からの回復
誤った状態はブートループを引き起こす可能性があります。この状態は、以前は正常に動作していた操作から誤った設定が行われたために発生する可能性があります。この誤った状態からの回復を試みると、正常な状態に戻ろうと再起動が行われます。例えば、Windows OSの操作では、回復手順として3回の再起動が必要であり、使用可能なメニューに戻るには再起動が必要でした。[ 81 ] [ 82 ] [ 80 ]
回復政策
復旧はセキュリティアサーションマークアップ言語(SAML)を介して指定される可能性があり、一部のアプリケーションではシングルサインオン(SSO)も実装できます。ゼロトラストセキュリティモデルでは、SSOセッションにおいて識別、認可、認証は分離可能です。サイトの復旧が指示された場合(例えば、空港ターミナルの画面にブルースクリーンが表示されるなど)、状況を改善するために担当者による現場訪問が必要になる場合があります。 [ a ]状況を改善するために担当者が現場を訪問する必要がある場合があります。[ 79 ]
例
- ウィンドウズNT4.0 [ 83 ]
- ウィンドウズ2000 [ 84 ]
- Windowsサーバー[ 85 ]
- ウィンドウズ10 [ 86 ]
- Nexus 5X [ 87 ]
- Android 10:特定の画像を壁紙に設定すると、sRGBからRGBへの変換中に丸め誤差が発生し、輝度値が最大値の255を超えてしまう問題が発生しました。これにより、起動のたびにSystemUIコンポーネントがクラッシュしました。[ 88 ] [ 89 ]
- Google Nestハブ[ 90 ]
- LGスマートフォンのブートループ問題
- 2024年7月19日、 CrowdStrikeのFalconソフトウェアのアップデートにより、 2024 CrowdStrikeインシデントが発生し、世界中のMicrosoft Windowsシステムがブートループまたは回復モードで停止しました。[ a ]
参照
注記
- ^例: IBM Z経由のSystem/360、 IBM Power Systems経由のRS/6000およびSystem/38
- ^デーモンも含む。
- ^ UU は多くの場合 Uu、U = 制御装置アドレス、u = デバイス アドレスの形式でしたが、一部の制御装置は 8 つのデバイスしか接続せず、一部は 16 を超えるデバイスを接続しました。実際、3830 DASD コントローラーはオプションとして 32 ドライブ アドレス指定を提供していました。
- ^ 3210 または 3215 コンソールタイプライターを使用した 370/145 と 370/155 を除く。
- ^ S/360 のみが 2250 を使用し、 360/ 85、370 /165、370 /168は他のものと互換性のないキーボード/ディスプレイ デバイスを使用していました。
- ^アクティブパーティションには、OS ではなく、第 2 段階のブートローダー(例: OS/2 ブート マネージャ)が含まれている場合があります
- ^ブートセクターのオフセット におけるシグネチャ、つまりオフセット に、オフセット にあります。IBM PC互換機のコンテキストではリトルエンディアン表現を前提とする必要があるため、 x86プロセッサ用のプログラムではこれを16ビットワードとして記述できます(順序が逆になっていることに注意してください)。一方、ビッグエンディアン表現を使用する他のCPUアーキテクチャ用のプログラムでは、これを と記述する必要があります。このことは書籍やMicrosoftのオリジナルのリファレンスドキュメントでも何度も混同されているため、この記事では誤解を避けるため、オフセットベースのバイト単位のディスク上表現を使用しています。
+1FEh55h AAh55h+1FEhAAh+1FFhAA55h55AAh - ^ PC DOS 5.0のマニュアルには、システムファイルが連続している必要がなくなったと誤って記載されています。しかし、ブートプロセスが機能するには、システムファイルが最初の2つのディレクトリエントリを占め、 IBMBIO.COMの最初の3つのセクターが連続して保存されている必要があります。SYSは引き続きこれらの要件を満たします。
- ^ a bたとえば、 DR-DOS MBRとブート セクターの拡張機能は、 7.05までのアセンブリ言語での従来のコード最適化手法を使用して実現できましたが、 LBA、FAT32およびLOADERサポートの追加については、7.07セクターは、自己変更コード、マシン語でのオペコードレベルのプログラミング、 (文書化された)副作用の制御された利用、マルチレベルのデータ/コードオーバーラップ、およびアルゴリズムによる折りたたみ手法を使用してすべてを 1 つの物理セクターに詰め込む必要がありました。これは、マルチブートおよびチェーン ロード シナリオでの他のオペレーティング システムとの下位互換性と相互互換性の要件だったためです。
- ^ DR-DOS VBR がIBMBIO.COMファイル全体をメモリにロードするという規則には例外が 1 つあります。IBMBIO.COM ファイルのサイズが 29 KB より大きい場合、ファイル全体をメモリにロードしようとすると、ブートローダがスタックを上書きし、ディスクパラメータテーブル(DPT/FDPB)が再配置されます。 [A]そのため、 DR-DOS 7.07 VBR はファイルの最初の 29 KB のみをメモリにロードし、IBMBIO.COM の最初の部分に埋め込まれた別のローダがこのような状態をチェックし、必要に応じてファイルの残りの部分をメモリにロードします。これにより互換性の問題は発生しません。このローダのない以前のバージョンでは、IBMBIO.COM のサイズがこの制限を超えることはなかったためです。 [A]デュアルエントリ構造と組み合わせると、ファイルの最初の 3 つのセクターのみをメモリにロードするPC DOS VBRでシステムをロードすることもできます。
参考文献
- ^ "bootstrap" . Computer Dictionary of Information Technology . 2019年8月5日時点のオリジナルよりアーカイブ。2019年8月5日閲覧。
- ^ 「Bootstrap」 . The Free Dictionary . 2006年8月27日時点のオリジナルよりアーカイブ。 2008年8月27日閲覧。
- ^ 「Pull oneself up by bootstraps」。The Free Dictionaryのイディオム。2018年10月5日時点のオリジナルよりアーカイブ。2019年10月7日閲覧。
- ^ 「Bootstrapの定義」 .技術用語. 2020年5月10日時点のオリジナルよりアーカイブ。2019年10月2日閲覧。
- ^ 「Pull yourself up by your bootstraps」 . The Phrase Finder . 2012年4月17日時点のオリジナルよりアーカイブ。 2010年7月15日閲覧。
- ^ Campbell-Kelly, Martin (1980). 「EDSACのプログラミング」. IEEE Annals of the History of Computing . 2 (1): 7– 36. doi : 10.1109/mahc.1980.10009 .
- ^ Wilkes, Maurice V. ; Wheeler, David J. ; Gill, Stanley (1951). The Preparation of Programs for an Electronic Digital Computer . Addison-Wesley . 2023年2月20日時点のオリジナルよりアーカイブ。 2020年9月25日閲覧。
- ^ Buchholz, Werner (1953). 「IBMタイプ701コンピュータのシステム設計」(PDF) . Proceedings of the IRE . 41 (10): 1273. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) .
- ^ a b「IBM 7619 Exchange」。7030データ処理システム リファレンス・マニュアル(PDF)。IBM。1961年8月。125 ~ 127ページ。A22-6530-2。2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^タイプ701および関連機器の動作原理(PDF) . IBM. 1953. p. 26. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) . 2012年11月9日閲覧。
- ^ジェレミー・M・ノーマン (2005). 『グーテンベルクからインターネットへ』ノーマン. p. 436. ISBN 0-930405-87-0。
- ^ 704電子データ処理マシン操作マニュアル(PDF) . IBM . pp. 14– 15. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ IBM 7090データ処理システムのオペレーター・ガイド(PDF) . IBM . p. 34. 2022年10月9日時点のオリジナルからアーカイブ(PDF) 。
- ^ IBM 7094 Principles of Operation (PDF) . IBM . p. 146. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^オックスフォード英語辞典.オックスフォード大学. 1939年.
- ^ 650磁気ドラム型データ処理装置の取扱説明書(PDF) 。IBM。1955年。49、53 ~ 54ページ。2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ IBM 7040-7044システムのオペレーターガイド(PDF) . IBM . p. 10. A22-6741-1. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ CONTROL DATA 6600 コンピュータシステムリファレンスマニュアル(PDF) (第2版). Control Data Corporation . 1963年8月. p. 53. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ GE-645 システムマニュアル(PDF) . General Electric . 1968年1月. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) . 2019年10月30日閲覧。
- ^ PDP-10 システムリファレンスマニュアル、パート1 (PDF) . Digital Equipment Corporation . 1969年. pp. 2– 72. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) . 2012年11月9日閲覧。
- ^ a b Burroughs B 1700 システムリファレンスマニュアル(PDF) . Burroughs Corporation . 1973年11月. p. 1-14. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ a b z/Architecture Principles of Operation (PDF) . IBM . 2005年9月. 第17章. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) . 2007年4月14日閲覧。
- ^ BM792 リードオンリーメモリとMR11~DB ブートストラップローダー(PDF) . Digital Equipment Corporation . 1974年1月. DEC-II-HBMAA-ED. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) .
- ^ PDP-11周辺機器ハンドブック(PDF) . Digital Equipment Corporation . 1976. p. 4-25. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ Programmed Data Processor-7 Users Handbook (PDF) . Digital Equipment Corporation . 1965. p. 143. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ PDP-9 ユーザーハンドブック(PDF) . Digital Equipment Corporation . 1968年1月. p. 10-3. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ PDP-15 システムリファレンスマニュアル(PDF) . Digital Equipment Corporation . 1969年8月. p. 10-3. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ a b「Novaコンピューターの使い方」(PDF) . Data General . 1971年4月. p. 2-30. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) .
- ^ “Oldcomputers: Altair 8800b” . 2020年1月3日時点のオリジナルよりアーカイブ。2019年12月10日閲覧。
- ^ Holmer, Glenn. Altair 8800 が紙テープから4K BASICをロード. 2019年7月30日時点のオリジナルよりアーカイブ。2016年5月2日閲覧。
- ^ BM873 再起動/ローダー(PDF) . Digital Equipment Corporation . 1974年4月. DEC-11-H873A-BD. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ M9301 ブートストラップ/ターミネータモジュール メンテナンスおよび操作マニュアル(PDF) . Digital Equipment Corporation . 1977年6月. EK-M9301-TM-OO1. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ M9312 ブートストラップ/ターミネータモジュール技術マニュアル(PDF) . Digital Equipment Corporation . 1981年3月. EK-M9312-TM-OO3. 2022年10月9日時点のオリジナルよりアーカイブ(PDF)されています。
- ^マイクロコンピュータインタフェースハンドブック(PDF) . Digital Equipment Corporation . 1981. p. 17. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^「10 MRV11-C 読み取り専用メモリモジュール」。マイクロコンピュータ製品ハンドブック(PDF)。Digital Equipment Corporation。1985年。2022年10月24日時点のオリジナルよりアーカイブ(PDF) 。 2022年6月12日閲覧。
- ^「11 MRVll·D ユニバーサルプログラマブルリードオンリーメモリ」マイクロコンピュータ製品ハンドブック(PDF) Digital Equipment Corporation 1985年。2022年10月24日時点のオリジナルよりアーカイブ(PDF) 。 2022年6月12日閲覧。
- ^ PDP-11/34 システム ユーザーズマニュアル(PDF) . Digital Equipment Corporation . 1977年7月. pp. 1– 5, 2-1 – 2-12 . EK-11034-UG-001. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ PDP-11/60 インストールおよび操作マニュアル(PDF) . Digital Equipment Corporation . 1979年2月. pp. 1– 10, 2-29 – 2-34 , 3-1 – 3-6 . EK-11060-OP-003. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) .
- ^ PDP-11/24 システム技術マニュアル(PDF) . Digital Equipment Corporation . 1981年6月. p. 1-6. EK-11024-TM-001. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ Ciaramella, Alberto .電子プロセッサの中央メモリを自動的にロードする装置米国特許第4,117,974号 1978年10月3日 (1975年提出)
- ^ Alberto Ciaramella racconta il brevetto del boostrap deicomputer concepito in CSELT [ Alberto Ciaramella、CSELT で考案されたブートストラップ コンピュータの特許について議論する] (イタリア語)。2021年11月13日のオリジナルからアーカイブ。
- ^ PDP-11/44 システム技術マニュアル(PDF) . Digital Equipment Corporation . 1979年2月. p. 6-57. EK-KD11Z-TM-001. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ VAX-11/780 ハードウェアユーザーズガイド(PDF) . Digital Equipment Corporation . 1979年2月. 2.3 ブートストラッピングおよび3.6.1 ブートコマンド (B). EK-11780-UG-001. 2022年10月9日時点のオリジナルよりアーカイブ(PDF)されています。
- ^ VAX-11/730 中央処理装置技術仕様書(PDF) . Digital Equipment Corporation . 1982年5月. p. 1-9. EK-KA730-TD-001. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ VAX-11/750 ソフトウェアインストールガイド(PDF) . Digital Equipment Corporation . 1982年12月. pp. 1-2 – 1-4 , B-1 – B-8 , C-1 – C-2 . AA-K410C-TE. 2022年10月9日時点のオリジナルよりアーカイブ(PDF)されています。
- ^オズボーン、アダム、ケイン、ジェリー (1981).オズボーン 16ビットマイクロプロセッサハンドブック(PDF) . OSBORNE/McGraw-Hill. pp. 5– 27. ISBN 0-931988-43-8. 2022年10月9日にオリジナルからアーカイブ(PDF)されました。 2019年8月23日閲覧。
- ^ Intel 64 および IA-32 アーキテクチャー ソフトウェア開発マニュアル 第3巻 (3A、3B、3C、3D): システムプログラミングガイド(PDF)。2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^オズボーン、アダム、ケイン、ジェリー (1981).オズボーン 4&8ビットマイクロプロセッサハンドブック. オズボーン/マグロウヒル. pp. 10– 20. ISBN 0-931988-42-X。
- ^ Appleの広告、Interface Age、1976年10月
- ^ 「RISC-Vブートフロー入門」(PDF) . 2024年9月4日閲覧。
- ^ a b c d ePaul, Matthias R. (1997-10-02) [1997-09-29]. 「Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT および BOOT.TXT - OpenDOS の起動方法に関する簡単な説明」 2003-10-04 にオリジナルからアーカイブ。2009-03-29に閲覧。[1]
- ^坂本 正彦 (2010-05-13). 「なぜBIOSはx86でMBRを7C00hにロードするのか?」 Glamenv-Septzen.net . 2017年8月24日時点のオリジナルよりアーカイブ。 2012年8月22日閲覧。
- ^ a b c Compaq Computer Corporation; Phoenix Technologies Ltd; Intel Corporation (1996年1月11日). 「BIOS Boot Specification 1.01」(PDF) . 2022年10月9日時点のオリジナルよりアーカイブ(PDF) . 2017年12月21日閲覧。
- ^ Red Hat Bootloader Team. 「UEFI shim loader」 . GitHub . 2023年10月28日閲覧。
- ^ 「第6章 起動とディスクの問題のトラブルシューティング」。Windows NT Serverリソースキット。Microsoft。 2007年5月15日時点のオリジナルよりアーカイブ。
- ^ "Tint" . coreboot. 2010年12月28日時点のオリジナルよりアーカイブ。 2010年11月20日閲覧。
- ^ 「PCブランドとそれに対応するホットキーの一覧」 www.disk-image.com . 2020年11月11日時点のオリジナルよりアーカイブ。2020年9月26日閲覧。
- ^ 「あらゆるPCでBIOSに入る方法:メーカー別アクセスキー | Tom's Hardware」www.tomshardware.com。2023年2月20日時点のオリジナルよりアーカイブ。2020年9月26日閲覧。
- ^ Brown, Eric (2008年10月2日). 「MontaVista LinuxがDellのクイックブート機能を促進」 . The LinuxDevices Archive . linuxdevices.com . 2010年11月20日閲覧。
- ^ Larabel, Michael (2008年6月14日). 「SplashTop LinuxはHP、Dellのノートパソコンで使えるのか?」 Phoronix . 2016年10月5日時点のオリジナルよりアーカイブ。 2010年11月20日閲覧。
- ^ 「Voodoo EnvyのInstant-On iOS(Splashtop搭載)」 YouTube。2008年7月16日。2021年11月13日時点のオリジナルよりアーカイブ。 2010年11月20日閲覧。
- ^ "iAPX 286 プログラマーズ・リファレンス・マニュアル" (PDF) . Intel . 1983. セクション 5.3 システム初期化、p. 5-7. 2022年10月9日にオリジナルからアーカイブ(PDF)されました。 2019年8月23日閲覧。CS
レジスタにF000(物理アドレスF0000から始まるコードセグメントを指定)が格納され、命令ポインタにFFF0が格納されているため、プロセッサは物理アドレスFFFF0Hにある最初の命令を実行します。
- ^ "80386プログラマーズ・リファレンス・マニュアル" (PDF) . Intel. 1986. セクション10.2.3「最初の命令」、p. 10-3. 2022年10月9日にオリジナルからアーカイブ(PDF)されました。 2013年11月3日閲覧。RESET
後、アドレスラインA31~20は命令フェッチのために自動的にアサートされます。この事実とCS:IPの初期値により、命令の実行は物理アドレスFFFFFFF0Hから開始されます。
- ^ 「Intel 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル」(PDF)。Intel Corporation。2012年5月。セクション 9.1.4「最初に実行される命令」、p. 2611。2022年10月9日にオリジナルからアーカイブ(PDF) 。 2012年8月23日閲覧。
ハードウェアリセット後にフェッチされ実行される最初の命令は、物理アドレス FFFFFFF0h に配置されます。このアドレスは、プロセッサの最上位物理アドレスから16バイト下にあります。ソフトウェア初期化コードを含む EPROM はこのアドレスに配置される必要があります。
- ^ Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; Borman, Reuben; Borman, Rob; Butler, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Farmer, Rick; Gates, Bill ; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W.; Kermaani, Kaamel; King, Adrian; Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc ; McKinney, Bruce; Martin, Pascal; Mathers, Estelle; Matthews, Bob; Melin, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani;ノリス、デイビッド; オリアリー、マイク;オリア、ボブ; オルソン、マイク; オスターマン、ラリー; オストリング、リッジ; パイ、スニル;パターソン、ティム; ペレス、ゲイリー; ピーターズ、クリス;ペッツォルド、チャールズ; ポロック、ジョン;レイノルズ、アーロン; ルービン、ダリル; ライアン、ラルフ; シュルマイスターズ、カール; シャー、ラジェン; ショー、バリー; ショート、アンソニー; スリヴカ、ベン; スミール、ジョン; スティルメーカー、ベティ; ストッダード、ジョン; ティルマン、デニス; ウィッテン、グレッグ; ヨーント、ナタリー; ゼック、スティーブ (1988). 「技術アドバイザー」. MS-DOS 百科事典: バージョン 1.0 から 3.2 . ダンカン、レイ; ボストウィック、スティーブ; バーゴイン、キース; バイアーズ、ロバート A.; 著ホーガン, トム; カイル, ジム;レトウィン, ゴードン;ペッツォルト, チャールズ; ラビノウィッツ, チップ; トムリン, ジム; ウィルトン, リチャード; ウォルバートン, ヴァン; ウォン, ウィリアム; ウッドコック, ジョアン(完全改訂版). ワシントン州レドモンド, 米国:マイクロソフト・プレス. ISBN 1-55615-049-0. LCCN 87-21452 . OCLC 16581341 .(xix+1570 ページ、26 cm) (注: この版は、1986 年に撤回された初版を別の著者チームによって大幅に改訂した後、1988 年に出版されました: 「MS-DOS 百科事典 (1988)」。PCjs マシン。2018年 10 月 14 日にオリジナルからアーカイブ。)
- ^ a b c Chappell, Geoff (1994年1月). 「第2章 システムフットプリント」. Schulman, Andrew; Pedersen, Amorette (編). DOS Internals . The Andrew Schulman Programming Series (第1刷, 第1版). Addison Wesley Publishing Company . ISBN 978-0-201-60835-9。(xxvi+738+ivページ、3.5インチフロッピーディスク[2] [3])正誤表: [4] [5] [6]
- ^ Rosch, Winn L. (1991-02-12). 「DR DOS 5.0 - より優れたオペレーティングシステムか?」 . PC Magazine . 第10巻第3号. p. 241–246, 257, 264, 266. 2019年7月25日時点のオリジナルからのアーカイブ。 2019年7月26日閲覧。
[…]
DR DOS 5.0では
SYSが
改良された
ため、起動可能にしたいディスクの最初のクラスタを空けておく必要はありません。DR DOSのシステムファイルはディスク上の任意の場所に配置できるため、十分な空き容量があればどのディスクでもシステムの起動先として設定できます。[…]
(注: ソースではこれを SYS ユーティリティによるものとしていますが、実際にはこれはブート セクター内の高度なブートストラップ ローダーの機能です。SYS は単にこのセクターをディスクに植え付けるだけです。)
- ^ Paul, Matthias R. (2001-01-17). 「DR-DOSにおけるFAT32」 . opendos@delorie . 2017年10月6日時点のオリジナルからのアーカイブ。 2017年10月6日閲覧。
[…]
DR-DOSブートセクターは[…]
IBMBIO.COM
(
DRBIOS.SYS
)ファイルを検索し
、そのファイル全体をメモリにロードしてから、制御を渡します。[…]
- ^ Paul, Matthias R. (2002-02-20). 「コピーできません」 . opendos@delorie .オリジナルから2017年10月6日にアーカイブ。 2017年10月6日閲覧。
[…]
DR-DOS
ブートセクターは、
IBMBIO.COMファイルを実行する前に、それをメモリに読み込みます。IBMBIO.COMによって読み込まれる
IBMDOS.COM
ファイルについては全く考慮しません
。[…] DR-DOSブートセクターは[…]カーネルファイルが論理的にルートディレクトリに格納されている限り、[…]カーネルファイルを見つけます。ディスク上の物理的な位置や、断片化されているかどうかは、DR-DOSブートセクターにとって重要ではありません。したがって、カーネルファイルをディスクにコピーするだけで(単に
COPY する
だけでも)、ブートセクターがDR-DOSセクターであれば、カーネルファイルを見つけて読み込みます。もちろん、これらすべてを512バイト(1セクター分)に収めるのは難しいですが、DR-DOSシステムをセットアップする必要がある場合、これは大きな利便性向上となり、DR-DOSマルチOS
LOADER
ユーティリティが動作するための鍵でもあります。MS
-DOS
カーネルファイルは特定の場所に存在する必要がありますが、DR-DOSファイルはどこにでも配置できるため、他のOSを起動するたびに物理的にファイルを交換する必要はありません。また、DR-DOSシステムをアップグレードする場合は、カーネルファイルを古いファイルにコピーするだけで済みます。SYSは不要で
、 MS-DOS/
PC DOS
のような複雑なセットアップ手順も必要ありません。同じドライブに複数のDR-DOSカーネルファイルを異なるファイル名で保存することもでき、LOADERは
BOOT.LST
ファイルにリストされているファイル名に従ってそれらを切り替えます
。[…]
- ^ Paul, Matthias R. (2017-08-14) [2017-08-07]. 「OmniBook 300 における拡張モードの Windows 3.1 の継続的な物語」 . MoHPC - HP 電卓博物館. 2017-10-06にオリジナルからアーカイブ。2017-10-06 に取得。 [
…]
DR-DOS
FDISK
はディスクのパーティション分割だけでなく、新規に作成されたボリュームのフォーマットとブートセクターの初期化を一度に実行できるため、誤ってボリュームを壊してしまうリスクがなく、
FORMAT
/S や
SYS
を使用する必要もありません。その後は、システムファイルを含む残りの DR-DOS ファイルをコピーするだけで済みます。
MS-DOS
/
PC DOS
とは異なり
、DR-DOS には「スマート」なブートセクターが搭載されており、システムファイルが特定の場所に配置されていることを期待するのではなく、ファイルシステムを実際に「マウント」してルートディレクトリ内のシステムファイルを検索・読み込みます。物理的には、システムファイルはどこにでも配置でき、断片化される可能性もあります。[…]
- ^ 「Intel Platform Innovation Framework for EFI」 . Intel. 2011年8月21日時点のオリジナルよりアーカイブ。2008年1月7日閲覧。
- ^ "OpenBIOS - coreboot" . coreboot.org. 2013年3月18日時点のオリジナルよりアーカイブ。2013年3月20日閲覧。
- ^ 「UEFI - OSDev Wiki」 . wiki.osdev.org . 2020年11月12日時点のオリジナルよりアーカイブ。2020年9月26日閲覧。
- ^ 「概要 – ブートローダの4つのステージ」 . ti.com . Texas Instruments . 2013年12月5日. 2014年12月23日時点のオリジナルよりアーカイブ。 2015年1月25日閲覧。
- ^ Nnamdi Ajah. 「ARM組み込みシステム向けBITE-SIZED BOOTING」 . Gist . 2025年9月3日閲覧。
- ^ 「ブートプロセスrxos 1.0rc1ドキュメント」 。 2015年10月25日閲覧。
- ^ "mjg59 | Boot GuardとPSBにはユーザーにとって悪意のあるデフォルトがある" mjg59.dreamwidth.org . 2022年11月30日閲覧。
- ^ 「Microsoft、Windowsセキュアブートのバイパスを可能にするUEFIブートローダーをブロック」 BleepingComputer . 2022年12月11日閲覧。
- ^ a b J.JM Trienekens; RJ Kusters (2003年9月19~21日).ワークショップ: 分散ソフトウェア開発における欠陥検出. 第11回ソフトウェア技術とエンジニアリング実践に関する国際ワークショップ. doi : 10.1109/STEP.2003.40 .
- ^ a b Tim Warren (2024年7月23日). 「数百万台のWindowsマシンをダウンさせた78分間の出来事」 The Verge .
- ^ Joe Tidy (2024年7月20日). 「CrowdStrikeのIT障害により850万台のWindowsデバイスが影響を受けたとMicrosoftが発表」 BBCニュース.
- ^ a b Piet Kerkhofs (2024年7月19日). 「CrowdStrike FalconとMicrosoftのブルースクリーン問題に関する最新情報」 Eye Security . 2024年7月19日閲覧。
- ^ジョン・D・ルーリー、デビッド・メスビン、トム・ヘンダーソン、マーティン・ヘラー (1997). 『Windows NT 4.0 のネットワーク:ワークステーションとサーバー』 Wiley. p. 257. ISBN 978-0-471-17502-5– Google ブックス経由。
- ^ Shultz, Gregory (2001年2月). 「自動再起動を無効にすると、再起動ループが発生する可能性がなくなる」 . Windows Professional . 6 (2). Element K Journals: 9. ProQuest 191083238 .
- ^ 「Windows Serverの新しいアップデートによりDCブートループが発生し、Hyper-Vが動作しなくなる」 BleepingComputer . 2022年5月17日閲覧。
- ^ Paul Wagenseil (2021年1月21日). 「Windows 10のアップデートでPCが無限ブートサイクルに陥る:対処法」 . Tom's Guide . 2022年5月20日閲覧。
- ^ Hollister, Sean (2021年10月19日). 「Googleは最高のスマートフォンを作ること以外、あらゆることを試してきた」 . The Verge . 2022年5月17日閲覧。
- ^ "「『呪われた』Android壁紙の作者は『意図的ではなかった』と語る」。The Week 。 2022年5月19日閲覧。
- ^ Hager, Ryne (2020年6月1日). 「Googleは呪われたブートループ壁紙の謎を解明したと考えている」 . Android Police . 2022年5月19日閲覧。
- ^ Peckham, James (2022年3月29日). 「Google Nest Hubの新しいUIは斬新すぎて、スマートディスプレイがブートループする可能性がある」 . Android Police . 2022年5月19日閲覧。
- ^ 「Windowsホスト向けFalconコンテンツアップデートに関する声明」crowdstrike.com。2024年7月19日閲覧。
- ^ Baran, Guru (2024年7月19日). 「CrowdStrikeのアップデートによりWindowsマシンがBSODループに陥る」 .サイバーセキュリティニュース. 2024年7月19日閲覧。
- ^ 「セキュリティアップデートの失敗により、世界中でWindowsが機能停止、BSODとクラッシュが発生」 Neowin 2024年7月19日 2024年7月19日閲覧。