Linuxの起動プロセスで見るBIOS/UEFIって何?

Linuxの起動プロセスで見るBIOS/UEFIって何?

Linuxの起動プロセスについてよく聞かれるのですが、プロセスの最初に行われるBIOS/UEFIってのがあります。
そもそもBIOSってなに?UEFIってなに?
こんな疑問に答えていきます。

Linuxについて勉強中のエンジニア4年目です。LPIC101・102の資格を目指しています。
わからないことを調べ、まとめたことを記事にして発信しています。
参考になったら嬉しいです。

Linuxの起動プロセス

まずはLinuxの起動プロセスを見てみましょう。
主に次の6ステップで起動されます。

Linux起動の6ステップ

  1. BIOS/UEFIの実行
     ・コンピュータの電源を入れると、まずBIOSまたはUEFIが起動します。
     ・ハードウェアの初期化(CPU、メモリ、デバイス検出など)を行い、次にブートデバイスを選択します。
  2. ブートローダーの起動
     ・ブートローダー(例:GRUBやsystemd-boot)がロードされます。
     ・ブートローダーは、カーネルイメージを選択してメモリにロードします。
     ・必要に応じて、カーネルオプション(例:シングルユーザーモード)を設定できます。
  3. Linuxカーネルの起動
     ・カーネルが起動し、システムのハードウェアやデバイスを認識します。
     ・カーネルはinitramfs(初期RAMディスク)を展開して基本的なシステムのセットアップを行います。
  4. initシステムの起動
     ・カーネルがinitプロセス(PID 1)を起動します。
     ・現代のLinuxでは、initの代わりにsystemdやUpstart、SysVinitが使用されることが一般的です。
  5. ターゲット/ランレベルの設定
     ・systemdではターゲット(例:multi-user.targetやgraphical.target)を読み込み、必要なサービスやデーモンを開始します。
     ・古いSysVinitでは、ランレベル(例:3や5)に応じてスクリプトを実行します。
  6. ログインプロンプトの表示
     ・サービスの起動が完了すると、ログイン画面が表示されます(CLIまたはGUI)。

BIOSとUEFI

Linux起動プロセスの最初に行われるBIOSもしくはUEFI。

これまでBIOSが主に活躍しておりましたが、現代のコンピュータでは、BIOSの代わりにUEFI が使用されることが多いです。
どうやら、BIOSからUEFIの過渡期にあるようです。

そこで、まずはBIOSの働きについて詳しく見ていきましょう。

BIOSとは

BIOSは、コンピュータが起動した直後に最初に実行されるプログラムです。
マザーボード上の不揮発性メモリ(通常はROMやフラッシュメモリ)に格納されています。
主な目的は、ハードウェアの初期化とオペレーティングシステム(OS)のブートプロセスをサポートすることです。

BIOSの主な働き

  1. ハードウェアの初期化
    コンピュータが起動すると、BIOSはまず各種ハードウェアの動作確認と初期化を行います。
    初期化対象には以下が含まれます。
    ・CPU:プロセッサの動作を開始。
    ・メモリ(RAM):メモリのテストと認識。
    ・ストレージデバイス:ハードディスクやSSD、光学ドライブの検出。
    ・キーボードやマウス:入力デバイスの初期化。
    ・ディスプレイ:ビデオカードやモニタの初期化。

    この初期化プロセスは、POST(Power-On Self Test) と呼ばれ、ハードウェアの正常性をチェックします。

  2. ブートローダーの起動
    ハードウェアの初期化が完了した後、BIOSはストレージデバイス(例:HDD、SSD、USBドライブ)の中からブート可能なデバイスを探します。
    ブートデバイスには優先順位が設定されており、BIOSはその順序に従ってブートローダーを探し、OSのカーネルをロードします。このプロセスは「ブートストラップ」とも呼ばれます。
  3. 設定の管理
    BIOSには設定画面(BIOSセットアップユーティリティ)があり、以下のような設定を管理できます。
     ・ブートデバイスの順序。
     ・システムクロックの設定。
     ・ハードウェア(CPU、メモリ)の動作モードやパフォーマンス設定。
     ・セキュリティ設定(例:パスワードやセキュアブート)。

    BIOS設定は通常、キーボードの特定のキー(例:F2、F12、Deleteなど)を押すことでアクセスできます。

  4. ハードウェアとソフトウェア間の仲介
    OSやソフトウェアがハードウェアを利用する際、BIOSは基本的な入出力操作をサポートします。たとえば、ディスクからデータを読み込む際の低レベルな操作を管理します。

BIOSとUEFIの違い

BIOSの働きを見たところで、ここではUEFIとの違いを見ていきましょう。

なぜ、現在のコンピュータにUEFIが使われるのか、その理由に注目してみていきましょう。

歴史的背景

まずは、歴史的背景を見ていきます。

・BIOS (Basic Input/Output System)
開発: 1981年、IBMがPCで初めて導入。
長年にわたって広く使われてきたが、技術的な制限が多く、現代のハードウェア要件に適応しにくい。
・UEFI (Unified Extensible Firmware Interface)
開発: 2000年代初頭にIntelがEFI(Extensible Firmware Interface)として開発し、その後UEFIフォーラムによって標準化。
BIOSの技術的な制約を克服するために設計され、現代のコンピュータの要件に適応可能。

BIOSとUEFIの主な違い

BIOSとUEFIの主な違いとして次の表にまとめました。

特徴 BIOS UEFI
インターフェース テキストベース(シンプルな画面) グラフィカル(マウス操作対応)
ブートモード レガシーブート(MBR方式) UEFIブート(GPT方式、セキュアブート対応
パーティション方式 MBR(最大2TB、4つのプライマリパーティション) GPT(最大18EB、128以上のパーティション)
初期化速度 比較的遅い 高速
ドライバ管理 固定されたハードウェアサポート モジュール化されたドライバで柔軟に対応
セキュリティ セキュリティ機能が限定的 セキュアブートなど高度なセキュリティ機能
拡張性 限定的 モジュール化され、ネットワーク起動や診断ツールが統合可能
互換性 古いハードウェアに対応可能 最新のハードウェア向けに設計

技術的な制限

技術的な制限として、MBR(BIOSで使用)とGPT(UEFIで使用)があります。
それぞれの違いを見てみましょう。

MBR (Master Boot Record)(BIOSで使用)
 ・パーティションサイズは最大2TB。
 ・プライマリパーティションは最大4つまで。
 ・古いデバイスやOSでは依然使用されるが、現代の大容量ストレージには対応困難。

GPT (GUID Partition Table)(UEFIで使用)
 ・理論上の最大サイズは18EB(エクサバイト)。
 ・パーティション数は128以上可能。
 ・パーティション情報のバックアップや自己修復機能を持つ。

UEFIが選ばれる理由

これまでの比較を踏まえ、UEFIが選ばれる理由とては次のことがあげられます。

  1. 大容量ストレージのサポート
    現代のコンピュータでは、2TB以上のストレージが一般的になっています。
     BIOSのMBRではこの制限を超えることができないため、GPTをサポートするUEFIが必要です。
  2. 高速なブートプロセス
    UEFIはハードウェアを効率的に初期化するため、BIOSよりも起動が速いです。
    さらに、特にSSDと組み合わせた場合、パフォーマンス向上が顕著です。
  3. セキュリティ機能の強化
     セキュアブート: 信頼された署名付きのOSブートローダーのみを許可することで、マルウェア(例:ルートキット)の侵入を防ぎます。
     また、OSやハードウェアの安全性が強化されるため、セキュリティが重要なデバイスで特に重視されます。
  4. モジュール化と拡張性
    ・UEFIはモジュール化された設計により、将来的な拡張が容易です。
    ・内蔵ネットワークサポートや診断ツール、リモート管理機能などを統合できます。
  5. モダンOSとの互換性
    最新のOS(例:Windows 11、Linuxの多くのディストリビューション)は、UEFIを前提に設計されています。
    そのため、Windows 11では、UEFIとセキュアブートが必須条件になっています。
  6. 互換性の確保
     ・レガシーモード:
       UEFIは、多くの場合BIOS互換モード(レガシーモード)を提供しており、古いOSやMBRパーティションとの互換性を確保しています。
     ・ハイブリッドシステム:
       いくつかのシステムでは、BIOSとUEFIを切り替えて使用可能です。

まとめ

UEFIは、BIOSの制限を克服するために設計され、現代の大容量ストレージ、高速起動、セキュリティのニーズに応える機能を持っています。
そのため、近年のコンピュータではUEFIが主流となっています。