1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BIOSとUEFIってなんだ?〜PCの起動を支える2つのファームウェアを完全理解〜

1
Last updated at Posted at 2026-02-11

この記事の対象読者

  • PCを自作したことがある、または興味がある方
  • OSインストール時に「UEFI」「レガシーBIOS」で迷ったことがある方
  • Linuxのデュアルブート環境を構築したい方
  • 「なんとなく」でBIOS設定をいじっている方

この記事で得られること

  • BIOSとUEFIの根本的な違いの理解
  • なぜ今UEFIへの移行が進んでいるのかの背景知識
  • MBRとGPTの違いと、適切な選択基準
  • 自分のPCがどちらを使っているかの確認方法

この記事で扱わないこと

  • BIOSやUEFIの開発・カスタマイズ方法
  • Secure Bootの詳細な設定手順
  • 特定メーカーのBIOS/UEFI設定画面の操作方法

1. ある日のOS再インストール

「Windows cannot be installed to this disk. The selected disk is of the GPT partition style.」

自作PCにWindows 11を再インストールしようとしたとき、このエラーに遭遇した。GPT?何それ?MBRに変換すればいいの?でもそれだとデータ消える...?

調べていくうちに、これが単なるパーティション形式の問題ではなく、PCの起動方式そのものに関わる話だと気づいた。BIOSとUEFI、MBRとGPT。これらの関係性を理解していないと、OSインストールで詰むし、デュアルブートも正しく構成できない。

この記事では、PCの起動を支える2つのファームウェア「BIOS」と「UEFI」の違いを、歴史的背景から実践的な知識まで体系的に解説する。

ここまでで、なぜこの知識が必要かイメージできただろうか。次は、これらの用語を整理していこう。

2. 前提知識の確認

本題に入る前に、この記事で使う用語を整理しておく。

2.1 ファームウェアとは

ファームウェア(Firmware)とは、ハードウェアに組み込まれた低レベルのソフトウェアのこと。「ハード」と「ソフト」の中間という意味で「ファーム(firm = 固い)」と呼ばれる。PCの電源を入れてからOSが起動するまでの処理を担当する。

2.2 パーティションテーブルとは

パーティションテーブルとは、ストレージ(HDD/SSD)をどのように区切るかを記録したデータ構造のこと。「この領域はOSが入っている」「この領域はデータ用」といった情報を管理する。

2.3 ブートローダーとは

ブートローダー(Boot Loader)とは、ファームウェアから呼び出されてOSを起動するプログラムのこと。WindowsならWindows Boot Manager、LinuxならGRUBなどがこれに該当する。

これらの用語が押さえられたら、次に進もう。

3. BIOSとUEFIが生まれた背景

3.1 BIOSの誕生(1981年)

BIOSはBasic Input/Output Systemの略。1981年、IBMが初代IBM PC(Model 5150)を発売した際に搭載されたファームウェアだ。

当時のPCは8088プロセッサ(4.77MHz)、最大640KBのメモリという環境。BIOSは以下の役割を担っていた。

  1. POST(Power-On Self-Test): ハードウェアの初期化とテスト
  2. ブートローダーの呼び出し: ディスクの先頭セクタ(MBR)を読み込んで実行
  3. ランタイムサービス: キーボード入力やディスクアクセスのAPI提供

BIOSは16ビットリアルモードで動作し、アクセス可能なメモリは1MBに制限されていた。しかし、この仕様が40年以上にわたって互換性のために維持されてきた。

3.2 UEFIの誕生(2000年〜)

UEFIはUnified Extensible Firmware Interfaceの略。もともとはIntelが64ビットItaniumプロセッサ向けに開発した「EFI」が前身だ。

BIOSの限界が明らかになったのは2000年代半ば。

  • 2TBを超えるHDDが登場(MBRの32ビットアドレッシングでは扱えない)
  • 高速な起動への要求
  • セキュアブートの必要性

2005年、IntelはEFIの開発をUEFI Forumに移管。AMD、Apple、Dell、HP、Microsoft、Lenovoなど140社以上が参加する業界標準として発展した。

最新の仕様: 2024年12月にUEFI 2.11、ACPI 6.5a、PI 1.9が同時リリースされている。

背景がわかったところで、次は具体的な違いを見ていこう。

4. BIOSとUEFIの決定的な違い

4.1 アーキテクチャの違い

項目 BIOS UEFI
動作モード 16ビット リアルモード 32/64ビット プロテクトモード
アクセス可能メモリ 1MB 制限なし(64ビット空間)
ドライバ形式 INT 13h割り込み EFIドライバ(.efi)
設定保存先 CMOS RAM NVRAM
ユーザーインターフェース テキストベース GUI対応(マウス操作可)

4.2 起動プロセスの違い

BIOS + MBRの起動フロー

電源ON → POST → MBR読み込み → ブートローダー → OS
        ↑                    ↑
     16ビットモード      512バイトの制約

UEFI + GPTの起動フロー

電源ON → POST → ESP内の.efi検索 → ブートローダー → OS
        ↑                         ↑
    32/64ビットモード         ファイルシステム認識

UEFIはFAT32ファイルシステムを直接認識できるため、ESP(EFI System Partition)から直接ブートローダーを読み込める。これが起動高速化の一因だ。

4.3 パーティションテーブルの違い

項目 MBR GPT
最大ディスクサイズ 2TB 18EB(エクサバイト)
最大パーティション数 4(拡張パーティション使用で制限緩和) 128
冗長性 なし バックアップテーブルあり
整合性チェック なし CRC32チェックサム

GPTはディスクの末尾にバックアップテーブルを持つため、先頭が破損しても復旧の可能性がある。

4.4 セキュリティの違い

UEFIの最大の特徴の一つがSecure Boot。OSのブートローダーがデジタル署名されているか検証し、マルウェアによる起動プロセスの改ざんを防ぐ。

Secure Bootの信頼チェーン:

PK(Platform Key)
    ↓ 署名
KEK(Key Exchange Key)
    ↓ 署名
DB(Signature Database)
    ↓ 検証
OSブートローダー(.efi)

ただし、Secure Bootは完璧ではない。2024年には200以上のモデルで出荷時の鍵管理に問題がある「PKfail」脆弱性が発見されている。

基本的な違いが理解できたところで、実際に自分のPCを確認してみよう。

5. 実際に確認してみよう

5.1 Windowsでの確認方法

方法1: msinfo32コマンド

# PowerShellまたはコマンドプロンプトで実行
msinfo32

「システム情報」ウィンドウが開く。「BIOSモード」の項目を確認。

  • UEFI → UEFI起動
  • レガシ → BIOS起動

方法2: diskpartコマンド

# 管理者権限で実行
diskpart
list disk

「GPT」列に*があればGPTディスク。

5.2 Linuxでの確認方法

方法1: efivarsの存在確認

# このディレクトリが存在すればUEFI起動
ls /sys/firmware/efi/efivars

方法2: fdiskコマンド

sudo fdisk -l /dev/sda

出力に「Disklabel type: gpt」とあればGPTディスク。

5.3 設定ファイルテンプレート

GRUB設定(UEFI環境用): /etc/default/grub

# /etc/default/grub - UEFI環境での推奨設定

# タイムアウト設定
GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=menu

# デフォルトエントリ
GRUB_DEFAULT=0

# カーネルパラメータ
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# UEFI固有の設定
GRUB_DISABLE_OS_PROBER=false

# 解像度設定(UEFI環境ではGOPを使用)
GRUB_GFXMODE=1920x1080
GRUB_GFXPAYLOAD_LINUX=keep

GRUB設定(レガシーBIOS環境用): /etc/default/grub

# /etc/default/grub - レガシーBIOS環境での設定

# タイムアウト設定
GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=menu

# デフォルトエントリ
GRUB_DEFAULT=0

# カーネルパラメータ
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# レガシーBIOS固有の設定
# VGAモードを使用(GOPは使えない)
GRUB_GFXMODE=auto
GRUB_TERMINAL=console

GRUB設定(デュアルブート環境用): /etc/default/grub

# /etc/default/grub - Windows/Linuxデュアルブート環境

# タイムアウト(OS選択のため長めに)
GRUB_TIMEOUT=10
GRUB_TIMEOUT_STYLE=menu

# 最後に選択したOSを記憶
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

# カーネルパラメータ
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# 重要: Windows検出を有効化
GRUB_DISABLE_OS_PROBER=false

# 解像度設定
GRUB_GFXMODE=1920x1080
GRUB_GFXPAYLOAD_LINUX=keep

設定変更後は必ず以下を実行。

sudo update-grub

5.4 よくあるエラーと対処法

エラー 原因 対処法
Windows cannot be installed to this disk. The selected disk is of the GPT partition style. UEFIモードで起動していない BIOS設定でUEFIブートを有効化、またはCSMを無効化
The selected disk has an MBR partition table. BIOSモードで起動している BIOS設定でレガシーブートを有効化、またはディスクをGPTに変換
No bootable device found ESPが見つからない ESPの存在確認、ブート順序の確認
Secure Boot violation 署名されていないブートローダー Secure Bootを一時無効化、またはMOKに署名を登録
GRUB rescue > GRUBが破損 ライブUSBから起動してGRUB再インストール

実際の確認方法がわかったところで、次はどのような状況でどちらを選ぶべきかを見ていこう。

6. ユースケース別ガイド

6.1 新規PCの構築(2020年以降のハードウェア)

推奨: UEFI + GPT

理由:

  • 最新ハードウェアはUEFIのみ対応が増加(Intel、AMDともにCSM廃止の方向)
  • Windows 11はUEFI + Secure Boot必須
  • 高速起動、大容量ストレージ対応のメリット

確認コード(PowerShell):

# Windows 11互換性確認スクリプト
# UEFI/TPM/Secure Bootの状態を確認

# BIOSモード確認
$biosMode = (Get-WmiObject -Class Win32_ComputerSystem).BootupState
$firmwareType = (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -ErrorAction SilentlyContinue)

Write-Host "=== Windows 11 互換性チェック ===" -ForegroundColor Cyan

# UEFI確認
$uefiCheck = Confirm-SecureBootUEFI -ErrorAction SilentlyContinue
if ($uefiCheck) {
    Write-Host "[OK] UEFI: 有効" -ForegroundColor Green
} else {
    Write-Host "[NG] UEFI: 無効またはレガシーBIOS" -ForegroundColor Red
}

# Secure Boot確認
try {
    $secureBootState = Confirm-SecureBootUEFI
    Write-Host "[OK] Secure Boot: 有効" -ForegroundColor Green
} catch {
    Write-Host "[NG] Secure Boot: 無効" -ForegroundColor Red
}

# TPM確認
$tpm = Get-Tpm
if ($tpm.TpmPresent -and $tpm.TpmEnabled) {
    Write-Host "[OK] TPM: 有効(バージョン確認推奨)" -ForegroundColor Green
} else {
    Write-Host "[NG] TPM: 無効または非搭載" -ForegroundColor Red
}

# ディスクパーティション確認
$systemDisk = Get-Disk | Where-Object { $_.IsBoot -eq $true }
Write-Host "`nシステムディスク情報:"
Write-Host "  パーティションスタイル: $($systemDisk.PartitionStyle)"
Write-Host "  サイズ: $([math]::Round($systemDisk.Size / 1GB, 2)) GB"

6.2 古いPCの延命(2012年以前のハードウェア)

推奨: BIOS + MBR

理由:

  • UEFIに対応していない可能性
  • 32ビットOSが必要な場合
  • ドライバの互換性問題を回避

確認コード(Linux):

#!/bin/bash
# ハードウェア世代確認スクリプト

echo "=== システム情報 ==="

# CPU情報
echo "CPU:"
grep "model name" /proc/cpuinfo | head -1 | cut -d: -f2

# BIOSバージョン
echo -e "\nBIOS/UEFI情報:"
if [ -d /sys/firmware/efi ]; then
    echo "  起動モード: UEFI"
    cat /sys/firmware/efi/fw_platform_size 2>/dev/null && echo "bit モード"
else
    echo "  起動モード: レガシーBIOS"
fi

# DMI情報
echo -e "\nDMI BIOS情報:"
sudo dmidecode -t bios | grep -E "Vendor|Version|Release Date" | head -3

# ディスク情報
echo -e "\nディスクパーティション:"
lsblk -o NAME,SIZE,TYPE,PTTYPE | head -10

6.3 デュアルブート環境の構築

推奨: UEFI + GPT(統一すること)

重要: Windows と Linux を同じ起動方式に揃えないと、ブートローダーの管理が複雑になる。

確認・設定コード(Linux):

#!/bin/bash
# デュアルブート環境セットアップ確認スクリプト

echo "=== デュアルブート環境チェック ==="

# ESP(EFI System Partition)の確認
echo -e "\n1. ESP(EFI System Partition)確認:"
esp_partition=$(lsblk -o NAME,PARTTYPE,MOUNTPOINT | grep -i "c12a7328-f81f-11d2-ba4b-00a0c93ec93b")
if [ -n "$esp_partition" ]; then
    echo "   [OK] ESP検出: $esp_partition"
else
    echo "   [NG] ESPが見つかりません"
fi

# ESPのマウント状態
echo -e "\n2. ESPマウント状態:"
if mountpoint -q /boot/efi 2>/dev/null; then
    echo "   [OK] /boot/efi にマウント済み"
    ls -la /boot/efi/EFI/ 2>/dev/null
else
    echo "   [注意] /boot/efi 未マウント"
fi

# ブートエントリ確認
echo -e "\n3. UEFIブートエントリ:"
if command -v efibootmgr &> /dev/null; then
    efibootmgr -v 2>/dev/null | grep -E "Boot[0-9]+"
else
    echo "   efibootmgrがインストールされていません"
    echo "   インストール: sudo apt install efibootmgr"
fi

# os-prober確認(Windows検出用)
echo -e "\n4. Windows検出:"
if command -v os-prober &> /dev/null; then
    windows_detected=$(sudo os-prober 2>/dev/null | grep -i windows)
    if [ -n "$windows_detected" ]; then
        echo "   [OK] Windows検出: $windows_detected"
    else
        echo "   [注意] Windowsが検出されませんでした"
    fi
else
    echo "   os-proberがインストールされていません"
    echo "   インストール: sudo apt install os-prober"
fi

echo -e "\n=== 推奨アクション ==="
echo "1. sudo update-grub を実行してGRUB設定を更新"
echo "2. /etc/default/grub で GRUB_DISABLE_OS_PROBER=false を確認"

ユースケースが把握できたところで、この記事を読んだ後の学習パスを確認しよう。

7. 学習ロードマップ

この記事を読んだ後、次のステップとして以下をおすすめする。

初級者向け(まずはここから)

  1. BIOSってなんだ?〜PCの起源となった基本ファームウェアを徹底解説〜
  2. UEFIってなんだ?〜現代PCの起動を支える統一規格を完全理解〜

中級者向け(実践に進む)

  1. UEFI Specification Version 2.11 - 公式仕様書
  2. Arch Wiki - UEFI - 実践的なガイド
  3. Microsoft Learn - UEFI firmware requirements

上級者向け(さらに深く)

  1. TianoCore EDK II - UEFIのリファレンス実装
  2. NSA - Guidance for Managing UEFI Secure Boot - セキュリティガイダンス
  3. ACPI Specification Version 6.6 - 電源管理の詳細

8. まとめ

この記事では、PCの起動を支えるBIOSとUEFIについて以下を解説した。

  1. BIOSは1981年から続くレガシー規格で、16ビットモード・2TB制限などの制約がある
  2. UEFIは2000年代に登場した後継規格で、大容量ストレージ・高速起動・Secure Bootに対応
  3. MBRとGPTはパーティションテーブルの形式で、それぞれBIOSとUEFIに対応
  4. 新規構築ではUEFI + GPT一択、レガシーハードウェアではBIOS + MBRを検討

私の所感

正直、最初にこのエラーに遭遇したときは「なんでこんなややこしい仕組みになってるんだ」と思った。でも歴史を辿ると、40年以上にわたる互換性維持の努力が見えてきて、少し見方が変わった。

レガシーBIOSは「枯れた技術」として安定している一方、UEFIは現在進行形で進化している。2024年12月にも仕様が更新され、RISC-Vアーキテクチャへの対応が強化された。

これからPCを組む人、OSをインストールする人は、まず自分のハードウェアがどちらに対応しているかを確認してほしい。それだけで、トラブルの半分は回避できるはずだ。


参考文献


関連記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?