LoginSignup
8
9

More than 3 years have passed since last update.

GRUBとGRUB2のブートパラメータの変更方法についてまとめてみた

Last updated at Posted at 2020-08-15

はじめに

GRUB2でブートパラメータの変更方法は1つしかないと思っていましたが
実は2パターン存在していました。(もしかしたらまだあるかも知れないけど)
せっかくなのでまとめてみようと思います。

まずは、GRUBの話から書いてみます。

GRUBの話

GRUBでは、/boot/grub/grub.conf
viコマンドなどで直接編集して使用していました。

このファイルを直接編集するのは、とても危険です。
余計な空白をいれてしまったり、改行を消してしまうと
それだけでシステムが立ち上がらなくなってしまいます。
(/bootは起動に関わるファイルが格納されているので繊細な部分です。)

GRUB2の話

そこで、
「設定ファイルといえば/etc以下なんだから、/etc/default/grubをviコマンドなどで変更しよう」
と運用方法が変更されました。

ただ、実際に起動時に使用しているのは、/boot/grub2/grub.cfgです。
どのように、このファイルへ反映させるかというと
grub2-mkconfigコマンドを使用します。

# grub2-mkconfig -o /boot/grub2/grub.cfg

検証

CentOS8.2.2004で確認していきます。

まずは、grub.cfgのバックアップをとります。

# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bk

デフォルトのブートパラメータを確認します。

# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

GRUB_CMDLINE値から「rhgb」と「quiet」を削除してみます。
ちなみに、この2つの文字列を削除すると、
OS起動時にブートログを表示をすることができます。
(デフォルトは、ブートログの表示を抑制します。)

# vi /etc/default/grub

# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
#GRUB_CMDLINE_LINUX="resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

このままでは、grub.cfgファイルには反映されていません。

# grep kernelopts /boot/grub2/grub.cfg
set default_kernelopts="root=/dev/mapper/cl-root ro resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet "

grub.cfgファイルに反映させます。

# grub2-mkconfig -o /boot/grub2/grub.cfg

# grep kernelopts /boot/grub2/grub.cfg
set default_kernelopts="root=/dev/mapper/cl-root ro resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap "

無事に反映されました。

/etc/default/grubを使わずに変更もできる

ようやく本題です。これが書きたかった

/etc/default/grubを編集する方法は、
LPICやLinuCなどのLinux認定試験の中で出てきました。

これ以外にも、grub2-editenvコマンドを使用することも可能です。

検証

今度は、grub2-editenvコマンドを使って変更してみます。
やりたいことは、先程削除した、「rhgb」と「quiet」を追加してみます。

まずは、先程同様に確認をします。

# grep kernelopts /boot/grub2/grub.cfg
set default_kernelopts="root=/dev/mapper/cl-root ro resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap "

grub2-editenvでも確認できます。

# grub2-editenv list | grep kernelopts
kernelopts=root=/dev/mapper/cl-root ro resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root 

ブートパラメータ情報は、/boot/grub2/grubenvに格納されています。

# grep kernelopts /boot/grub2/grubenv
kernelopts=root=/dev/mapper/cl-root ro resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap

ブートパラメータを変更します。

# grub2-editenv - set "kernelopts=root=/dev/mapper/cl-root ro resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"

変更できたか確認します。

# grub2-editenv list | grep kernel
kernelopts=root=/dev/mapper/cl-root ro resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet

変更できました!!

補足

CentOS6では、ブートローダはGRUBを採用しています。
設定ファイルは、/etc/grub/grub.confです。

CentOS7以降では、ブートローダはGRUB2を採用しています。
設定ファイルは、/etc/grub2/grub.cfgです。

まとめ

GRUB2ではブートパラメータの変更方法が2通りあることを確認しました。

1つ目は
/etc/default/grubを編集し、grub2-mkconfigで反映させていく方法

2つ目は
grub2-editenvを実行し、kerneloptsの値を変更する方法
こちらは、grub2-mkconfig -o /boot/grub2/grub.cfgを実行しないという特徴がありました。

8
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9