Linux Mint ブートローダ (GRUB) の トラブル と 修復ノウハウ

低スペック PC 活用ノウハウ
Linux Mint (Cinnamon) の使い方 その-37
デュアルブート での ブートローダ (GRUB) トラブル と 修復ノウハウ
 
デュアルブート環境では、「GRUB」に関するトラブルに遭遇することが多々ある。これらのトラブルに対処するには、デュアルブート環境での起動の仕組みや、デュアルブートディスクのパーティション構成、それに「GRUB」に関するコマンドの使い方を理解していると対応がスムーズに行える。
 
電源を入れてから「GURBメニュー」が表示されるまでの、UEFI と GRUBの動作詳細
 
以下の記事を参考に、GURB に関するトラブルの調査や修復に役立てて頂きたい。
 
 

 

スポンサー リンク

 

 
 
 
 
 
1. デュアルブート環境での起動の仕組み
 
🟩 「GURBメニュー」が表示されるストーリー。
 
「GURBメニュー」が表示されるストーリー
 
🔹GPT方式のディスクには、パーティションエントリと呼ばれる領域があり、ここに、128個のパーティションのエントリが格納される。
 
🔹パーティションエントリに「ESP フラグ」が設定されていれば、EFIシステムパーティション(ESP)であることを示し、UEFI用のブートローダが格納されているパーティションになる。
 
🔹このパーティションエントリからESPを探し、ESPに格納されている「起動したいOSの名前」のディレクトリから、GRUB(例: grubx64.efi)をロードして実行する。
 
これで、「GURBメニュー」が表示され、起動するOSの選択が可能になる。
 

 🟥 電源を入れてから「GURBメニュー」が表示されるまでの、UEFI と GRUBの動作詳細。
 
電源を入れてから「GURBメニュー」が表示されるまでの、UEFI と GRUBの動作詳細
① マシンの電源投入 → UEFI ファームウェアがハードウェアを検出し初期化(POST)。

② UEFI ブートマネージャは NVRAM に保存された**Boot####**エントリと BootOrder を参照する。
  例:Boot0001 shimx64.efi、Boot0002 Windows Boot Manager、BootOrder: 0001,0002,...

③ 見つかった EFI アプリ(例:shimx64.efi / grubx64.efi / Windows の bootmgfw.efi)を読み込む。

④ Secure Boot 有効なら shimx64.efi を ESP に置き、shim が grubx64.efi を検証してから起動する。

⑤ EFI アプリとして起動された GRUB は、 /boot にある(grub.cfg)を探す。

⑥ GRUB がデバイス・ファイルシステム(/boot、LVM、暗号化など)を検出して grub.cfg を読み込む。

⑦ grub.cfg の設定に従い、メニューを表示または自動起動する(ここでユーザーにメニューが見える/見えないが決まる)。
 

 UEFI とは
 UEFI とは「Unified Extensible Firmware Interface」の略で、パソコンの起動時にハードウェアを初期化したり、HDDやSSDに格納されているOSを起動したりするのに使われる。
従来のBIOSの後継として開発され、高速な起動、より大きなディスク容量への対応、高度なセキュリティ機能(セキュアブートなど)が特徴です。

 
 

 GRUBとは
 コンピュータの起動時に、オペレーティングシステム(OS)をストレージから読み込んで起動する「ブートローダー」の一種で、GNUプロジェクトが開発したオープンソースソフトウェア(GNU GRUB:グヌー グラブ)であり、特にLinuxディストリビューションで標準的に使われています。GRUBは複数のOSをインストールしている場合に、起動するOSを選択するメニューを表示する役割も担います。

 
 
UEFI と GRUB の関係:
UEFIがGRUBを起動するブートローダーであり、GRUBがOSをロードします。
 
 
🟦 GRUB のインストール。
ほとんどの場合、GRUB は Linux のインストール時にデフォルトでインストールされ、設定される。ただし、何らかの理由で GRUB がインストールされていないか、または再度インストールする必要がある場合、grub を手動でインストールしなければならない。
 
📌 この典型的なケースが、
「Timeshift」を使った「スナップショット」の「Restore」で発生する。

⚡ 理由:
Live環境では GRUB が新しいディスクに自動でインストールされないため、「Restore」後に、GRUB を手動でインストールしなければならない。
 
GRUB のインストールコマンド:grub-install
 
 
 
2. 起動に関連するパーティションとその内容
 
🟢 GPT方式のパーティション構造。
 
GPT方式のパーティション構造
 
● 保護MBR:GPT非対応のツール等がMBRとしてアクセスしてGPTを破壊しないように空き地にしています。
● プライマリGPTヘッダ:実質的なGPTの先頭であり、諸情報(GPTバージョン、LBAサイズ、総ブロック数、GUID)などが書き込まれます。
● プライマリGPT・パーティションエントリ:LBA3番セクタから30セクタで、128パーティションのエントリを格納します。
● EFIシステムパーティション(ESP):UEFI用のブートローダを格納するパーティションです。
  • ESPはFAT32フォーマットと決められています。
  • 500MB以上の確保が推奨とされています。
  • パーティションエントリには、ESPを示すフラグを設定します。
● パーティション:MBRより多くのパーティションに分けることができます。
● バックアップGPT(セカンダリGPT):先頭のプライマリGPTのGPTヘッダ/パーティションエントリに同期します。
  • バックアップとして故障時の回復に利用されます。
 
 
🔵 デュアルブートディスクのパーティション構成(Linux Mint での分析)。
 
デュアルブートディスクのパーティション構成(Linux Mint での分析)
 
sudo fdisk -l:パーティション一覧の確認。
sudo fdisk -l:パーティション一覧の確認
 
df -h:マウントされているファイルシステムの確認。
df -h:マウントされているファイルシステムの確認
 
Linux Mint ディスク アプリで表示したパーティション構成
 
lsblk -f:ブロックデバイス一覧の表示。
lsblk -f:ブロックデバイス一覧の表示
 
sda6:Linux Mint の ルートディレクトリー / で、/boot ディレクトリーに「/boot/efi」と「/boot/grub」の2つが配置されている。
 
sda5:Linux Mint の ESP は、「/boot/efi」にマウントされていることが判る。
 
🟢 /boot/efi:sda5 Linux Mint ESP の内容。
 
/boot/efi:sda5 Linux Mint ESP の内容
 
「/boot/efi」には「EFI」しかなく、その下位の構造は以下のようになっている。
EFI/
├── Boot/
│   ├── BOOTX64.EFI            ← 予備ブートローダ
│   ├── fbx64.efi 
│   └── mmx64.efi 
│ 
├── linuxmint/
│   ├── BOOTX64.CSV 
│   ├── grub.cfg
│   ├── grubx64.efi	        ← GRUB 本体(最重要)
│   ├── mmx64.efi
│   └── shimx64.efi	        ←セキュアブートが有効なある場合
│ 
└── ubuntu/
      ├── BOOTX64.CSV 
      ├── grub.cfg
      ├── grubx64.efi	         ← GRUB 本体(最重要)
      ├── mmx64.efi
      └── shimx64.efi
 
🔎 EFI システムパーティション(ESP)の 中身を確認するには、次のコマンドを使うと便利である。
sudo ls -R /boot/efi/
-R:–recursive ディレクトリを指定した場合、再帰的に表示する。
 
※:Live環境では、ESP のマウントが必要。
ステップ1:マウントポイントを作る
sudo mkdir -p /mnt/esp

ステップ2:/dev/sda5 をマウント
sudo mount /dev/sda5 /mnt/esp

ステップ3:中身を確認
sudo ls -R /mnt/esp

-------------------------------------------------------
hp-mint@hpmint-400-220jp:~$ sudo ls -R /mnt/esp
/mnt/esp:
EFI

/mnt/esp/EFI:
BOOT  linuxmint  ubuntu

/mnt/esp/EFI/BOOT:
BOOTX64.EFI  fbx64.efi	mmx64.efi

/mnt/esp/EFI/linuxmint:
BOOTX64.CSV  grub.cfg  grubx64.efi  mmx64.efi  shimx64.efi

/mnt/esp/EFI/ubuntu:
BOOTX64.CSV  grub.cfg  grubx64.efi  mmx64.efi  shimx64.efi
-------------------------------------------------------

ステップ4:アンマウント
sudo umount /mnt/esp
 
🔹 Windows の EFI システムパーティション の中身を確認する場合。
sudo mount /dev/sda2 /mnt/esp
sudo ls -R /mnt/esp
 
 
🔵 /boot/grub の内容。
 
/boot/grub の内容
 
grub.cfg は、
Linuxのブートローダーである GRUB がオペレーティングシステム(OS)を起動するための設定を記述したファイルで、起動メニューに表示されるOSのリストや、各OSを起動するための具体的な設定(カーネルの場所や起動パラメータなど)が記述されている。
 
x86_64-efi ディレクトリ は、
UEFI モードで GRUB を使うための モジュールファイル(.mod)が大量に入っている場所です。
 
 
 
3. UEFIブートマネージャーを操作するコマンド
 
🧰 efibootmgr コマンド
マザーボード上の不揮発性メモリ (NVRAM) に保存されているUEFIブートマネージャーの操作コマンドです。
 • ブートエントリ: どのOSやブートローダーを起動するかを示すエントリの表示。
 • ブート順序 (BootOrder):これらのエントリをどの順番で試すかという設定。
 • 現在のブート (BootCurrent):現在起動しているシステムが使用したブートエントリ。
 • タイムアウト:ブートメニューの表示時間などの設定。
 
🔹 ブートエントリ一覧の表示
sudo efibootmgr
sudo efibootmgr -v
-v(--verbose)オプションを付けると、詳細なブートエントリを表示します。
 
ブートエントリ一覧の表示
 
🔹 ブート順序の変更
sudo efibootmgr -o 0003,0008,0000,0001,0002,0006,0004,0005
 
🔹 ブートマネージャーのタイムアウト秒数の変更
sudo efibootmgr --timeout 20
 
🔹 ブートエントリの名前の変更
(XXXX は Boot0001 などの番号)。
sudo efibootmgr -b XXXX -L "Linux Mint"
 
🔹 ブートエントリの削除
sudo efibootmgr -b XXXX -B
 
🔹 「Windows Boot Manager」の再登録
(--part 2 は Windows の EFI パーティション番号に合わせて変更)。
sudo efibootmgr --create --disk /dev/sda --part 2 --label "Windows Boot Manager" --loader "\EFI\Microsoft\Boot\bootmgfw.efi"
 
⚙️GRUBメニューの調整(任意)。
ターミナルで以下を実行することで、デフォルトOSや待機時間が変更できる。
sudo nano /etc/default/grub
 
GRUBメニューの調整
 
編集例:
GRUB_DEFAULT=2 :Windows Boot Managerをデフォルトにする場合(番号は環境による)
GRUB_TIMEOUT=20 :メニュー表示時間を20秒に変更
 
保存後に更新が必要:
sudo update-grub
 
 
 
4. ブートローダ (GRUB) の修復要領
 
 🔸トラブルの現象-1:GRUB(ブートローダ)のメニューが出力されることなく Windows が自動起動される。

 🔸トラブルの現象-2:「起動デバイスが見つかりません」
 → EFI エントリを手動で作成して対応する方法もあるが、「完全再構築」の方が容易。
 

デュアルブート環境で発生する「GRUB」に関するトラブルへの対応は・・・。
 
ブートローダ (GRUB) の修復 = GRUB の再インストール で、
GRUB の 「完全再構築」 が最も安全かつ容易です。
 
 
①.GRUB を ディスクのブート領域に再インストールするコマンド。
grub-install
 → EFI System Partition(ESP)に grubx64.efi を配置する
 
EFI System Partition(ESP)に grubx64.efi を配置する
 
②.GRUB の設定ファイル(/boot/grub/grub.cfg)を自動生成し直すコマンド。
update-grub (ラッパー(wrapper)コマンド)
 → grub-mkconfig -o /boot/grub/grub.cfg 
が実行される
 

GRUB の設定ファイル(/boot/grub/grub.cfg)を自動生成し直すコマンド

 
✅ UEFIモード の GRUB インストールコマンド
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=linuxmint
 
🔹 --target= プラットフォーム指定:x86_64-efi(UEFI 64bit:通常のPC)
 
🔹 --efi-directory= ESP のパス指定:/boot/efi
 
🔹 --bootloader-id= EFI でのフォルダ名:linuxmint
 
⚡ 実行される内容
 • /boot/efi/EFI/linuxmint/grubx64.efi を作成
 • /boot/grub/x86_64-efi に GRUB モジュールを生成
 • UEFI NVRAM にブートエントリ "linuxmint" を登録(efibootmgr が呼ばれる)
 
⚡ 実行される処理
 • ESP(/boot/efi)の中に GRUB EFI アプリを配置
 • /boot/grub/ に設定ファイルやモジュールを作成
 • UEFI ファームウェアにブート項目を追加
 
✅ GRUB を再生成するコマンド(例、Debian/Ubuntu 系)
sudo grub-mkconfig -o /boot/grub/grub.cfg
# または
sudo update-grub
 
⚡ grub.cfg(GRUB のメニュー)を作り直す
 
 
 
5. Live 環境での GRUB の修復「完全再構築」の手順
 
GRUB の修復(完全再構築)手順。
🟥 Live USB で起動し、「Live 環境」で端末を使って次の作業をする。

🔧 ① ルートパーティションをマウント
sudo mount /dev/sda6 /mnt

🔧 ② ESP をマウント(/dev/sda5:重要)
sudo mount /dev/sda5 /mnt/boot/efi

🔧 ③ 必要ディレクトリを bind mount
for i in /dev /dev/pts /proc /sys /run; do
  sudo mount --bind $i /mnt$i
done

🔧 ④ chroot で入る
sudo chroot /mnt

🔧 ⑤ GRUB を完全再インストール
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu

🔧 ⑥ GRUB メニューを再構築
update-grub

🔧 ⑦ chrootから抜ける
exit

🔧 ⑧ 再起動する
sudo reboot
 
この解決策(手順)は、
 • 別ディスクに GRUB をインストールしてデュアルブート設定にする
場合であっても、同じ要領でよい。
 
 

Linux Mint に関する記事一覧:
 

 

以上。
(2025.11.24)

 

 

スポンサー リンク

 

             

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください