起動

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピュータの起動のフローチャート

コンピューティングでは、起動はコンピュータを起動するプロセスですボタンを押すなどのハードウェア、またはソフトウェアコマンドによって開始できます。電源を入れた後、コンピュータの中央処理装置(CPU)のメインメモリにはソフトウェアがないため、一部のプロセスでは、実行する前にソフトウェアをメモリにロードする必要があります。これは、CPUのハードウェアまたはファームウェア、あるいはコンピュータシステムの別のプロセッサによって実行できます。

コンピュータの再起動は再起動とも呼ばれ、CPUへの電力がオフからオンに切り替えられた後など、「ハード」または電源が切断されない「ソフト」になる可能性があります。一部のシステムでは、ソフトブートはオプションでRAMをゼロにクリアする場合があります。ハードブートとソフトブートはどちらも、ボタンを押すなどのハードウェアまたはソフトウェアコマンドによって開始できます。起動は、オペレーティングランタイムシステム(通常はオペレーティングシステムと一部のアプリケーション)[nb1]に到達したときに完了します。

コンピューターをスリープ状態(一時停止)から戻すプロセスには、起動は含まれません。ただし、休止状態から復元することはできます。最低限、一部の組み込みシステムは、機能を開始するために目立ったブートシーケンスを必要とせず、オンにすると、ROMに格納されている操作プログラムを実行するだけで済みます。すべてのコンピューティングシステムはステートマシンであり、意図しないロックされた状態から指定されたゼロ状態に戻るには、再起動が唯一の方法である可能性があります。

ブートプロセスは、オペレーティングシステムまたはスタンドアロンユーティリティのロードに加えて、オペレーティングシステムの問題を診断するためのストレージダンププログラムをロードすることもできます。

Bootは、 bootstrap [1] [2]またはbootstraploadの略であり、自分のブートストラップによって自分自身を引き上げるというフレーズから派生しています。[3] [4]使用法は、ほとんどのソフトウェアがすでにコンピューター上で実行されている他のソフトウェアによってコンピューターにロードされる場合、初期ソフトウェアをコンピューターにロードするための何らかのメカニズムが存在しなければならないという要件に注意を促します。[5]初期のコンピュータは、この問題を解決するために、さまざまなアドホックな方法を使用して小さなプログラムをメモリに取り込みました。読み取り専用メモリの発明さまざまなタイプの(ROM)は、消去できないスタートアッププログラムをコンピュータに同梱できるようにすることで、このパラドックスを解決しました。ROMの容量の増加により、これまで以上に複雑な起動手順を実装できるようになりました。

歴史

ENIACのプログラミングに使用されるスイッチとケーブル(1946)

短い初期プログラムをコンピュータにロードするために利用できる多くの異なる方法があります。これらの方法は、単純な物理的入力から、より複雑なプログラムを保持できるリムーバブルメディアにまで及びます。

集積回路前のROMの例

初期のコンピュータ

1940年代と1950年代の初期のコンピューターは、プログラムに数週間かかる可能性のある独自のエンジニアリング作業であり、プログラムの読み込みは解決しなければならない多くの問題の1つでした。初期のコンピュータであるENIACにはプログラムがメモリに保存されていませんでしたが、相互接続ケーブルの構成によって問題ごとにセットアップされていました。ブートストラップはENIACには適用されませんでした。ENIACのハードウェア構成は、電源が投入されるとすぐに問題を解決する準備ができていました。

構築される2番目のストアドプログラムコンピュータであるEDSACシステムは、スタートボタンが押されたときに、ステッピングスイッチを使用して固定プログラムをメモリに転送しました。このデバイスに保存されているプログラムは、David Wheelerが1948年後半に完了し、紙テープからさらに命令をロードして実行しました。[6] [7]

最初の商用コンピュータ

UNIVACIIBM701 [8]など、商用販売された最初のプログラム可能なコンピューターには、操作を簡単にする機能が含まれていました。それらには通常、完全な入力または出力操作を実行する命令が含まれていました。同じハードウェアロジックを使用して、パンチカード(最も一般的なもの)または他の入力メディア(磁気ドラム磁気テープなど、ブートストラッププログラムを含む)の内容を1つのボタンを押すだけでロードできます。この起動の概念は、1950年代および1960年代初頭のIBMコンピューターではさまざまな名前で呼ばれていましたが、IBMはIBM 7030Stretchで「初期プログラムロード」という用語を使用していました[9]。その後、1964年 のSystem / 360から、メインフレームラインに使用されました。

IBM 1130(1965)用の初期プログラムロードパンチカード

IBM 701コンピューター(1952〜1956)には、カードリーダーのパンチカード、テープドライブの磁気テープ、または磁気ドラムユニットからメインメモリへの最初の36ビット ワードの読み取りを開始する「ロード」ボタンがありました、ロードセレクタスイッチの位置によって異なります。次に、左側の18ビットハーフワードが命令として実行され、通常は追加のワードがメモリに読み込まれます。[10] [11]次に、ロードされたブートプログラムが実行され、人間のオペレーターの助けを借りずに、そのメディアからメモリに大きなプログラムがロードされました。「ブート」という用語は、少なくとも1958年以来この意味で使用されています。[12]

1970年代のIBMSystem / 3コンソール。プログラムロードセレクタスイッチは左下にあります。プログラムロードスイッチは右下にあります。

その時代の他のIBMコンピューターにも同様の機能がありました。たとえば、IBM 1401システム(1958年頃)は、カードリーダーを使用してパンチカードからプログラムをロードしました。パンチカードに格納された80文字は、メモリ位置001〜080に読み込まれ、コンピュータはメモリ位置001に分岐して、最初に格納された命令を読み取ります。この命令は常に同じでした。これらの最初の80個のメモリ位置の情報を、パンチカード2、3、4などの情報を組み合わせてストアドプログラムを形成できるアセンブリ領域に移動します。この情報がアセンブリ領域に移動されると、マシンはロケーション080の命令に分岐し(カードを読み取ります)、次のカードが読み取られ、その情報が処理されます。

もう1つの例は、IBM 650(1953)で、10進マシンで、操作パネルに10個の10位置スイッチのグループがあり、メモリー・ワード(アドレス8000)としてアドレス指定でき、命令として実行できました。したがって、スイッチを7004000400に設定し、適切なボタンを押すと、カードリーダーの最初のカードがメモリ(オペコード70)に読み込まれ、アドレス400から始まり、400にジャンプしてそのカードでプログラムの実行を開始します。[13]

IBMの競合他社も、シングルボタンプログラムロードを提供しました。

  • CDC 6600( c。1964 )には、144個のトグルスイッチを備えたデッドスタートパネルがありました。デッドスタートスイッチは、トグルスイッチからペリフェラルプロセッサPP)0のメモリに12ワードを入力し、ロードシーケンスを開始しました。PP 0は、必要なコードを独自のメモリにロードしてから、他のPPを初期化しました。
  • GE 645c。1965)には、「SYSTEM BOOTLOAD」ボタンがあり、これを押すと、I / Oコントローラーの1つがダイオード読み取り専用メモリから64ワードプログラムをメモリにロードし、割り込みを発生させます。そのプログラムの実行を開始します。[14]
  • PDP-10の最初のモデルには、「READ IN」ボタンがあり、押すとプロセッサをリセットし、コントロールパネルのスイッチで指定されたデバイスでI / O操作を開始し、36ビットワードを読み取って後続のワード読み取りのターゲットアドレスとカウント。読み取りが完了すると、プロセッサは最後に読み込まれたワードにジャンプして、読み込まれたコードの実行を開始しました。[15]

これの注目すべきバリエーションは、ブートストラップROMもハードワイヤードIPL操作もないバロース B1700に見られます。代わりに、システムがリセットされた後、フロントパネルに取り付けられたテープドライブからオペコードを順番に読み取って実行します。これにより、RAMにブートローダーがセットアップされ、実行されます。ただし、これはシステムに関する前提条件がほとんどないため、CPUに重大な障害が発生した場合でも 、フロントパネルにわかりやすいコードを表示する診断(メンテナンステストルーチン)テープのロードにも同様に使用できます。

IBM System / 360および後継機

IBM System / 360および現在 のz / Architectureマシンを含むその後継機では、ブート・プロセスは初期プログラム・ロード(IPL)として知られています。

IBMはこの用語を7030(Stretch)の造語であり、[9] System / 360の設計のために復活させ、今日もそれらの環境で使用し続けています。[16] System / 360プロセッサーでは、IPLは、コンピューター・オペレーターが3桁の16進数のデバイス・アドレス(CUU; C = I / Oチャネル・アドレス、UU =コントロール装置およびデバイス・アドレス[nb 2])を選択することによって開始されます。 LOADボタンを押しますハイエンドのSystem / 360モデル、ほとんどの[nb 3] System / 370以降のシステムでは、スイッチとLOADボタンの機能は、グラフィックコンソールの画面上の選択可能な領域を使用してシミュレートされます。多くの場合[ nb4]IBM2250のようなデバイスまたはIBM3270のようなデバイス。たとえば、System / 370モデル158では、キーボードシーケンス0-7-X(ゼロ、7、Xの順)は、入力領域にキー入力されたデバイスアドレスからのIPLになります。Amdahl 470V / 6および関連するCPUは、オプションの2番目のチャネルユニットがインストールされているCPUで、合計32チャネルの4桁の16進数をサポートしていましたその後、IBMは16を超えるチャネルもサポートするようになります。

System / 360とその後継機、およびアムダールなどの互換機のIPL機能は、オペレーター指定のデバイスから実アドレス0から始まる主記憶域に24バイトを読み取ります。8バイトの2番目と3番目のグループはチャネルコマンドワード(CCW)として扱われ、スタートアッププログラムのロードを続行します(最初のCCWは常にCPUによってシミュレートされ、コマンドチェーンを使用してIPLの読み取りコマンド02hで構成され、誤った長さを抑制します強制されている表示)。I / Oチャネルコマンドが完了すると、8バイトの最初のグループがプロセッサのプログラムステータスワード(PSW)にロードされ、スタートアッププログラムはそのPSWによって指定された場所で実行を開始します。[16]IPLデバイスは通常ディスクドライブであるため、02h読み取りタイプコマンドの特別な意味がありますが、テープドライブやカードリーダーなどの他の入力タイプデバイスからのIPLにも、まったく同じ手順が使用されます。デバイスに依存しない方法で、たとえば、OSの初期配布磁気テープから新しいコンピューターにオペレーティングシステムをインストールできます。ディスクコントローラーの場合、02hコマンドを使用すると、選択したデバイスはシリンダー0000h、ヘッド0000hをシークし、シークシリンダーとヘッドコマンド07hをシミュレートし、レコード01hを検索して、Search IDEqualコマンド31hをシミュレートします。; シークおよび検索は、テープおよびカードのコントローラーによってシミュレートされません。これらのデバイス・クラスの場合、02hコマンドは、読み取りIPLコマンドではなく、単なる順次読み取りコマンドです。

ディスク、テープ、またはカードデッキには、実際のオペレーティングシステムまたはスタンドアロンユーティリティをメインストレージにロードするための特別なプログラムが含まれている必要があります。この特定の目的のために、「IPLテキスト」はスタンドアロンDASDI(直接アクセス記憶装置)によってディスクに配置されます。初期化)プログラムまたはオペレーティングシステム(ICKDSFなど)で実行される同等のプログラムですが、IPL対応のテープおよびカードデッキは通常、この「IPLテキスト」がすでに存在する状態で配布されます。

ミニコンピューター

ブートストラッププログラムのロードに使用されるスイッチを示すPDP-8 / Eフロントパネル

Digital Equipment Corporation(DEC)PDP-5およびPDP-8 (1965)をはじめとするミニコンピューターは、CPUを使用して入出力操作を支援することにより、設計を簡素化しました。これによりコストが節約されましたが、ボタンを1つ押すよりも起動が複雑になりました。ミニコンピューターは通常、フロントパネルのスイッチの配列を操作することにより、短いプログラムを切り替える方法がありました。初期のミニコンピューターは、電源を切っても情報が失われない磁気コアメモリを使用していたため、これらのブートストラップローダーは消去されない限りそのまま残ります。プログラムのバグが原因でループが発生し、すべてのメモリが上書きされたときに、誤って消去が発生することがありました。

このような単純な形式の起動を備えた他のミニコンピューターには、Hewlett-PackardのHP 2100シリーズ(1960年代半ば)、元のData General Nova(1969)、およびDECのPDP-11(1970)が含まれます。

DECは後に、最大32ワード(64バイト)のブートストラッププログラムを格納するPDP-11用のオプションのダイオードマトリックス読み取り専用メモリを追加しました。これは、 Unibusに接続され、32 x16の半導体ダイオードアレイを保持するプリント回路カードM792で構成されていました。512個のダイオードがすべて配置されているため、メモリにはすべての「1」ビットが含まれていました。カードは、ビットが「ゼロ」になる各ダイオードを切断することによってプログラムされました。DECは、不要なダイオードを省略するだけで、多くの標準入力デバイス用に事前にプログラムされたカードのバージョンであるBM792-Yxシリーズも販売しました。[17]

以前のアプローチに従って、以前のPDP-1にはハードウェアローダーがあり、オペレーターは「ロード」スイッチを押すだけで、紙テープリーダーにプログラムをコアメモリに直接ロードするように指示できます。Data General Supernovaは、フロントパネルスイッチを使用して、コンピューターがフロントパネルのデータスイッチで指定されたデバイスからメモリに命令を自動的にロードし、ロードされたコードにジャンプするようにしました。Nova 800および1200には、特別な読み取り専用メモリからメインメモリにプログラムをロードしてジャンプするスイッチがありました。[18]

初期のミニコンピューターブートローダーの例

紙テープリーダーを備えたミニコンピューターでは、ブートプロセスで実行される最初のプログラムであるブートローダーは、チェックサムで紙テープを読み取ることができる第2段階のブートローダー(多くの場合、バイナリローダーと呼ばれます)または外部の記憶媒体からのオペレーティングシステム。ブートローダーの 擬似コードは、次の8つの手順のように単純な場合があります。

  1. Pレジスタを9に設定します
  2. 紙テープリーダーの準備ができていることを確認してください
  3. 準備ができていない場合は、2にジャンプします
  4. 紙テープリーダーからアキュムレータにバイトを読み取ります
  5. アキュムレータをPレジスタのアドレスに格納します
  6. テープの終わりの場合は、9にジャンプします
  7. Pレジスタをインクリメントします
  8. 2にジャンプ

関連する例は、1970年代のNicolet Instrument Corporationミニコンピューターのローダーに基づいており、Teletype Model 33ASRテレプリンターの紙テープリーダーパンチユニットを使用しています。その第2ステージのローダーのバイトは、逆の順序で紙テープから読み取られます。

  1. Pレジスタを106に設定します
  2. 紙テープリーダーの準備ができていることを確認してください
  3. 準備ができていない場合は、2にジャンプします
  4. 紙テープリーダーからアキュムレータにバイトを読み取ります
  5. アキュムレータをPレジスタのアドレスに格納します
  6. Pレジスタをデクリメントします
  7. 2にジャンプ

第2ステージのローダーの長さは、最後のバイトがロケーション7を上書きする長さです。ロケーション6の命令が実行された後、ロケーション7は第2ステージのローダーの実行を開始します。次に、第2ステージのローダーは、オペレーティングシステムを含むはるかに長いテープがテープリーダーに配置されるのを待ちます。ブートローダーと第2ステージローダーの違いは、紙テープの読み取りエラーをトラップするためのチェックコードの追加です。これは、テレタイプモデル33ASRなどの比較的低コストの「パートタイムデューティ」ハードウェアで頻繁に発生します。(Friden Flexowritersははるかに信頼性がありましたが、比較的コストもかかりました。)

最初のマイクロコンピュータの起動

Altair 8800(1975年に最初にリリースされた)やさらに初期の同様のマシン(Intel 8008 CPUに基づく)などの初期のマイクロコンピューターには、そのようなブートストラップハードウェアがありませんでした。[19]起動すると、CPUは、バイナリゼロのみを含む実行可能コードを含むメモリを認識します。メモリは、電源投入時にリセットすることでクリアされました。これらのマシンのフロントパネルには、アドレスとデータを入力するためのトグルスイッチが搭載されており、コンピュータのメモリワードとアドレスバスのビットごとに1つのスイッチがあります。ハードウェアへの単純な追加により、ブートストラップコードを格納するためにそれらのスイッチから一度に1つのメモリ位置をロードすることができました。その間、CPUはメモリコンテンツの実行を試みませんでした。正しくロードされると、CPUはブートストラップコードを実行できるようになりました。このプロセスは面倒で、エラーがない必要がありました。[20]

集積回路読み取り専用メモリ時代

ミニコンピュータおよびマイクロコンピュータ[nb5]の起動プロセスは、マスクプログラムROMプログラムROM(PROM)、消去可能プログラムROM(EPROM)など、多くのバリエーションを備えた集積回路読み取り専用メモリ(ROM)の導入によって革命を起こしました。、およびフラッシュメモリこれらにより、ファームウェアブートプログラムをコンピューターの一部として含めることができました。(外部)ROMの導入は、1975年にCSELTの研究者であるAlbertoCiaramellaが特許を取得した「GruppiSpeciali」と呼ばれるイタリアの電話交換装置で行われました。[21]Gruppi Specialiは、1975年以降、フェライトコアではなく半導体で構成されたROMメモリからオペレーティングシステムを起動する完全なシングルボタンマシンでした。ROMデバイスはGruppiSpecialiのコンピューターにネイティブに組み込まれていませんでしたが、マシンの設計により、そのために設計されていないマシンでのシングルボタンROMブートも可能でした(したがって、この「ブートストラップデバイス」はアーキテクチャに依存しませんでした)、例えば、PDP-11。スイッチオフ後のマシンの状態を保存することも実施されました。これは、電話切り替えコンテストのもう1つの重要な機能でした。[22]

通常、すべてのマイクロプロセッサは、リセットまたは電源投入後、「特定のアドレスから始まるコードの実行を開始する」または「マルチバイトコードを探す」という形式の起動プロセスを実行します。特定のアドレスを指定し、指定された場所にジャンプして実行を開始します。」そのマイクロプロセッサを使用して構築されたシステムは、これらの特別な場所を占める永続的なROMを備えているため、システムは常にオペレータの支援なしで動作を開始します。たとえば、Intel x86プロセッサは、常にF000:FFF0、 [23] [24]で始まる命令を実行することから始まりますが、MOS6502の場合プロセッサでは、初期化は$ FFFD(MSバイト)と$ FFFC(LSバイト)の2バイトのベクトルアドレスを読み取り、その場所にジャンプしてブートストラップコードを実行することから始まります。[25]

AppleInc。の最初のコンピュータである1976年に発売されたApple1は、商用コンピュータの起動プロセス(Altair 8800の場合のように)のフロントパネルの必要性を排除したPROMチップを備えていました。Appleの広告によると、「スイッチもライトもありません... PROMSのファームウェアを使用すると、キーボードからプログラム(すべて16進数)を入力、表示、およびデバッグできます。」[26]

当時の読み取り専用メモリの費用が原因で、Apple IIシリーズは一連の非常に小さな増分ステップを使用してディスクオペレーティングシステムを起動し、それぞれが徐々に複雑な起動プロセスの次のフェーズに制御を渡しました。Apple DOS:ブートローダーを参照してください)。ROMに依存するディスクオペレーティングシステムはほとんどないため、ハードウェアも非常に柔軟で、カスタマイズされたさまざまなディスクコピー防止メカニズムをサポートしていました。ソフトウェアクラッキング:履歴を参照してください。)

一部のオペレーティングシステム、特に1995年以前のAppleのMacintoshシステムは、ハードウェアと密接に絡み合っているため、標準以外のオペレーティングシステムをネイティブに起動することはできません。これは、上記のスイッチを使用したシナリオの反対の極端です。すべてのハードウェアが正常に動作している限り、柔軟性は非常に低くなりますが、比較的エラーや確実性があります。このような状況での一般的な解決策は、システムをハイジャックして代替OSをロードする標準OSに属するプログラムとして機能するブートローダーを設計することです。この手法は、AppleがA / UX Unix実装に使用し、さまざまなフリーウェアオペレーティングシステムとBeOS Personal Edition5によってコピーされました。

Atari ST マイクロコンピューターなどの一部のマシンは「インスタントオン」であり、オペレーティングシステムはROMから実行されていました。したがって、ブートストラップの特徴的な操作の1つとして、2次ストアまたは3次ストアからのOSの取得が排除されました。システムのカスタマイズ、アクセサリ、およびその他のサポートソフトウェアを自動的にロードできるようにするために、起動プロセス中にAtariのフロッピードライブで追加のコンポーネントが読み取られました。システムが追加のコンポーネントを検索するときに、フロッピーを手動で挿入する時間を提供するタイムアウト遅延がありました。これは、空のディスクを挿入することで回避できます。Atari STハードウェアは、カートリッジスロットが、Atariのレガシー製造電子ゲームからの引き継ぎとして、ゲーム目的のネイティブプログラム実行を提供できるようにも設計されています。SpectreGCRを挿入するゲームスロットにMacintoshシステムROMがあり、Atariをオンにしたカートリッジを使用すると、Atari独自のTOSではなくMacintoshオペレーティングシステムを「ネイティブに起動」できます。

IBMパーソナルコンピュータには、 BIOSと呼ばれるROMベースのファームウェアが含まれていましそのファームウェアの機能の1つは、マシンの電源がオンになったときに電源投入時自己診断を実行し、次にブートデバイスからソフトウェアを読み取って実行することでした。IBMパーソナルコンピュータのBIOSと互換性のあるファームウェアは、IBMPC互換コンピュータで使用されますUEFI、元々Itaniumベースのマシン用にIntelによって開発され、後にIntelプロセッサを使用するAppleMacを含むx86ベースのマシンのBIOSの代替としても使用されました

Unixワークステーションには、もともとベンダー固有のROMベースのファームウェアがありました。サンマイクロシステムズは後にOpenBootを開発しました。これは後にOpenFirmwareとして知られ、 Forthインタープリターを組み込んでおり、ファームウェアの多くはForthで記述されています。これは、IEEEによってIEEE標準1275-1994として標準化されました。その標準を実装するファームウェアは、PowerPCベースのMacやその他のPowerPCベースのマシン、およびSun独自のSPARCベースのコンピューターで使用されていました。Advanced RISC Computing仕様は、一部のMIPSベースおよびAlphaに実装された別のファームウェア標準を定義しましたベースのマシンとSGIVisual Workstationx86ベースのワークステーション。

最新のブートローダー

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

このシーケンスを開始する小さなプログラムは、ブートストラップローダーブートストラップ、またはブートローダーと呼ばれます。多くの場合、多段ブートローダーが使用されます。その間、複雑さを増すいくつかのプログラムがチェーンロードのプロセスで次々にロードされます。

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

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

ブートローダーは、特にサイズにおいて、特有の制約に直面する可能性があります。たとえば、IBM PCおよび互換機では、ブートコードはマスターブートレコード(MBR)とパーティションブートレコード(PBR)に収まる必要があり、これらは単一のセクターに制限されます。IBM System / 360では、サイズはIPLメディアによって制限されます(カード・サイズ、トラック・サイズなど)。

これらの制約があるシステムでは、RAMにロードされる最初のプログラムは、オペレーティングシステムをロードするのに十分な大きさではなく、代わりに、別のより大きなプログラムをロードする必要があります。RAMにロードされる最初のプログラムは第1ステージのブートローダーと呼ばれ、RAMにロードされるプログラムは第2ステージのブートローダーと呼ばれます。

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

第1段階(ROM段階またはハードウェア初期化段階)のブートローダーの例には、BIOSUEFIcorebootLibreboot、およびDasU -Bootが含まれます。IBM PCでは、マスターブートレコード(MBR)とパーティションブートレコード(PBR)のブートローダーは、少なくとも32 KB [27] [28](後で64 KB [29]に拡張)のシステムを必要とするようにコーディングされていました。メモリを使用し、元の8088/8086プロセッサでサポートされている命令のみを使用ます。

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

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

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

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

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

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

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

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

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

パソコン(PC)

起動デバイス

Windows To Goブータブルフラッシュドライブ、ライブUSBの例

ブートデバイスは、オペレーティングシステムがロードされるデバイスです。最新のPCのUEFIまたはBIOSファームウェアは、さまざまなデバイスからの起動をサポートしています。通常、ローカルソリッドステートドライブまたはハードディスクドライブは、 GPTまたはそのようなドライブまたはディスク上のマスターブートレコード(MBR)、光ディスクドライブEl Toritoを使用)を介してUSB 容量ストレージデバイス(FTLベースのフラッシュドライブ、SDカードまたはマルチメディアカードスロット、USBハードディスクドライブ、USB光ディスクドライブなど)、またはネットワークインターフェイスカード(PXEを使用))。古い、あまり一般的ではないBIOS起動可能デバイスには、フロッピーディスクドライブZipドライブ、およびLS-120ドライブが含まれます。

通常、ファームウェア(UEFIまたはBIOS)により、ユーザーは起動順序を構成できます。起動順序が「最初にDVDドライブ、次にハードディスクドライブ」に設定されている場合、ファームウェアはDVDドライブからの起動を試みます。これが失敗した場合(たとえば、ドライブにDVDがないため)、ローカルハードディスクドライブからの起動を試みます。

たとえば、WindowsがハードドライブにインストールされているPCでは、ユーザーは起動順序を上記の順序に設定してから、オペレーティングシステムをハードドライブにインストールせずにLinuxを試すためにLinux LiveCDを挿入できます。ドライブ。これは、コンピューターが電源投入時自己診断(POST)を実行した後に、ユーザーが起動するオペレーティングシステムを選択するデュアルブートの例です。このデュアルブートの例では、ユーザーはコンピューターからDVDを挿入または削除して選択しますが、コンピューターのキーボードを使用して、選択したデバイスのブートマネージャーメニューから選択して、ブートするオペレーティングシステムを選択するのが一般的です。から選択BIOSまたはUEFIブートメニュー、あるいはその両方。ブートメニューは通常、POST中にF8またはキーを押すことで入力されます。BIOSセットアップは通常、POST中にまたはキーを押すことによって入力さます[32] [33]F12F2DEL

インターネットアクセスなどのさまざまな単純なタスクのために、ユーザーが通常Linuxのバリアントであるものをすばやく起動できるようにするいくつかのデバイスが利用可能です。例としては、SplashtopLatitudeONがあります。[34] [35] [36]

起動シーケンス

FreeBSDboot0MBRの16進ダンプ
起動中に2000年からソフトウェアBIOSを授与

起動すると、IBM互換のパーソナルコンピュータのx86 CPUがリアルモードで実行され、命令はリセットベクトル( 16ビットx86プロセッサ[37]では物理メモリアドレスFFFF0h、32ビットおよび64ビットx86プロセッサではFFFFFFF0h )に配置されます。 [38] [39])、通常はROM内のファームウェア(UEFIまたはBIOS)エントリポイントを指します。このメモリ位置には通常、実行をファームウェア(UEFIまたはBIOS)起動プログラムの位置に転送するジャンプ命令が含まれています。このプログラムは、電源投入時自己診断を実行します(POST)メインメモリDRAM)、PCIバス、PCIデバイス(組み込みオプションROMの実行を含む)などの必要なデバイスをチェックして初期化します最も複雑な手順の1つは、 SPDを介したDRAMのセットアップです。この時点では、メモリが非常に限られているため、さらに複雑になります。

必要なハードウェアを初期化した後、ファームウェア(UEFIまたはBIOS)は、起動可能なストレージデバイスが見つかるまで、事前に構成された不揮発性ストレージデバイスのリスト(「ブートデバイスシーケンス」)を調べます。起動可能なMBRデバイスは、読み取り可能なデバイスとして定義され、最初のセクターの最後の2バイトには、ディスク上のバイトシーケンス55hAAhとして検出されるリトルエンディアン ワード AA55h[nb 6]が含まれます(別名、MBRブート署名)、またはセクター内のコードがx86PCで実行可能であることが確立されている場合。

BIOSが起動可能なデバイスを検出すると、ブートセクターを線形アドレス7C00h(通常はセグメントオフセット0000h7C00h[27])にロードしますが、一部のBIOSは誤って07C0h0000h [要出典]を使用し、実行をブートコードに転送します。ハードディスクの場合、これはマスターブートレコード(MBR)と呼ばれます。従来のMBRコードは、MBRのパーティションテーブルで、起動可能として設定されたパーティション[nb 7]アクティブフラグが設定されたパーティション)をチェックします。アクティブなパーティションの場合 が見つかると、MBRコードはそのパーティションからボリュームブートレコード(VBR)と呼ばれるブートセクターコードをロードし、それを実行します。MBRブートコードは、多くの場合、オペレーティングシステム固有です。

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

多くの場合、VBRはOS固有です。ただし、その主な機能は、アクティブなパーティションから、第2段階のブートローダーであるオペレーティングシステムのブートローダーファイル(bootmgrまたはなど)をロードして実行することです。ntldr次に、ブートローダーがストレージデバイスから OSカーネルをロードします。

アクティブなパーティションがない場合、またはアクティブなパーティションのブートセクターが無効な場合、MBRは、パーティションを選択するセカンダリブートローダーをロードし(多くの場合、ユーザー入力を介して)、そのブートセクターをロードします。これにより、通常、対応するオペレーティングシステムカーネルがロードされます。場合によっては、MBRは、アクティブなパーティションを起動する前に、セカンダリブートローダーをロードしようとすることもあります。他のすべてが失敗した場合は、BIOSに制御を戻すために、 INT 18h [29] [27] BIOS割り込み呼び出しを発行する必要があります(INT18hが戻る場合に備えてINT19hが続きます)。BIOSは起動を試みます。他のデバイスから離れて、ネットワーク経由でリモートブートを試みます。[27]

最近の多くのシステム(Intel Macおよび新しいPC)はUEFIを使用しています。[46] [47]

BIOSとは異なり、UEFI( CSMを介したレガシーブートではない)はブートセクターに依存せず、UEFIシステムはブートローダー(USBディスクまたはEFIシステムパーティション内のEFIアプリケーションファイル)を直接ロードし[48]、OSカーネルはによってロードされます。ブートローダー。

他の種類のブートシーケンス

Androidデバイスのロック解除されたブートローダー。追加の利用可能なオプションが表示ます

最近のCPUやマイクロコントローラー(TI OMAPなど)やDSPでさえ、ブートコードがシリコンに直接統合されたブートROMを備えている場合があるため、このようなプロセッサは、独自に非常に高度なブートシーケンスを実行し、さまざまなソースからブートプログラムをロードできます。 NANDフラッシュ、SDまたはMMCカードなど。このようなデバイスを処理するために必要なすべてのロジックを配線することは困難であるため、このようなシナリオでは代わりに統合ブートROMが使用されます。ブートROMを使用すると、ハードワイヤードロジックが提供できるよりも柔軟なブートシーケンスが可能になります。たとえば、ブートROMは、複数のブートソースからのブートを実行しようとする可能性があります。また、ブートROMは、UARTSPI、などのシリアルインターフェイスを介してブートローダーまたは診断プログラムをロードできることがよくあります。USBなど。この機能は、何らかの理由で不揮発性メモリ内の通常のブートソフトウェアが消去された場合のシステム回復の目的でよく使用されます。また、クリーンな不揮発性メモリがインストールされているためにソフトウェアがない場合の初期の不揮発性メモリプログラミングにも使用できます。システムでまだ利用可能です。

一部の組み込みシステム設計には、統合ブートROMによってシステムRAMにロードされる追加コードの形式で中間ブートシーケンスステップが含まれる場合もあります。そのようにロードされた追加のコードは、通常、少量のRAMなどのプラットフォームの制限を克服する方法として機能するため、Das U-Bootなどの専用のプライマリブートローダーを、システムのブートシーケンスの次のステップとしてロードできます。追加のコードとブートシーケンスのステップは、通常、セカンダリプログラムローダー(SPL)と呼ばれます。[49]

JTAGなどのハードウェアデバッグインターフェイスを使用して、システムを制御することもできますこのようなインターフェースは、不揮発性メモリをプログラムするために必要なアクションを実行するようにプロセッサコアに指示することにより、ブートローダープログラムを起動可能な不揮発性メモリ(フラッシュなど)に書き込むために使用できます。または、デバッグインターフェイスを使用して、診断コードまたはブートコードをRAMにアップロードしてから、プロセッサコアを起動し、アップロードされたコードを実行するように指示することもできます。これにより、たとえば、サポートされているブートデバイスにソフトウェアが残っておらず、プロセッサに統合ブートROMがない組み込みシステムのリカバリが可能になります。JTAGは、標準的で人気のあるインターフェイスです。多くのCPU、マイクロコントローラー、およびその他のデバイスは、JTAGインターフェースを使用して製造されています(2009年現在)。

一部のマイクロコントローラーは、システムの任意の制御やコードの直接実行に使用できない特別なハードウェアインターフェイスを提供しますが、代わりに、単純なプロトコルを介してブート可能な不揮発性メモリ(フラッシュメモリなど)にブートコードを挿入できます。次に、製造段階で、このようなインターフェイスを使用して、ブートコード(および場合によっては他のコード)を不揮発性メモリに挿入します。システムのリセット後、マイクロコントローラは、通常のプロセッサが起動にROMを使用しているのと同じように、不揮発性メモリにプログラムされたコードの実行を開始します。最も注目すべきは、この手法がAtmelAVRマイクロコントローラーやその他のマイクロコントローラーで使用されていることです。多くの場合、このようなインターフェイスはハードワイヤードロジックによって実装されます。その他の場合、このようなインターフェイスは、統合されたオンチップブートROMで実行されているソフトウェアによって作成される可能性があります。GPIOピン。

ほとんどのデジタルシグナルプロセッサには、シリアルモードブートと、ホストポートインターフェイス(HPIブート)などのパラレルモードブートがあります。

DSPの場合、多くの場合、システム設計に2番目のマイクロプロセッサまたはマイクロコントローラが存在します。これは、システム全体の動作、割り込み処理、外部イベントの処理、ユーザーインターフェイスなどを担当しますが、DSPは信号処理タスク専用です。 。このようなシステムでは、DSPは、ホストプロセッサ(ホストポートに名前を付ける)と呼ばれることもある別のプロセッサによって起動される可能性があります。このようなプロセッサは、マスターと呼ばれることもあります、通常、最初に自身のメモリから起動し、次にDSPの起動を含むシステム全体の動作を制御し、次にDSPの動作をさらに制御するためです。DSPには多くの場合、独自のブートメモリがなく、代わりに必要なコードを提供するためにホストプロセッサに依存しています。このような設計で最も注目に値するシステムは、携帯電話、モデム、オーディオおよびビデオプレーヤーなどであり、DSPとCPU /マイクロコントローラーが共存しています。

多くのFPGAチップは、電源投入時に外部シリアルEEPROM(「コンフィギュレーションROM」)からコンフィギュレーションをロードします。

も参照してください

メモ

  1. ^ デーモンを含み
  2. ^ UUは多くの場合Uu、U =コントロールユニットアドレス、u =デバイスアドレスの形式でしたが、一部のコントロールユニットは8つのデバイスしか接続していませんでした。実際、3830 DASDコントローラーは、オプションとして32ドライブアドレス指定を提供していました。
  3. ^ 3210または3215コンソールタイプライターを使用した370/145および370/155を除く。
  4. ^ S / 360のみが2250を使用しました。360 / 85、370 / 165、370 / 168は、他の何とも互換性のないキーボード/ディスプレイデバイスを使用していました
  5. ^ IBM 1401 IBM 7090 IBM System / 360 、およびその他の多くのは、ブートローダーのキー入力を必要としませんでした。S / 360は、集積回路を使用していませんが、ほとんどのモデルで読み取り専用ストレージを備えていました。
  6. ^ ブートセクタのオフセットでの署名、オフセットオフセットでです。IBM PC互換機のコンテキストではリトルエンディアン表現を想定する必要があるため、これはx86プロセッサのプログラムでは16ビットワードとして記述できますが(順序の入れ替えに注意)、他のプログラムの場合と同様に記述する必要があります。ビッグエンディアン表現を使用するCPUアーキテクチャこれは、書籍や元のMicrosoftリファレンスドキュメントでも何度も混同されているため、この記事では、オフセットベースのバイト単位のディスク上の表現を使用して、誤解を避けることができます。+1FEh55h AAh55h+1FEhAAh+1FFhAA55h55AAh
  7. ^ アクティブパーティションには、OSではなく第2ステージのブートローダー(OS / 2ブートマネージャーなど)含まれている場合があります
  8. ^ PC DOS 5.0マニュアルには、systenファイルが連続している必要がなくなったと誤って記載されています。ただし、ブートプロセスが機能するには、システムファイルが最初の2つのディレクトリエントリを占有する必要があり、 IBMBIO.COMの最初の3つのセクターが連続して格納される必要があります。SYSはこれらの要件を引き続き処理します。
  9. ^ a b 例として、DR-DOS MBRブートセクターの拡張機能は、 MS-DOS / PC DOSの対応物と比較して、 LBAを追加するために、7.05までのアセンブリ言語で従来のコード最適化手法を使用して実現できます。 FAT32およびLOADERは、 7.07セクターをサポートし、自己変更コード機械語でのオペコードレベルのプログラミング、(文書化された)使用の制御に頼らなければなりませんでした。副作用、マルチレベルのデータ/コードのオーバーラップ、およびすべてを単一の物理セクターに圧縮するためのアルゴリズムによる折りたたみ技術。これは、マルチブートおよびチェーンロードのシナリオで他のオペレーティングシステムとの相互互換性が必要だったためです。
  10. ^ DR- DOSVBRがIBMBIO.COMファイル全体をメモリにロードするという規則には1つの例外があります。IBMBIO.COMファイルが約29KBより大きい場合、ファイル全体をメモリにロードしようとすると、ブートが発生します。スタック上書きし、ディスクパラメータテーブル(DPT / FDPB)を再配置するローダーしたがって、 DR-DOS 7.07 VBRは、ファイルの最初の29 KBのみをメモリーにロードし、IBMBIO.COMの最初の部分に埋め込まれた別のローダーに依存してこの状態をチェックし、必要に応じてファイルの残りの部分をメモリーにロードします。このローダーがない以前のバージョンでは、IBMBIO.COMのサイズがこの制限を超えることはなかったため、これによって互換性の問題が発生することはありません。デュアルエントリ構造と組み合わせると、PC DOS VBRによってシステムをロードすることもできます。これにより、ファイルの最初の3つのセクターのみがメモリにロードされます。

参考文献

  1. ^ 「ブートストラップ」情報技術のコンピュータ辞書
  2. ^ 「ブートストラップ」無料の辞書
  3. ^ 「ブートストラップで自分を引き上げる」無料辞書によるイディオム2019-10-07を取得
  4. ^ 「ブートストラップ定義」技術用語2019-10-02を取得しました。
  5. ^ 「あなたのブートストラップによってあなた自身を引き上げなさい」フレーズファインダー
  6. ^ キャンベルケリー、マーティン(1980)。「EDSACのプログラミング」。コンピューティングの歴史のIEEE年報2(1):7–36。土井10.1109 /mahc.1980.10009
  7. ^ ウィルクス、モーリスV . ; ホイーラー、デビッドJ。; ギル、スタンレー(1951)。電子デジタルコンピュータのためのプログラムの準備アディソン-ウェスリー
  8. ^ Buchholz、Werner(1953)。「IBMType701コンピューターのシステム設計」(PDF)IREの議事録41(10):1273。
  9. ^ a b "IBM7619Exchange"。リファレンスマニュアル7030データ処理システム(PDF)IBM。1961年8月。125〜127ページ。A22-6530-2。
  10. ^ 動作原理タイプ701および関連機器(PDF)IBM。1953年。p。26 2012年11月9日取得
  11. ^ Gutenbergからインターネットへ、Jeremy M. Norman、2005年、436ページ、 ISBN 0-930405-87-0 
  12. ^ オックスフォード英語辞典オックスフォード大学
  13. ^ 650磁気ドラムデータ処理機の操作マニュアル(PDF)IBM。1955. pp。49、53–54。
  14. ^ GE-645システムマニュアル(PDF)ゼネラルエレクトリック1968年1月2019-10-30を取得しました。
  15. ^ PDP-10システムリファレンスマニュアル、パート1(PDF)Digital EquipmentCorporation1969. pp。2–72 2012年11月9日取得
  16. ^ a b z /アーキテクチャの動作原理(PDF)IBM2005年9月。pp。第17章2007年4月14日取得
  17. ^ PDP-11周辺機器ハンドブック(PDF)Digital EquipmentCorporation1976. pp。4–25。
  18. ^ Nova Computersの使用方法(PDF)データゼネラル1974年10月。セクション2.8「プログラムのロード」。
  19. ^ 「古いコンピュータ:Altair8800b」2019年12月10日取得
  20. ^ ホルマー、グレン。Altair 8800は、紙テープから4KBASICをロードします
  21. ^ Ciaramella、Alberto電子プロセッサの中央記憶装置を自動的にロードするための装置。」米国特許第4,117,974号。1978-10-03。(1975年に提出)
  22. ^ CSELTのAlbertoCiaramella racconta il brevetto del boostrap deiコンピューターの概念[ AlbertoCiaramellaは、CSELTで考案されたコンピューターのブートストラップに関する特許について説明しています](イタリア語)。2021-11-13にオリジナルからアーカイブされました。
  23. ^ オズボーン、アダム; ケイン、ジェリー(1981)。Osborne 16ビットマイクロプロセッサハンドブック(PDF)pp。5–27。ISBN  0-931988-43-82019年8月23日取得
  24. ^ Intel 64およびIA-32アーキテクチャソフトウェア開発者用マニュアル第3巻(3A、3B、3C、および3D):システムプログラミングガイド(PDF)
  25. ^ オズボーン、アダム; ケイン、ジェリー。Osborne 4&8ビットマイクロプロセッサハンドブックpp。10–20。ISBN 0-931988-42-X
  26. ^ Apple Ad、Interface Age、1976年10月
  27. ^ a b c d e Paul、Matthias R.(1997-10-02)[1997-09-29]。「CalderaOpenDOS7.01 / 7.02 Update Alpha 3IBMBIO.COM-README.TXTおよびBOOT.TXT-OpenDOSの起動方法の簡単な説明」2003-10-04にオリジナルからアーカイブされました2009年3月29日取得 [1]
  28. ^ 坂本正彦(2010-05-13)。「BIOSがMBRをx86の7C00hにロードするのはなぜですか?」Glamenv-Septzen.net 2012年8月22日取得
  29. ^ a b Compaq Computer Corporation; Phoenix Technologies Ltd; インテルコーポレーション(1996-01-11)。「BIOSブート仕様1.01」(PDF)2017年12月21日取得
  30. ^ 「第6章-起動とディスクの問題のトラブルシューティング」Windows NTServerリソースキットマイクロソフト。2007年5月15日にオリジナルからアーカイブされました
  31. ^ 「色合い」coreboot 2010年11月20日取得
  32. ^ 「対応するホットキーを備えたPCブランドのリスト」www.disk-image.com 2020年9月26日取得
  33. ^ 「任意のPCでBIOSに入る方法:メーカー別のアクセスキー|トムのハードウェア」www.tomshardware.com 2020年9月26日取得
  34. ^ ブラウン、エリック(2008-10-02)。「MontaVistaLinuxはDellのクイックブート機能を駆動します」linuxdevices.com 2010年11月20日取得
  35. ^ Larabel、Michael(2008-06-14)。「SplashTopLinuxOn HP、Dell Notebooks?」マイケル・ララベル2010年11月20日取得
  36. ^ 「VoodooEnvyのインスタントオンIOS(Splashtopを搭載)」YouTube。2021-11-13にオリジナルからアーカイブされました2010年11月20日取得
  37. ^ 「iAPX286プログラマーズリファレンスマニュアル」(PDF)インテル1983年。セクション5.3システムの初期化、p。5-7 2019年8月23日取得CSレジスタにはF000が含まれ(したがって、物理アドレスF0000で始まるコードセグメントを指定)、命令ポインタにはFFF0が含まれるため、プロセッサは物理アドレスFFFF0Hで最初の命令を実行します。
  38. ^ 「80386プログラマーズリファレンスマニュアル」(PDF)インテル。1986年。セクション10.2.3最初の指示、p。10-3 2013年11月3日取得RESET後、アドレスラインA31〜20は命令フェッチのために自動的にアサートされます。この事実は、CS:IPの初期値とともに、物理アドレスFFFFFFF0Hで命令の実行を開始します。
  39. ^ 「Intel64およびIA-32アーキテクチャソフトウェア開発者マニュアル」(PDF)インテルコーポレーション2012年5月。セクション9.1.4実行された最初の命令、p。2611 2012年8月23日取得ハードウェアリセットに続いてフェッチおよび実行される最初の命令は、物理アドレスFFFFFFF0hにあります。このアドレスは、プロセッサの最上位の物理アドレスより16バイト下にあります。ソフトウェア初期化コードを含むEPROMは、このアドレスに配置する必要があります。
  40. ^ 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]
  41. ^ a b c Chappell、Geoff(1994年1月)。「第2章:システムのフットプリント」。シュルマンでは、アンドリュー。ペダーセン、アモレット(編)。DOS内部アンドリューシュルマンプログラミングシリーズ(第1版、第1版)。アディソンウェスリー出版社ISBN 978-0-201-60835-9(xxvi + 738 + ivページ、3.5 "-フロッピー[3] [4])エラッタ:[5] [6] [7]
  42. ^ Rosch、Winn L.(1991-02-12)。「DRDOS5.0-より良いオペレーティングシステム?」PCマガジン10、いいえ。3.p。241-246、257、264、266。2019-07-25のオリジナルからアーカイブ2019年7月26日取得[…] SYSはDRDOS 5.0で改善されたため、起動可能にするディスク上で最初のクラスターを空けておく必要はありません。DR DOSシステムファイルはディスク上のどこにでも配置できるため、システムを起動するために十分な空き容量のあるディスクを設定できます。[…](注:ソースはこれをSYSユーティリティに起因しますが、実際にはこれはブートセクターの高度なブートストラップローダーの機能です。SYSはこのセクターをディスクに配置するだけです。)
  43. ^ Paul、Matthias R.(2001-01-17)。「DR-DOSのFAT32」opendos @delorie2017-10-06にオリジナルからアーカイブされました2017年10月6日取得[…] DR-DOSブートセクタ[…]はIBMBIO.COMDRBIOS.SYS)ファイルを検索し、制御を渡す前に*ファイル全体*をメモリにロードします。[…]
  44. ^ Paul、Matthias R.(2002-02-20)。「コピーできません」opendos @delorie2017-10-06にオリジナルからアーカイブされました2017年10月6日取得[…] DR-DOSブートセクタは、IBMBIO.COMファイル全体をメモリにロードしてから実行します。IBMBIO.COMによってロードされるIBMDOS.COMファイルについてはまったく気にしません。[…] DR-DOSブートセクタ[…]は、ルートディレクトリに論理的に保存されている限り、[…]カーネルファイルを検索します。ディスク上のそれらの物理的な位置、およびそれらが断片化されているかどうかにかかわらず、DR-DOSブートセクターは関係ありません。したがって、カーネルファイルをディスクにコピーするだけで済みます(単純な場合でもCOPY)、そしてブートセクターがDR-DOSセクターになるとすぐに、それらを見つけてロードします。もちろん、これらすべてを単一セクターのサイズである512バイトにまとめることは困難ですが、これはDR-DOSシステムをセットアップする必要がある場合の大きな利便性の向上であり、DRの鍵でもあります。 -DOSマルチOSLOADERユーティリティが動作します。MS-DOSカーネルファイルは特定の場所に存在する必要がありますが、DR-DOSファイルはどこにでも配置できるため、他のOSを起動するたびに物理的に入れ替える必要はありません。また、カーネルファイルを古いファイルにコピーするだけでDR-DOSシステムをアップグレードでき、SYSは不要で、MS-DOS / PCDOSに必要な難しいセットアップ手順もありません。同じドライブに異なるファイル名で複数のDR-DOSカーネルファイルを保存することもでき、LOADERはBOOT.LSTファイルにリストされているファイル名に従ってそれらを切り替えます。[…]
  45. ^ Paul、Matthias R.(2017-08-14)[2017-08-07]。「OmniBook300の拡張モードでのWindows3.1の継続的な物語」MoHPC-HP電卓博物館2017-10-06にオリジナルからアーカイブされました2017年10月6日取得[…] DR-DOS FDISKは、ディスクをパーティション分割するだけでなく、新しく作成されたボリュームをフォーマットし、それらのブートセクターを一度に初期化できるため、誤って間違ったボリュームを台無しにするリスクがなく、FORMAT / Sは必要ありません。またはSYSその後、システムファイルを含む残りのDR-DOSファイルをコピーするだけで済みます。とは対照的に、それを知ることは重要です MS-DOS / PC DOS、DR-DOSには「スマート」ブートセクタがあり、ファイルシステムを実際に「マウント」して、特定の場所に配置されることを期待するのではなく、ルートディレクトリでシステムファイルを検索してロードします。物理的には、システムファイルはどこにでも配置でき、断片化することもできます。[…]
  46. ^ 「EFIのためのインテルプラットフォームイノベーションフレームワーク」インテル2008年1月7日取得
  47. ^ 「OpenBIOS--coreboot」coreboot.org 2013年3月20日取得
  48. ^ 「UEFI-OSDevWiki」wiki.osdev.org 2020年9月26日取得
  49. ^ 「概要–4つのブートローダーステージ」ti.comテキサスインスツルメンツ2013-12-05 2015年1月25日取得