/boot/efiとは?Linuxの起動に不可欠なディレクトリを徹底解説

Linux

Linuxシステムのディレクトリ構造を見ていると、「/boot/efi」という謎のフォルダを見かけたことはありませんか?

「なんだかブート関連らしいけど、触っていいのかな?」「中身を見ても何が何だか…」

実はこのディレクトリ、パソコンの起動に欠かせない、とても重要な場所なんです。でも、普段は意識することがないので、その役割を知らない方も多いはず。

この記事では、/boot/efiディレクトリの役割から、中身の確認方法、トラブルシューティングまで、初心者の方にも分かるように丁寧に解説していきます。

Linuxシステムの起動の仕組み、一緒に見ていきましょう!


スポンサーリンク

/boot/efiとは?基本を理解しよう

EFIシステムパーティションのマウントポイント

/boot/efiは、EFIシステムパーティション(ESP)がマウントされるディレクトリです。

「マウント」とは、ストレージ上のパーティションをLinuxのディレクトリとして使えるようにすること。外付けHDDを接続して使えるようにするイメージですね。

つまり、/boot/efiというフォルダの実体は、実はストレージ上の特別な領域なんです。

EFI/UEFIとは何か

ここで、EFI(Extensible Firmware Interface)UEFI(Unified EFI)について説明しておきましょう。

UEFIは、パソコンの電源を入れた時、OSが起動する前に動作するファームウェア。

従来のBIOS(Basic Input/Output System)に代わる、現代的な起動システムなんです。

UEFIの特徴:

  • 2TB以上の大容量ディスクに対応
  • 高速な起動
  • GUIでの設定画面
  • セキュアブート機能
  • ネットワーク機能

2010年代以降に製造されたパソコンは、ほぼすべてUEFIを搭載しています。

なぜ専用パーティションが必要なのか

UEFIシステムでは、ブートローダー(OSを起動するプログラム)を特別な場所に配置する必要があります。

それがEFIシステムパーティション

このパーティションは、OSから独立した専用領域として確保され、/boot/efiにマウントされるわけです。


/boot/efiの役割と重要性

このディレクトリが担っている重要な役割を見ていきましょう。

1. ブートローダーの保存場所

最も重要な役割は、ブートローダーを保存すること

ブートローダーとは:

OSを起動するための小さなプログラム。Linuxでは主にGRUB(Grand Unified Bootloader)が使われます。

UEFIは起動時、/boot/efi内のブートローダーを読み込んで、Linuxを起動するんです。

2. 複数OSの起動管理

デュアルブートやマルチブート環境では、/boot/efiが特に重要。

WindowsとLinux、複数のLinuxディストリビューションなど、異なるOSのブートローダーがすべて/boot/efiに配置されます。

起動時に「どのOSを起動するか」選べるのは、このディレクトリのおかげなんですね。

3. 起動設定の管理

UEFIの起動順序や設定情報も、この領域に保存されます。


/boot/efiの中身を見てみよう

実際にどんなファイルが入っているか、確認してみましょう。

中身を確認する方法

ls -la /boot/efi

通常、以下のような構造になっています。

/boot/efi/
└── EFI/
    ├── BOOT/
    │   └── BOOTX64.EFI
    ├── ubuntu/
    │   ├── grubx64.efi
    │   ├── shimx64.efi
    │   └── grub.cfg
    └── Microsoft/
        └── Boot/
            └── bootmgfw.efi

主要なディレクトリとファイル

EFI/ディレクトリ

すべてのブートローダーが格納される最上位ディレクトリ。

EFI/BOOT/

デフォルトのブートローダーが入る場所。

  • BOOTX64.EFI:64ビットx86システム用のデフォルトブートローダー

UEFIは、特定のOSが選ばれていない場合、このファイルを実行します。

EFI/ubuntu/(ディストリビューション名)

Ubuntu(または他のLinuxディストリビューション)専用のブートローダー。

  • grubx64.efi:GRUB2のEFIブートローダー
  • shimx64.efi:セキュアブート対応の署名済みブートローダー
  • grub.cfg:GRUBの設定ファイル

EFI/Microsoft/

Windowsがインストールされている場合に存在。

  • bootmgfw.efi:Windowsのブートマネージャー

デュアルブート環境では、LinuxとWindowsの両方のブートローダーがここに共存するんです。

ファイルシステム

/boot/efiは、通常FAT32ファイルシステムでフォーマットされています。

これは、UEFIファームウェアがFAT32しか読めないためです。

# ファイルシステムの確認
df -Th | grep efi

実行結果例:

/dev/sda1  vfat  512M  45M  467M   9% /boot/efi

vfat(FAT32)でフォーマットされているのが分かります。


/boot/efiのサイズと要件

EFIシステムパーティションには、どれくらいの容量が必要なのでしょうか。

推奨サイズ

最小要件:100MB

技術的には100MBでも動作しますが、余裕を持たせるのが安全です。

推奨サイズ:512MB〜1GB

複数のOSをインストールする予定があるなら、512MB以上を推奨します。

  • 単一のLinux:512MBで十分
  • デュアルブート(Linux + Windows):512MB〜1GB
  • 複数のLinuxディストリビューション:1GB以上

容量不足の問題

/boot/efiがいっぱいになると、以下の問題が起きます。

  • カーネルアップデートが失敗する
  • 新しいOSをインストールできない
  • ブートローダーの更新ができない

定期的に容量を確認しましょう。

df -h /boot/efi

/boot/efiの確認とメンテナンス

日常的な管理方法を見ていきましょう。

マウント状態の確認

/boot/efiが正しくマウントされているか確認します。

mount | grep efi

実行結果例:

/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077)

マウントされていれば、このような表示が出ます。

パーティション情報の確認

sudo fdisk -l | grep -i efi

または

sudo parted /dev/sda print

EFIシステムパーティションには、通常「EFI System」というラベルが付いています。

fstabの確認

システム起動時に自動マウントされるよう、/etc/fstabに設定されているはずです。

cat /etc/fstab | grep efi

設定例:

UUID=XXXX-XXXX  /boot/efi  vfat  defaults  0  1

古いカーネルの削除

/boot/efiの容量を圧迫する主な原因は、古いカーネルファイルです。

現在使用中のカーネル確認:

uname -r

インストール済みカーネル一覧:

dpkg --list | grep linux-image

古いカーネルの削除(Ubuntu/Debian):

sudo apt autoremove --purge

このコマンドで、使われていない古いカーネルが自動的に削除されます。


トラブルシューティング

/boot/efi関連のよくある問題と解決方法です。

問題1:/boot/efiがマウントされていない

症状:

  • カーネルアップデートが失敗する
  • “update-grub”コマンドがエラーを出す

確認:

mount | grep efi

何も表示されなければ、マウントされていません。

解決方法:

# EFIパーティションのデバイス名を確認
sudo fdisk -l | grep -i efi

# 手動でマウント(/dev/sda1は環境により異なる)
sudo mount /dev/sda1 /boot/efi

# 再起動後も自動マウントされるよう設定
sudo nano /etc/fstab
# 適切なUUIDエントリを追加

問題2:容量不足でカーネル更新ができない

症状:

No space left on device

解決方法:

# 現在の使用状況確認
df -h /boot/efi

# 古いカーネルを削除
sudo apt autoremove --purge

# 不要なファイルを手動削除(上級者向け)
# ※注意:必要なファイルを削除するとブートできなくなります

問題3:ブートローダーが壊れた

症状:

  • システムが起動しない
  • “No bootable device”エラー

解決方法(Ubuntu/Debian):

Live USBから起動して、以下を実行:

# 既存のシステムをマウント
sudo mount /dev/sda2 /mnt  # ルートパーティション
sudo mount /dev/sda1 /mnt/boot/efi  # EFIパーティション

# 必要なディレクトリをバインドマウント
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

# chrootでシステムに入る
sudo chroot /mnt

# GRUBを再インストール
grub-install /dev/sda
update-grub

# 終了
exit
sudo reboot

問題4:デュアルブートでWindowsが起動しない

症状:

  • Linux起動後、Windowsブートエントリが消えた

解決方法:

# os-proberでWindowsを検出
sudo os-prober

# GRUBを更新
sudo update-grub

これで、Windowsのエントリが再度GRUBメニューに追加されます。


/boot/efiを別パーティションにする理由

なぜ/boot/efiは別パーティションになっているのでしょうか。

1. UEFIの仕様要件

UEFIファームウェアは、FAT32ファイルシステムしか読めません。

一方、Linuxのルートパーティションは通常ext4やbtrfs。

そのため、FAT32でフォーマットされた専用パーティションが必要なんです。

2. 複数OSの共存

1つのEFIシステムパーティションを複数のOSで共有することで、スムーズなマルチブート環境が実現できます。

3. セキュリティと安定性

ルートパーティションとは独立しているため、システムのトラブル時にも比較的安全です。

4. 標準化

すべてのUEFIシステムが同じ場所を見るため、互換性が高まります。


/boot と /boot/efi の違い

似た名前のディレクトリがありますが、役割が違います。

/bootディレクトリ

Linux自体が使う起動関連ファイルを保存。

主な内容:

  • カーネルイメージ(vmlinuz-*)
  • Initial RAMディスク(initrd.img-*)
  • System.map(カーネルシンボル情報)
  • GRUBの設定ファイル(grub.cfg)

ファイルシステムは通常ext4。

/boot/efiディレクトリ

UEFIファームウェアが読み込むブートローダーを保存。

主な内容:

  • EFIブートローダー(.efiファイル)
  • ブートマネージャー

ファイルシステムは必ずFAT32。

起動の流れ

  1. UEFIが/boot/efi内のブートローダーを実行
  2. ブートローダー(GRUB)が/boot内のカーネルを読み込む
  3. Linuxカーネルが起動してシステムが立ち上がる

/boot/efiと/bootは、起動プロセスの異なる段階で使われるんですね。


セキュアブートと/boot/efi

最後に、セキュアブートについて簡単に触れておきます。

セキュアブートとは

セキュアブートは、署名されたブートローダーだけを実行するUEFIの機能。

マルウェアによるブート改ざんを防ぐセキュリティ機能です。

shimx64.efi の役割

/boot/efi内のshimx64.efiは、セキュアブート対応の署名済みブートローダー。

Microsoftの署名を受けているため、セキュアブートが有効でもLinuxを起動できるんです。

起動の流れ:

  1. UEFIがshimx64.efiを検証・実行
  2. shimがgrubx64.efiを検証・実行
  3. GRUBがカーネルを起動

この多段階の検証で、セキュリティを保ちつつLinuxを起動できます。


まとめ:/boot/efiはシステムの要

/boot/efiディレクトリについて、ここまで詳しく見てきました。最後に要点を整理しておきましょう。

/boot/efiの重要ポイント:

  • EFIシステムパーティション(ESP)のマウントポイント
  • UEFIブートローダーが格納される場所
  • FAT32ファイルシステムでフォーマット
  • 推奨サイズは512MB〜1GB
  • 複数OSのブートローダーが共存できる

役割:

  • ブートローダー(GRUB)の保存
  • 複数OSの起動管理
  • UEFIとOSの橋渡し

メンテナンス:

  • 定期的な容量確認
  • 古いカーネルの削除
  • マウント状態の確認
  • バックアップの重要性

トラブル対策:

  • Live USBからの復旧方法を知っておく
  • GRUBの再インストール手順を理解
  • fstabの設定を確認

コメント

タイトルとURLをコピーしました