連載
» 2019年02月01日 05時00分 公開

Linux基本コマンドTips(278):【 grub2-mkconfig/grub-mkconfig 】コマンド――GRUB 2の起動メニューを生成する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、GRUB 2の起動メニューを生成する「grub2-mkconfig/grub-mkconfig」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、GRUB 2の起動メニューを生成する「grub2-mkconfig/grub-mkconfig」コマンドです。

grub2-mkconfig/grub-mkconfigコマンドとは?

 「grub2-mkconfig」は、GRUB 2(GNU GRand Unified Bootloader 2)の起動メニューを生成するコマンドです。環境設定ファイルに従い、grub.cfgを生成します。

 GRUB 2は、Linux環境でよく使われているブートローダーです。従来のGRUB(GRUB Legacy)とは異なり、GRUB 2ではメニューエントリーが自動生成されるようになり、編集用のコマンドが用意されているなどの変更が施されています。

 「grub2-mkconfig」コマンドは、CentOS 7以降などで利用可能です。Ubuntu 18.04 LTSでも「GRUB 2」を使用しますが、コマンド名は「grub-mkconfig」と異なります。コマンドの利用方法はgrub2-mkconfigと同じです。

 なお、起動メニューを生成するのではなく、既存の起動メニューからデフォルト値を指定したい場合は、「 grub2-set-default/grub-set-default」コマンド(第277回)を使用します。



grub2-mkconfig/grub-mkconfigコマンドの書式

grub2-set-default [オプション]

※[ ]は省略可能な引数を示しています。





grub2-mkconfig/grub-mkconfigの主なオプション

短いオプション 長いオプション 意味
-o ファイル名 --output=ファイル名 出力する設定ファイル名(指定しなかった場合は標準出力)

/etc/default/grubで使用する主な設定値

設定名 設定内容
GRUB_DEFAULT=値 デフォルトの起動メニュー(0から数える、デフォルトは0)。「saved」にした場合、最後に選択したメニュー(GRUB_SAVEDEFAULTに保存された値)またはgrub2-set-defaultコマンドで設定した値になる
GRUB_TIMEOUT=秒数 起動時の待ち時間
GRUB_TIMEOUT_STYLE=スタイル 起動時の待ち時間に表示するスタイルを「countdown」「hidden」「menu」で指定(デフォルトはmenu)
GRUB_TERMINAL_INPUT="値" GRUBへの入力端末を指定、複数指定したい場合は"console serial"のようにする
・console:標準端末
・serial:シリアルポート、ポート名を指定したい場合は「serial_ポート」とする
・at_keyboard:PC AT keyboard
・usb_keyboard:USB keyboard(PCのファームウェアがOS起動前のUSBキーボード入力をサポートしていない場合に使用)
GRUB_TERMINAL_OUTPUT="値" GRUBメニューの出力を「console」「serial」「serial_ポート」「gfxterm」「vga_text」などから指定
GRUB_TERMINAL="値" 「GRUB_TERMINAL_INPUT」と「GRUB_TERMINAL_OUTPUT」を同時に設定する(GRUB_TERMINAL="console serial"の場合、GRUB_TERMINAL_INPUTとGRUB_TERMINAL_OUTPUTが"console serial"になる)
GRUB_CMDLINE_LINUX="値" Linuxカーネル用のコマンドライン引数(全カーネルに共通で指定)
GRUB_CMDLINE_LINUX_DEFAULT="値" デフォルトエントリー用のコマンドライン引数(※1)
GRUB_DISABLE_RECOVERY=true リカバリー用のメニューを生成しない
GRUB_DISABLE_LINUX_UUID=true Linuxカーネル用のメニューエントリーでメディアの指定にUUIDを使用しない
GRUB_DISABLE_UUID=true メニューエントリーでメディアの指定にUUIDを使用しない
GRUB_DISABLE_OS_PROBER=true os-proberコマンドによる他OSの検出を行わない

※1 GRUB_DISABLE_RECOVERYが「true」ではない場合、カーネルごとにデフォルトエントリーと回復モード用のエントリーが生成される)





GRUB 2の起動メニューを生成する

 「grub2-mkconfig」で、設定ファイル(/etc/grub.d/と/etc/default/grub)に従って、GRUB 2の起動メニューを生成します。実行にはroot権限が必要です。sudoコマンド(第68回)などを利用してください。

 生成した結果をデフォルトでは画面に出力するため、設定を保存したい場合は「-o」オプションで出力先を指定します。例えば、/boot/grub2/grub.cfg(※2)に保存したい場合は「grub2-mkconfig -o /etc/grub2.cfg」のように実行します。

※2 /etc/grub2.cfgは「/boot/grub2/grub.cfg」へのシンボリックリンク。Ubuntuの場合は「/boot/grub/grub.cfg」を使用。なお、Ubuntuの場合「update-grub」コマンドを使うと「/boot/grub/grub.cfg」を更新します(grub-mkconfig -o /boot/grub/grub.cfg 相当)。



 なお、grub2-mkconfigは起動用のファイルを生成するため、誤った内容に上書きしてしまう危険性があります。正常に動作しているgrub2.cfgファイルなどを別途バックアップすることをお勧めします。

 画面1では、実行結果を画面に出力し、出力結果から「menuentry」という単語(メニュー表示行に使われるキーワード)をgrepコマンドで絞り込んでいます。

 画面2では、cpコマンドで/etc/grub2.cfgを/etc/grub2.cfg.origにコピー(-iは上書きの際に確認するオプション、-pはタイムスタンプやパーミッションを保存するオプション)した上で、grub2-mkconfigの出力を/etc/grub2.cfgに保存しています。

コマンド実行例

grub2-mkconfig

(GRUB 2の起動メニューを生成する)

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

(生成した起動メニューを指定したファイルに書き込む)


画面1 画面1 生成した起動メニューからキーワードを検索したところ
画面2 画面2 設定をバックアップ後、起動メニューをディスクに書き込んだところ


GRUB 2の設定を変更する

 GRUB 2の設定は、/etc/default/grubと/etc/grub.d/に分かれています。/etc/default/grubは全体設定用のファイルで、メニューを表示している時間(GRUB_TIMEOUT)や、Linuxカーネル用のコマンドライン引数(GRUB_CMDLINE_LINUX)などを指定します。

 カスタムメニューは、/etc/grub.d/40_custom、/etc/grub.d/41_custom……などに分かれて保存されています。

 画面3ではCentOS 7のデフォルト設定を表示し、それを/boot/grub2/grub.cfgに書き込んでいます。起動メニューは画面4のようになりました。

 画面5ではGRUB_DISABLE_RECOVERYの設定を削除し、GRUB_DISABLE_OS_PROBER=trueを追加して、やはりgrub.cfgに書き込んでいます。すると、起動メニューは画面6のように変化しました。

画面3 画面3 デフォルト設定をファイルに書き込んだところ
画面4 画面4 画面3の設定による起動メニュー画面
画面5 画面5 設定を変更後、ファイルに書き込んだところ
画面6 画面6 画面5の設定による起動メニュー画面


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。