BIOSとUEFIを徹底解説:基本定義・歴史・機能・セキュリティ・運用

BIOSとは何か — 基本定義と役割

BIOS(Basic Input/Output System)は、コンピュータのマザーボード上に搭載されたファームウェアの一種で、電源投入時(POST: Power-On Self Test)からオペレーティングシステムに制御を引き渡すまでの初期化と管理を担当します。BIOSはハードウェアの初期化、デバイスの検出、ブートデバイスの選択、ブートローダの読み込み、そしてハードウェア機能への低レベルなアクセスを提供する基本サービス群を含みます。

歴史的背景と進化(BIOS → EFI → UEFI)

BIOSの概念はIBM PC(1981年)に始まり、当初はマザーボードに組み込まれたROM上のコードとして提供されました。IBM以降、AMI(American Megatrends)、Phoenix、AwardなどのベンダがBIOSを提供し、x86系PCの標準的なファームウェアとなりました。

1990年代末〜2000年代に入ると、古いBIOSには以下のような限界が顕在化しました:

  • 16ビットリアルモード中心であるためメモリや機能拡張が難しい
  • MBR(Master Boot Record)に依存するためパーティションやディスク容量の制約(2TBなど)
  • 拡張性・セキュリティ機能の不足

これらを解決するためにIntelがEFI(Extensible Firmware Interface)を開発し、その後業界標準としてUEFI(Unified Extensible Firmware Interface)へ発展しました。UEFIはプレインストールのドライバモデル、GPT(GUID Partition Table)対応、セキュアブートなどの機能を提供します。

BIOSの主要な機能

  • ハードウェア初期化(POST):CPU、メモリ、GPU、ストレージ、キーボードなどの基本コンポーネントを検査・初期化し、問題があればエラービープや表示で通知します。
  • デバイス検出と列挙:接続されたデバイスを検出し、ブート可能なデバイスのリストを作成します。
  • ブートシーケンスの制御:ユーザーが指定した順序に従ってブートデバイスを検索し、ブートローダ(MBRやUEFIブートローダ)を読み込みます。
  • BIOS設定(CMOS/NVRAM):日時設定、ブート順、CPU/メモリ設定、オンボードデバイスの有効/無効などを保持します。古典的にはCMOS RAMと電池(ボタン電池)で保持されましたが、近年はフラッシュやNVRAMに保存されます。
  • 低レベルAPIの提供:BIOS割り込み(例:INT 13hなど)を通じてOS前段階でデバイスを操作できました(レガシー)。UEFIでは標準化されたサービステーブルを提供します。
  • ファームウェアアップデート:BIOS/UEFI自体の更新(フラッシュ)によってバグ修正や機能追加が行えます。

電源投入からOS起動までの流れ(概要)

一般的なx86系PCの起動シーケンス(要点)は次のとおりです:

  • 電源投入 → 電源供給とリセット
  • CPUはリセットベクタのアドレスからファームウェアを実行(レガシーBIOSはリアルモード)。
  • POSTを実行して主要ハードウェアを検査。
  • ブートデバイスを列挙し、ブート順に従って候補デバイスからブートローダを読み込む(MBRやEFIシステムパーティション内のEFI実行ファイル)。
  • ブートローダがOSカーネルを読み込み、制御をOSに渡す。

レガシーBIOSではブートローダはMBR(先頭512バイト)に格納され、MBRはパーティションテーブルを参照します。UEFIではGPTを用い、EFIシステムパーティション(ESP)上のPE形式実行ファイル(.efi)を直接実行できます。

UEFIがもたらす主な改善点

  • 32/64ビット実行環境とドライバモデルにより、大容量メモリや複雑なデバイスを初期化しやすい。
  • GPT対応で大容量ディスクと多数パーティションをサポート。
  • セキュアブート(Secure Boot)により、ブート時の実行ファイル署名を検証しブートキットを防止。
  • UEFIシェル、ネットワークブート(PXEやHTTP Boot)、OSランタイムサービスなどの追加機能。
  • 変数ストア(NVRAM)により設定やブートエントリを柔軟に管理。

設定項目と実務での使い方

BIOS/UEFIの設定画面(セットアップユーティリティ)では、次のような項目がよく使われます:

  • ブート順の指定(SSD/HDD、USB、ネットワーク)
  • 日時(RTC)と電源管理(ACPI設定、Wake-on-LAN)
  • CPU機能のオン/オフ(仮想化支援機能 VT-x / AMD-V)
  • セキュリティ(BIOSパスワード、TPMの有効化、Secure Boot)
  • ストレージモード(AHCI/RAID)
  • オーバークロックと電圧/ファン制御(主に自作やワークステーション向け)

ファームウェア更新の方法とリスク

BIOS/UEFIの更新(フラッシュ)は機能改善・互換性向上・セキュリティ修正のために行われます。更新方法はメーカーと機種により異なり、一般的には以下の方法があります:

  • Windows用ユーティリティでの更新
  • UEFI内蔵の「フラッシュ機能」(USB経由)
  • Linuxでのfwupdや専用ツールを用いた更新
  • セキュリティ/復旧用のデュアルBIOS・リカバリモード(メーカー機能)

リスクとしては、更新中の電源断や不適切なファームウェアにより「ブリック(起動不能)」になる可能性があります。安全策としては、メーカー提供の正式なファームウェアを使用する、電源を安定化する、デュアルBIOSや回復手順を確認しておくことが重要です。

セキュリティの観点

BIOS/UEFIはOSよりも低位で動作するため、脆弱性が悪用されると非常に深刻です。代表的な対策と留意点:

  • Secure Boot:未署名のブートローダやカーネルの実行を防ぐ。
  • TPM(Trusted Platform Module):プラットフォーム整合性の確認やディスク暗号化(BitLocker等)との連携。
  • BIOSパスワード:セットアップ画面の不正変更を防止(ただし物理的回避手段もあり得る)。
  • ファームウェア署名検証と更新元の正当性確認。
  • SMM(System Management Mode)やIntel MEなど、BIOS周辺の補助ファームウェアの脆弱性にも注意。

歴史的にBIOS/UEFIを狙ったマルウェア(ブートキットやルートキット)が存在するため、最新のファームウェア適用とセキュリティ対策は必須です。

レガシー機能と互換性(CSMなど)

古いOSやデバイスとの互換性を保つため、多くのUEFI実装はCSM(Compatibility Support Module)を提供し、レガシーBIOS互換の動作をエミュレートします。ただし、新しいハードウェアやセキュリティ機能を利用する場合はCSMを無効にしてUEFIネイティブで動作させることが推奨されます。

オープンソースのBIOS/UEFI実装

商用のBIOS/UEFIに加えて、corebootやTianocore(EDK II)などのオープンソースプロジェクトも存在します。corebootは最小限の初期化を行い、Linuxカーネルや別のブートローダに素早く制御を渡す設計で、組込み機器や一部のノートPCで採用されています。TianocoreはUEFI互換の実装を提供します。

運用上のチェックリスト(管理者向け)

  • 定期的にファームウェアの最新情報とセキュリティアドバイザリを確認する。
  • ファームウェア更新手順と回復手順(リカバリモード、クリティカルリカバリツール)を事前に確認する。
  • 起動時のSecure Boot状態/TPMの有効化状態を把握する。
  • 重要なサーバーやワークステーションでは、テスト環境でまず更新を検証する。
  • BIOS設定のバックアップ(スクリーンショットや設定値メモ)を残す。

まとめ

BIOSはコンピュータのもっとも基礎的な層であり、ハードウェアとOSをつなぐ重要な役割を担います。近年はUEFIに置き換わりつつありますが、基本的な目的――ハードウェア初期化、自己診断、ブートの橋渡し――は変わりません。ファームウェアの更新やセキュリティ対策はシステム安定性と安全性に直結するため、運用者は仕様の違いやリスクを理解して適切に管理する必要があります。

参考文献