高等学校工業/ソフトウェア技術/OS起動の仕組み

コンピュータの起動プロセスは、ハードウェアとソフトウェアが連携して、システムを起動し動作可能な状態にする手順です。

一般的に、コンピュータの起動プロセスは以下の手順で行われます:

  1. 電源投入:
    コンピュータの電源を投入すると、電源がハードウェアコンポーネントに供給され、システムが起動します。
  2. ファームウェアの初期化:
    ハードウェアの初期化を行うファームウェア(BIOSまたはUEFI)が起動します。ファームウェアは、基本的なハードウェアの設定や初期化、およびブートデバイスの検出を行います。
  3. ブートデバイスの選択:
    ファームウェアは、ブートデバイス(ハードディスク、SSD、USBデバイスなど)を検出し、その中から起動可能なデバイスを選択します。
  4. ブートローダーの読み込み:
    選択されたブートデバイスから、ブートローダーが読み込まれます。ブートローダーは、起動可能なOSをロードし、実行するための手順を指示します。
  5. OSの起動:
    ブートローダーがOSを読み込み、カーネルをメモリにロードします。その後、OSの初期化と実行が開始されます。
  6. 初期化とセッションの開始:
    OSが起動すると、各種デバイスやサービスが初期化されます。ログイン画面が表示される場合は、ユーザーがログインするための準備が整います。
  7. ユーザーセッションの開始:
    ユーザーがログインすると、OSはユーザーセッションを開始し、デスクトップ環境またはコマンドラインインターフェースなどの操作可能な状態になります。

以上が一般的なコンピュータの起動プロセスの手順です。このプロセスは、BIOSやUEFIなどのファームウェア、ブートローダー、およびOSの特定の設定によって異なる場合があります。

UEFIの場合

編集

UEFI(Unified Extensible Firmware Interface)は、従来のBIOS(Basic Input/Output System)の後継として設計された、コンピュータの起動プロセスを管理するための仕組みです。 UEFIは、ハードウェアとソフトウェアの間のインターフェースとして機能し、より柔軟性があり、機能的に豊富な起動環境を提供します。

UEFIによるOSの起動プロセスは次のような手順で行われます:

  1. ファームウェア・イニシャライゼーション(Firmware Initialization):
    コンピュータの電源が入ると、UEFIファームウェアが起動します。この時点では、ファームウェアがハードウェアの初期化を行います。メモリの初期化、デバイスの検出、およびシステム構成情報の読み込みが行われます。
  2. ブートマネージャの実行:
    ファームウェアがハードウェアの初期化を完了すると、UEFIブートマネージャが起動します。ブートマネージャは、どのOSを起動するかを決定する役割を果たします。通常、UEFIファームウェアには、どのブートローダーを起動するかを指定するための設定が含まれています。
  3. ブートローダーの読み込み:
    ブートマネージャが決定したOSのブートローダーが読み込まれます。UEFIシステムでは、ブートローダーは通常、EFIシステム・パーティション(ESP)に格納されます。ESPはFAT32形式でフォーマットされ、UEFIファームウェアによって認識されます。
  4. OSの読み込み:
    ブートローダーが読み込まれると、そのブートローダーは指定されたOSのカーネルを読み込み、実行します。これにより、OSがメモリにロードされ、実行可能な状態になります。
  5. OSの起動:
    OSが起動され、ユーザーがデスクトップ環境またはコマンドラインインターフェースなど、そのOSが提供する環境にアクセスできるようになります。

以上がUEFIを使用したOSの起動プロセスの基本的な手順です。UEFIは、従来のBIOSよりも柔軟性があり、セキュリティ機能が強化されているため、現代のコンピュータシステムで広く採用されています。

UEFIには、起動の他に以下の機能があります。

  1. セキュアブートの検証:
    UEFIはセキュアブート機能をサポートしており、OSやブートプロセスに対する改ざんやマルウェアの導入を防ぐための仕組みです。セキュアブートでは、OSやブートローダーがデジタル署名された信頼できるものであることを検証します。これにより、システムの信頼性とセキュリティが向上します。
  2. UEFIファームウェア設定の管理:
    UEFIファームウェアは、コンピュータの設定を管理するためのGUIまたはコマンドラインインターフェースを提供します。これにより、ユーザーはハードウェアの構成や動作をカスタマイズできます。UEFI設定には、起動オプションの構成やデバイスの優先順位、セキュリティ設定などが含まれます。
  3. その他の機能:
    UEFIは他にもさまざまな機能を提供しています。例えば、ネットワーク経由での起動(PXEブート)、統合された診断ツール、およびハードウェアの構成情報の収集などがあります。

起動プロセスにおけるUEFIとBIOSの違い

編集

UEFI(Unified Extensible Firmware Interface)とBIOS(Basic Input/Output System)は、コンピュータの起動プロセスを管理するための異なるファームウェアインターフェースです。それぞれの方式でOSを起動する際の主な違いは次の通りです:

起動方式
BIOS
BIOSは従来のファームウェアで、マスターブートレコード(MBR)を使用してOSを起動します。MBRは、512バイトのセクターに格納されたブートローダーを指し示す情報を保持します。MBRは最大4つのプライマリパーティションをサポートしますが、拡張パーティションを使用することで、複数の論理パーティションを作成できます。
UEFI
UEFIは、より現代的なインターフェースで、GUIDパーティションテーブル(GPT)を使用します。GPTは、MBRよりも拡張性があり、2TBを超えるパーティションサイズや128個までのパーティションをサポートします。UEFIは、EFIシステムパーティション(ESP)からブートローダーを読み込んでOSを起動します。
ブートローダー
BIOS
BIOS方式では、ブートローダーはMBR内に格納されます。通常、GRUB(GNU GRand Unified Bootloader)やNTLDR(NT Loader)などが使用されます。これにより、OSがMBRから直接起動されるか、ブートマネージャが選択されます。
UEFI
UEFI方式では、ブートローダーはEFIシステムパーティション(ESP)に格納されます。これにより、複数のOSを同じディスクにインストールする際に、各OSのブートローダーが互いに干渉することなく独立して管理されます。
セキュリティ
UEFI
UEFIは「セキュアブート」機能を提供し、OSやブートプロセスに対する改ざんを防止します。セキュアブートは、OSやブートローダーがデジタル署名されているかどうかを検証し、信頼できるソフトウェアのみを起動することを保証します。これにより、マルウェアによるブートプロセスの改ざんを防ぎます。
BIOS
BIOSにはセキュアブート機能は組み込まれておらず、セキュリティ面での制約があります。BIOSは基本的に、起動デバイスを物理的に制限することはできますが、ソフトウェアレベルでのセキュリティ対策は限られています。
機能性
UEFI
UEFIは、BIOSよりも多機能であり、ネットワークからの起動(PXEブート)や大容量のドライブのサポートなど、より高度なハードウェア初期化と構成が可能です。UEFIは、より直感的なユーザーインターフェースも提供します。
BIOS
BIOSは基本的なハードウェア初期化とブートプロセスの管理に特化していますが、機能的には制限があります。特に、UEFIがサポートする新しいテクノロジーやセキュリティ機能は含まれていません。

これらの違いにより、UEFIはより現代的で柔軟性があり、セキュリティが強化された起動方式として、従来のBIOSよりも広く採用されるようになっています。

BIOSとUEFIのパーティション構成の比較

編集

以下は、BIOSとUEFIを使用したパーティション構成の比較を表形式で示したものです:

BIOSとUEFIのパーティション構成の比較
項目 BIOS UEFI
パーティションテーブル Master Boot Record (MBR) GUID Partition Table (GPT)
ブートローダー MBR内のブートセクターに配置 EFIシステムパーティション(ESP)に配置
パーティション数の制限 最大4つのプライマリパーティション(拡張パーティションを使用して論理パーティションを作成可能) 制限なし(理論上最大128個のパーティション)
パーティションサイズの制限 2TBまでのパーティションサイズ 2TB以上のパーティションサイズ(GPTがサポート)
セキュアブート サポートされていない サポートされている(OSやブートローダーにデジタル署名が必要)
OSの起動方式 MBRに基づくブート方式 EFIに基づくブート方式
セキュリティ機能 限られたセキュリティ機能(物理的な制限が中心) より強力なセキュリティ機能(セキュアブートや署名検証)

この表を通じて、BIOSとUEFIの主な違いがより明確になるでしょう。UEFIは、パーティション管理の柔軟性やセキュリティ機能を強化し、より現代的な技術として、特に大規模なストレージやセキュリティ重視のシステムに適しています。

用語集

編集

以下は、OS起動関連の用語集です:

  1. ブート:
    コンピュータを起動すること。通常、電源を入れると自動的にブートプロセスが開始される。
  2. ファームウェア:
    コンピュータのハードウェアとソフトウェアの間のインターフェース。BIOSやUEFIが代表的なファームウェアの例。
  3. BIOS (Basic Input/Output System):
    コンピュータの起動プロセスを管理する古典的なファームウェア。ハードウェアの初期化とOSの起動を担当する。
  4. UEFI (Unified Extensible Firmware Interface):
    BIOSの後継として開発されたファームウェア。より柔軟で機能が豊富であり、セキュリティ機能も強化されている。
  5. ブートデバイス:
    OSを起動するために使用されるストレージデバイス。通常はハードディスク、SSD、USBドライブなど。
  6. ブートローダー:
    ブートデバイスからOSを読み込み、実行するプログラム。GRUBやWindows Boot Managerなどが代表的なブートローダー。
  7. MBR (Master Boot Record):
    BIOS方式で使用されるブートプロセスの一部。ブートローダーやパーティションテーブルなどの情報を含むセクター。
  8. GPT (GUID Partition Table):
    UEFI方式で使用されるパーティションテーブルの形式。MBRよりも大容量のドライブや複数のOSをサポートする。
  9. EFIシステムパーティション:
    UEFI方式で使用されるシステムパーティション。ブートローダーやUEFIファームウェアのファイルが格納される。
  10. セキュアブート:
    UEFIで使用されるセキュリティ機能。ブートプロセスやOSが改ざんされていないことを検証し、信頼できるものであるかを確認する。

これらの用語は、コンピュータの起動プロセスやファームウェア、ブート方式などに関連する概念を理解するのに役立ちます。





これ以降で説明しているBIOSは、現在のパーソナルコンピューターやサーバーではUEFIに置き換えられています。
また、Windows 11は、UEFI(Unified Extensible Firmware Interface)をサポートするシステムでのみインストールおよび実行できます。つまり、Windows 11を実行するためには、UEFIが有効なシステムが必要です。

この項目では、インテルアキテクチャについて限って説明します。 なので、スマートホンやタブレットあるいはiPhoneやiPadなど多くのARMアーキテクチャやそれ以外のアーキテクチャについては適用できない部分もあります。また、アーキテクチャだけに限定されません。

システムの起動

編集
  1. コンピューターの電源を入れるなどしてシステムが起動されるときに、まずパワーオンセルフテスト(POST)が起動します

POSTとは、コンピューターなどのデジタル電子機器の電源を入れた直後に、ファームウェアやソフトウェアのルーチンによって実行される処理のことです。

ここでは主にパソコンのPOSTについて説明しますが、家電製品、航空電子機器、通信機器、医療機器などの多くの組み込みシステムにも、電源投入時に自動的に起動されるセルフテストのルーチンがあります。

POSTの結果は、機器の一部であるパネルに表示されたり、外部機器に出力されたり、診断ツールで検索できるように保存されたりします。セルフテストでは、通常の人間が読めるディスプレイが機能していないことが検出される可能性があるため、エラーコードを点滅やビープ音で表示するためのインジケータランプやスピーカを備えてもよい。POSTプロセスは、テストを実行するだけでなく、ファームウェアから機器の初期状態を設定することもある。

コンピュータの場合、POSTルーチンはデバイスのプリブートシーケンスの一部であり、POSTルーチンが正常に完了すると、ブートストラップローダーコードが起動してオペレーティングシステムがロードされる。

POSTの主要な働きとしては

  • ハードウェアの初期化と診断
  • ハードウェアの検出
  • ファームウェアへの処理の引継ぎ

など

があります。

BIOS(Basic Input/Output System)は、レガシーなファームウェアシステムであり、かつてはパーソナルコンピュータで広く使用されていました。BIOSは、コンピュータの起動時にハードウェアを初期化し、オペレーティングシステムを読み込む役割を果たします。

しかし、BIOSにはいくつかの制約があり、特に大規模で高度な機能が求められる現代のシステムにおいては限界がありました。これに対して、UEFI(Unified Extensible Firmware Interface)はBIOSの後継として開発され、より柔軟で先進的なファームウェアインターフェースを提供しています。

UEFIは、BIOSよりも多くの機能を持ち、高度なセキュリティ、ネットワーキング機能、先進的な起動手順などをサポートしています。また、UEFIは32ビットおよび64ビットアーキテクチャをサポートし、BIOSよりも柔軟な開発環境を提供しています。

また、Windows 11は、UEFI(Unified Extensible Firmware Interface)をサポートするシステムでのみインストールおよび実行できます。つまり、Windows 11を実行するためには、UEFIが有効なシステムが必要です。

現代のパーソナルコンピュータやサーバーでは、UEFIが主流となりつつあり、新しいハードウェアやオペレーティングシステムがUEFIに対応しています。しかし、一部のレガシーシステムや一部の組み込み機器などでは、今でもBIOSが使用されていることがあります。

IBM互換機のPOST

編集

IBM PC互換機では、POSTの主な役割はBIOSが担っていますが、特にビデオやSCSIの初期化など、特定の周辺機器を初期化するために設計された他のプログラムにその役割の一部を委ねることがあります。これらのプログラムは一般的にオプションROMと総称され、個々にはビデオBIOSやSCSI BIOSなどと呼ばれています。

POST時のメインBIOSの主な役割は以下の通りです。

  • CPUレジスタの確認
  • BIOSコード自体の整合性の確認
  • DMA、タイマー、割り込みコントローラなどの基本コンポーネントの確認
  • メインメモリの初期化、サイズ、および検証
  • BIOSの初期化
  • 他の専門的な拡張BIOSに制御を渡す(インストールされている場合)。
  • ブート可能なデバイスの識別、整理、選択

上記の機能は、最初のバージョンまでのすべてのBIOSでPOSTによって提供されています。それ以降のバージョンのBIOSでは、POSTは以下の機能も備えています。

  • チップセットの初期化
  • すべてのシステムバスとデバイスを検出、初期化、カタログ化します。
  • システム設定のためのユーザーインターフェースの提供
  • ターゲットのOSが必要とするシステム環境を構築する。

(初期のBIOSでは、POSTはブートデバイスの整理や選択を行わず、単にフロッピーディスクやハードディスクを特定し、システムは常にその順番で起動しようとしました)

BIOSは、プロセッサがリセットされるとPOSTを開始します。CPUが最初に実行しようとするメモリの場所は、リセットベクタと呼ばれます。ハードリブートの場合、ノースブリッジは、このコードフェッチをシステムフラッシュメモリ上にあるBIOSに指示します。ウォームブートの場合、BIOSはRAMの適切な場所に配置されており、ノースブリッジはリセットベクターコールをRAMに向けます。(チップセットが標準装備される以前のPCシステムでは、BIOS ROMはリセットベクターを含むアドレス範囲に配置されており、BIOSはROMから直接実行されていました。マザーボードのBIOS ROMがコンベンショナルメモリマップのセグメントF000にあるのはこのためです)。

現代のBIOSのPOSTフローの中で、BIOSが最初にすべきことの1つは、実行している理由を決定することです。例えば、コールドブートの場合は、すべての機能を実行する必要があります。しかし、システムが省電力やクイックブート方式をサポートしている場合、BIOSは標準的なPOSTのデバイス検出を回避し、事前にロードされたシステムデバイステーブルからデバイスを単純にプログラムすることができるかもしれません。

PCのPOSTフローは、非常にシンプルでわかりやすいプロセスから、複雑で入り組んだプロセスへと発展してきました。POSTの間、BIOSは、簡単なメモリテストとセットアップ画面が表示されるだけで、PCがサポートすることが期待されるハードウェアとOSのマトリックスのために、多数の競合、進化、さらには相互に排他的な標準とイニシアティブを統合しなければなりません。

2000年前後の初期のBIOSでは、POSTは、完全なメモリテストを含むすべてのデバイスの完全なテストを行いました。IBMのこの設計は、コールドスタートプロセスの一部として完全なハードウェアテストを実行する大型システム(メインフレームなど)に倣ったものです。PCのプラットフォームが一般消費者向けに進化するにつれ、メインフレームやミニコンピュータにヒントを得た、パリティメモリやPOSTごとの徹底したメモリテストなどの高信頼性機能は、ほとんどのモデルで廃止されました。これには、PCのメモリサイズが指数関数的に大きくなり、それに伴ってメモリの価格も指数関数的に下がったことが影響しています。これは、あるCPUを使ったメモリテストの時間がメモリサイズに正比例するためです。