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で反映確認

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ