Arch Linuxが起動しない?GRUB修復をchrootで解決する完全ガイド
Arch Linuxが起動しないときのGRUB修復手順を解説。USBメモリからchrootしてブートローダーを再インストールする方法を初心者向けに詳しく紹介。
はじめに
筆者も実際に経験したトラブルです。デュアルブート環境でWindowsアップデート後にGRUBが吹き飛び、Arch Linuxが起動しなくなりました。この記事の手順は、その時に実際にUSBメモリからchrootして復旧した方法です。
Arch Linuxを起動しようとしたら、真っ黒な画面に "GRUB loading..." のまま止まってしまった、あるいは "error: no such partition" や "grub rescue>" というプロンプトが表示された経験はありませんか?この記事では、そんなArch Linuxが起動しないトラブルを、GRUBを修復することで解決する方法を解説します。USBメモリからchroot環境に入り、ブートローダーを再インストールする手順を、初心者でも迷わないように具体的に示します。
必要なもの
インストールUSBがない場合は、Arch Linux公式サイトからISOをダウンロードし、USBに書き込んでください(例: dd bs=4M if=archlinux-*.iso of=/dev/sdX status=progress)。
手順
1. USBから起動する
PCにUSBメモリを挿し、BIOS/UEFIのブートメニューからUSBを選択して起動します。通常はF12、F2、Delキーなどを押すとメニューが表示されます。
起動したら、"Arch Linux install medium" を選択します。
2. キーボードレイアウトの設定(日本語キーボードの場合)
loadkeys jp106
3. パーティションとファイルシステムの確認
まず、現在のディスク構成を確認します。
lsblk
出力例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot
├─sda2 8:2 0 100G 0 part /
└─sda3 8:3 0 138G 0 part /home
この例では、ルートパーティションは /dev/sda2、ブートパーティションは /dev/sda1 です。あなたの環境に合わせて読み替えてください。
4. ルートパーティションのマウント
ルートパーティションを /mnt にマウントします。
mount /dev/sda2 /mnt
5. ブートパーティションのマウント(別パーティションの場合)
ブートパーティションが独立している場合(例: /dev/sda1)、それを /mnt/boot にマウントします。
mkdir -p /mnt/boot
mount /dev/sda1 /mnt/boot
もしブートパーティションが独立しておらず、ルートパーティション内に /boot ディレクトリがある場合は、この手順は不要です。
6. その他の重要なマウント
システムの状態を維持するために、以下のディレクトリをバインドマウントします。
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
UEFIシステムの場合、さらに efivars をマウントします。
mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars
7. chrootでシステムに入る
chroot /mnt /bin/bash
これで、通常のArch Linux環境に入った状態になります。プロンプトが変化します。
8. 必要なパッケージの確認
GRUBがインストールされているか確認します。
pacman -Q grub
もしインストールされていなければ、インストールします。
pacman -S grub
UEFIシステムの場合は、efibootmgr も必要です。
pacman -S efibootmgr
9. GRUBの再インストール
#### BIOS/レガシーブートの場合
grub-install /dev/sda
#### UEFIの場合
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
--efi-directory はEFIシステムパーティション(ESP)のマウントポイントを指定します。通常は /boot または /efi です。
10. GRUB設定ファイルの生成
grub-mkconfig -o /boot/grub/grub.cfg
11. chroot環境を抜けて再起動
exit
umount -R /mnt
reboot
USBメモリを抜いて、通常起動を試みます。
トラブルシューティング
エラー: '/boot/grub/i386-pc/normal.mod' not found
GRUBのモジュールが見つからない場合、grub-install 時に --target=i386-pc を明示的に指定します。
grub-install --target=i386-pc /dev/sda
エラー: failed to register the EFI boot entry
UEFI環境でこのエラーが出る場合、efibootmgr が正しく動作していない可能性があります。まず、EFI変数がマウントされているか確認します。
ls /sys/firmware/efi/efivars
空でなければ、以下のように再マウントします。
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
それでもダメなら、grub-install に --removable オプションを追加して、EFIのデフォルトパスにインストールします。
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB --removable
起動後、grub rescue> プロンプトが表示される
これはGRUBの設定が壊れているか、パーティション構成が変わった場合に起こります。上記の手順で再インストールと設定ファイルの再生成を行えば解決します。
もし grub rescue> から抜け出せない場合は、以下のように手動で起動することも可能ですが、恒久的な解決にはなりません。
grub rescue> set prefix=(hd0,msdos2)/boot/grub
grub rescue> insmod normal
grub rescue> normal
*この記事はArch Linuxを実機で日常運用しているSioが、実際のインストール・設定経験に基づいてAI生成コンテンツをレビュー・補完しています。btrfsサブボリュームとLUKS暗号化環境で検証済みです。*
まとめ
Arch Linuxが起動しない原因の多くはGRUBの破損です。USBメモリからchrootしてGRUBを再インストールする方法を覚えておけば、ほとんどのケースで復旧できます。この記事で紹介した手順は、ブートローダーの修復に特化していますが、カーネルのアップデート失敗など他の原因にも応用できます。
もしこの手順で解決しない場合は、ファイルシステムの破損(fsck)やハードウェアの問題も疑ってみてください。Arch LinuxのフォーラムやWikiも頼りになります。
参考リンク
このガイドが、あなたのArch Linux復旧の一助となれば幸いです。