【 grub2-mkconfig/grub-mkconfig 】コマンド――GRUB 2の起動メニューを生成する:Linux基本コマンドTips(278)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、GRUB 2の起動メニューを生成する「grub2-mkconfig/grub-mkconfig」コマンドです。
本連載は、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
(生成した起動メニューを指定したファイルに書き込む)
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のように変化しました。
筆者紹介
西村 めぐみ(にしむら めぐみ)
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.