2026年5月17日
2026年5月17日
GRUBの設定変更と起動修復方法
はじめに
GRUBはLinuxの主要ブートローダで、カーネルの選択や起動パラメータの指定を担います。設定の変更は/etc/default/grubを編集しgrub-mkconfigを実行するのが基本ですが、誤った設定で起動できなくなった場合のレスキュー手順も知っておく必要があります。
本記事では、GRUBの設定変更からトラブル時のレスキュー操作までを段階的に解説します。
症状・背景
- カーネル起動パラメータを追加・変更したい
- デフォルトで起動するカーネルを切り替えたい
- 起動メニューのタイムアウトを変更したい
- GRUBが破損してOSが起動しないので修復したい
手順・設定方法
ステップ1: GRUB設定の基本変更
# 設定ファイル編集
sudo vi /etc/default/grub
# 主要設定例
# GRUB_DEFAULT=0 # デフォルトメニュー番号
# GRUB_TIMEOUT=5 # 表示秒数
# GRUB_CMDLINE_LINUX="quiet splash"
# 設定を反映(Debian/Ubuntu)
sudo update-grub
# RHEL/AlmaLinux
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
ステップ2: カーネルパラメータの追加
# 一時的にメニュー画面でeキー→該当行を編集→Ctrl+xで起動
# 永続化(/etc/default/grubに追記)
sudo sed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="\1 transparent_hugepage=never"/' \
/etc/default/grub
# 反映
sudo update-grub # または grub2-mkconfig
# 現在のパラメータ確認
cat /proc/cmdline
ステップ3: デフォルトカーネルの変更
# 利用可能なメニュー一覧
grep ^menuentry /boot/grub/grub.cfg | cut -d "'" -f2
# デフォルト番号を指定(0始まり)
sudo sed -i 's/^GRUB_DEFAULT=.*/GRUB_DEFAULT=0/' /etc/default/grub
sudo update-grub
# RHEL系のgrubbyで簡単指定
sudo grubby --set-default /boot/vmlinuz-$(uname -r)
sudo grubby --default-kernel
ステップ4: 起動不能時のGRUB修復
# Live CD/USBから起動した後、対象パーティションをマウント
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi # UEFIの場合
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
# chrootして修復
sudo chroot /mnt
grub-install /dev/sda # BIOS環境
grub-install --target=x86_64-efi --efi-directory=/boot/efi # UEFI環境
update-grub
# 終了
exit
sudo umount -R /mnt
注意事項
grub-installの対象は「ディスク全体」(/dev/sda)であり、パーティション(/dev/sda1)ではありません- UEFIではEFIシステムパーティションのマウントが必要です
- 設定変更後は再起動前に
grub.cfgが正しく生成されたかを必ず確認します - 古いカーネルを残しておくと、新カーネルで起動失敗時のフォールバックに役立ちます
まとめ
1. 設定編集: /etc/default/grubを変更しupdate-grubで反映
2. パラメータ追加: GRUB_CMDLINE_LINUXに書く
3. デフォルト変更: GRUB_DEFAULTまたはgrubby
4. 修復: Live環境+chrootでgrub-install
5. 検証: cat /proc/cmdlineで反映確認
関連記事: