本章では、 openSUSE® Leap 内で使用されているブートローダである GRUB 2 について、その設定方法を説明しています。 なお、 YaST モジュールを利用すれば、ほとんどの重要な設定を行うことができます。起動処理そのものに関する説明は 第9章 「起動処理の紹介」 を、 UEFI 環境における Secure Boot サポートについては 第14章 「UEFI (Unified Extensible Firmware Interface)」 をそれぞれお読みください。
設定ファイルのファイル名が変更されています。
さらに多くのファイルシステム (例: btrfs など) に対応しています。
LVM や RAID デバイスに保存されているファイルを直接読み込むことができます。
ユーザインターフェイスを各国語に翻訳したり、テーマで置き換えたりすることができます。
追加のファイルシステムへの対応など、機能を追加するためのモジュールを読み込むことができるようになっています。
他のカーネルやオペレーティングシステム (例: Windows) を検索し、自動的にそれらの起動項目を作成する機能にも対応しています。
最小限の機能に絞った、 bash に似たコンソールが用意されています。
GRUB 2 の設定は、それぞれ下記のファイルが基本となっています:
/boot/grub2/grub.cfg
このファイルには、 GRUB 2 のメニュー項目に関する設定が記述されています。 GRUB Legacy では menu.lst
ファイルとして存在していたものですが、 grub.cfg
は grub2-mkconfig -o /boot/grub2/grub.cfg
コマンドで自動生成されるため、編集すべきではありません。
/boot/grub2/custom.cfg
このファイルは存在していなくてもかまわないファイルで、システムの起動時に grub.cfg
から参照され、起動メニューに独自の項目を追加するためのファイルです。 openSUSE Leap 42.2 以降では、 grub-once
を使用する際にもこれらの項目が処理されます。
/etc/default/grub
このファイルは、 GRUB 2 のユーザ設定を制御するためのファイルで、通常は背景やテーマなどの追加の環境設定が含まれます。
/etc/grub.d/
以下のスクリプトこのディレクトリ内にあるスクリプトは、 grub2-mkconfig -o /boot/grub2/grub.cfg
を実行する際に読み込まれます。これらのスクリプトの実行結果は、メインの設定ファイルである /boot/grub/grub.cfg
に組み込まれます。
/etc/sysconfig/bootloader
この設定ファイルには、ブートローダの種類や UEFI Secure Boot サポートの有効化可否など、基本的な設定が含まれています。
/boot/grub2/x86_64-efi
, これらの設定ファイルには、アーキテクチャ固有のオプションが含まれています。
GRUB 2 は様々な方法で制御を行うことができます。既存のメニュー内にある起動項目の選択であれば、グラフィカルなメニュー (スプラッシュスクリーン) から行うことができますし、そのメニューを表示している設定ファイルは /boot/grub2/grub.cfg
にあり、このファイルは他の設定ファイル類から生成される仕組みになっています (下記参照) 。なお、全ての GRUB 2 設定ファイルはシステムファイルですので、編集には root
の権限が必要となります。
GRUB 2 の設定ファイルを手作業で編集した場合は、それらを反映させるために grub2-mkconfig -o /boot/grub2/grub.cfg
を実行する必要があります。ただし、 YaST で設定を変更した場合は、 YaST が grub2-mkconfig
を呼び出しますので、後からこれを実行する必要はありません。
/boot/grub2/grub.cfg
ファイル #Edit source起動メニュー付きのグラフィカルなスプラッシュスクリーンは、 GRUB 2 の設定ファイル /boot/grub2/grub.cfg
をベースにして作成されます。このファイルには、メニューから起動することのできる全てのパーティションやオペレーティングシステムに関する情報が含まれています。
システムを起動する場合、 GRUB 2 はファイルシステムから設定ファイルを毎回読み込みます。このような構造から、 GRUB 2 では設定ファイルを変更しても、再インストールを行う必要はありません。 grub.cfg
はカーネルを追加したり削除したりするたびに、自動的に再構築されます。
また、 grub.cfg
は /etc/default/grub
ファイルと /etc/grub.d/
ディレクトリ内にあるスクリプトを利用して、 grub2-mkconfig -o /boot/grub2/grub.cfg
コマンドで生成されます。そのため、上記のファイルを手作業で編集することはお勧めできません。その代わり、関連するソースファイルや YaST の モジュールを利用して、設定ファイルを変更することをお勧めします。 YaST での設定方法について、詳しくは 12.3項 「YaST によるブートローダの設定」 をお読みください。
/etc/default/grub
ファイル #Edit sourceこのファイルには、 GRUB 2 に関する一般的なオプションが用意されています。たとえばメニュー画面を表示する時間や起動する既定の OS などです。利用可能な全てのオプションを表示するには、下記のコマンドの出力をお使いください:
>
grep "export GRUB_DEFAULT" -A50 /usr/sbin/grub2-mkconfig | grep GRUB_
なお、 /etc/grub.d
内のスクリプトから参照するため、独自のユーザ変数を設定することもできます。
/etc/default/grub
を編集したあとは、 grub2-mkconfig -o /boot/grub2/grub.cfg
を実行してメインの設定ファイルを更新してください。
このファイル内に書かれているオプションは、全ての起動項目に対して適用される汎用オプションです。 Xen ハイパーバイザ向けの固有オプションを設定したい場合は、対応する _XEN_
オプションのほうに記述してください。
スペース (空白) を含む複雑な文字列を指定したい場合は、引用符を利用して指定してください。また、引用符内はエスケープ処理を行う必要もあります。たとえば下記のようになります:
GRUB_CMDLINE_LINUX_XEN="debug loglevel=9 log_buf_len=5M \"ddebug_query=file drivers/xen/xen-acpi-processor.c +p\""
GRUB_DEFAULT
既定で起動する起動メニューの項目を指定します。数値やメニュー項目の完全な名前で指定することができるほか、 「saved」 を指定することもできます。
たとえば GRUB_DEFAULT=2
のように指定すると、 3 番目の (数値の場合は 0 から数えます) 起動メニュー項目を起動します。
また、 GRUB_DEFAULT="2>0"
のように指定すると、メニュー項目のトップレベルの 3 番目にあるメニュー内の最初のサブメニュー項目を起動します。
そのほか、 GRUB_DEFAULT="Example boot menu entry"
のように指定すると、 「Example boot menu entry」 というタイトルの起動メニュー項目を起動します。
GRUB_DEFAULT=saved
を指定すると、 grub2-once
や grub2-set-default
で指定された項目を起動するようになります。 grub2-reboot
では次回の再起動に対してのみ既定の起動項目を設定するのに対して、 grub2-set-default
では明示的に変更するまでの間、既定の起動項目を維持し続けるようになります。なお、 grub2-editenv list
を実行すると、次回の起動項目を一覧表示することができます。
GRUB_HIDDEN_TIMEOUT
ユーザがキーを押すまで待機する時間を秒単位で指定します。この待機時間中は、何もメニューを表示せず、ユーザがキーを押して初めて表示する動作になります。指定した時間、何もキー入力が行われないと、制御は GRUB_TIMEOUT
に渡ります。 GRUB_HIDDEN_TIMEOUT=0
を指定した場合は、まず Shift が押されているかどうかを確認し、押されていた場合はメニュー項目を表示し、押されていなかった場合は即時に既定のメニュー項目を起動するようになります。これは GRUB 2 で起動可能な OS が 1 つしか存在しない場合の、既定の動作でもあります。
GRUB_HIDDEN_TIMEOUT_QUIET
false
を指定すると、 GRUB_HIDDEN_TIMEOUT
の動作中、画面にカウントダウンタイマーだけを表示します。
GRUB_TIMEOUT
既定の起動項目を自動的に起動するまでの、起動メニューを表示してからの時間を秒単位で指定します。何かキーが押されるとカウントダウンは停止され、 GRUB 2 はいずれかの項目を選択するまで待ち続けるようになります。 GRUB_TIMEOUT=-1
を指定すると、いずれかの項目を選択するまで、ずっと待ち続けるようになります。
GRUB_CMDLINE_LINUX
この行に書かれた内容は、通常モードと修復モードの両起動項目の末尾に追加されます。起動項目にカーネルのパラメータを指定したい場合に使用します。
GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX
と同じような意味合いを持ちますが、こちらは通常モードの起動項目の末尾にのみ追加されます。
GRUB_CMDLINE_LINUX_RECOVERY
GRUB_CMDLINE_LINUX
と同じような意味合いを持ちますが、こちらは修復モードの起動項目の末尾にのみ追加されます。
GRUB_CMDLINE_LINUX_XEN_REPLACE
この項目は GRUB_CMDLINE_LINUX
を置き換えるための項目で、 Xen の起動項目にのみ適用されます。
GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT
GRUB_CMDLINE_LINUX_XEN_REPLACE
と同じような意味合いを持ちますが、こちらは GRUB_CMDLINE_LINUX_DEFAULT
のパラメータを置き換えるためのものです。
GRUB_CMDLINE_XEN
この行に書かれた内容は、 Xen ハイパーバイザの Xen メニュー項目のうち、通常モードと修復モードの両起動項目の末尾に追加されます。たとえば下記のようになります:
GRUB_CMDLINE_XEN="loglvl=all guest_loglvl=all"
Xen ハイパーバイザに対して指定可能な全てのオプションを確認したい場合は、 https://xenbits.xen.org/docs/unstable/misc/xen-command-line.html をお読みください。
GRUB_CMDLINE_XEN_DEFAULT
GRUB_CMDLINE_XEN
と同じような意味合いを持ちますが、こちらは通常モードの起動項目の末尾にのみ追加されます。
GRUB_TERMINAL
入出力を行う端末デバイスを有効化し、指定するための項目です。 console
(PC BIOS および EFI コンソール), serial
(シリアル端末), ofconsole
(Open Firmware コンソール), gfxterm
(グラフィックモード出力; 既定値) の中からいずれかを指定します。複数の端末を使用したい場合は、引用符で括って GRUB_TERMINAL="console serial"
のように指定します。
GRUB_GFXMODE
gfxterm
グラフィック端末で使用する解像度を指定します。ただし、指定可能な解像度はお使いのグラフィックカード (VBE) に依存します。既定値は ‘auto’ で、自動的に解像度を選択する動作を行います。なお、利用可能な解像度を一覧表示したい場合は、 GRUB 2 のコマンドラインから videoinfo
と入力して実行してください。コマンドラインは、 GRUB 2 の起動画面が表示されている状態で、 C を押すとアクセスすることができます。
解像度の設定に加えて、色数 (色深) も指定することができます。たとえば GRUB_GFXMODE=1280x1024x24
のようになります。
GRUB_BACKGROUND
gfxterm
グラフィカル端末で使用する背景画像を指定します。画像は GRUB 2 が起動時に読み込めるファイルでなければならず、 .png
, .tga
, .jpg
, .jpeg
のいずれかで終わるファイル名でなければなりません。また、必要であれば画面全体に適合するように拡大または縮小されます。
GRUB_DISABLE_OS_PROBER
このオプションを true
にすると、他のオペレーティングシステムの自動検出機能が無効化されます。 /boot/
内にあるカーネルと、 /etc/grub.d/
内にある独自のスクリプトからのオプションのみを検出します。
SUSE_BTRFS_SNAPSHOT_BOOTING
このオプションを true
にすると、 GRUB 2 が snapper のスナップショットから直接起動できるようになります。詳しくは 3.3項 「スナップショットからの起動によるシステムのロールバック」 をお読みください。
オプションの一覧については、 GNU GRUB マニュアル をお読みください。
/etc/grub.d
内にあるスクリプト #Edit sourceこのディレクトリ内にあるスクリプトは、 grub2-mkconfig -o /boot/grub2/grub.cfg
コマンド を実行する際に読み込まれます。これらのスクリプトの実行結果は、メインの設定ファイルである /boot/grub2/grub.cfg
に統合されます。 grub.cfg
でのメニュー項目内の順序は、このディレクトリ内の実行順になります。つまり、数字の小さいものが先に、大きいものが後に実行されることになります。たとえば 00_header
は、 10_linux
よりも前に実行されますし、 10_linux
は 40_custom
よりも前に実行されます。また、アルファベットで始まる名前のファイルが存在する場合は、数字で始まるファイルよりも後に実行されます。また、 grub2-mkconfig
の実行時には、実行可能なファイルのみが grub.cfg
に出力を行います。既定では /etc/grub.d
内にある全てのファイルが実行可能ファイルになっています。
grub.cfg
内のカスタマイズについて/boot/grub2/grub.cfg
は grub2-mkconfig
を実行するたびに上書きされる仕組みであるため、独自のカスタマイズを行っても、 grub2-mkconfig
が実行されるタイミングで消えてしまいます。/boot/grub2/grub.cfg
に直接書き込まなければならないカスタマイズがある場合は、そのカスタマイズ項目を下記の 2 つの行の間に記述してください:
### BEGIN /etc/grub.d/90_persistent ###
および
### END /etc/grub.d/90_persistent ###
これにより、 90_persistent
スクリプトが、その中のコンテンツを維持するようになります。
最も重要なスクリプトの一覧を下記に示します:
00_header
システムファイルの場所やディスプレイの設定、テーマや以前に保存されていた項目など、各種の環境変数を設定します。また、 /etc/default/grub
内に書かれている設定も取り込みます。通常は、このファイルを編集する必要はありません。
10_linux
ルートデバイス内の Linux カーネルを判別して、必要なメニュー項目を生成します。これには修復モード用のメニューの生成なども含まれます。ただし、最新のカーネルのみがメインメニューに表示され、それ以外のカーネルはサブメニュー内に表示されるように設定されます。
30_os-prober
このスクリプトは os-prober
を使用して、他の Linux や他のオペレーティングシステムを検出し、その結果を GRUB 2 メニューの形式で出力します。メニューの項目名には、それぞれ Windows や MacOS などの実際の名前が設定されます。
40_custom
このスクリプトは、 grub.cfg
内に独自の起動項目を追加するためのシンプルな方法を提供します。ただし、スクリプトの冒頭にある exec tail -n +3 $0
については、変更してはなりません。
処理順序は番号順で、小さい番号から大きい番号の順に行われます。同じ番号のスクリプトが存在した場合は、その後ろの文字のアルファベット順で実行されます。
/boot/grub2/custom.cfg
/boot/grub2/custom.cfg
ファイルを作成して独自の項目を設定すると、起動時にその内容が /boot/grub2/grub.cfg
の 40_custom
の直後に取り込まれるようになります。
GRUB Legacy では、 device.map
という設定ファイルを利用して BIOS のドライブ番号から Linux デバイス名を紐づけていました。ただし、 BIOS ドライブと Linux デバイス名のマッピングは、必ずしも正しいものであるとは言えませんでした。たとえば GRUB Legacy では、 BIOS の設定内で IDE ドライブと SCSI ドライブの起動順序を入れ替えたりすると、順序を誤って設定してしまうようなことがありました。
GRUB 2 では、 grub.cfg
を生成する際、デバイス ID 文字列 (UUID) やファイルシステムラベルを利用することで、この問題を解決しています。 GRUB 2 ユーティリティ側では、一時的なデバイスマップをその場で作成することで、特にディスク 1 台のみのシステムで正しく動作するようにしています。
しかしながら、 GRUB 2 の自動的なデバイスマッピングの仕組みが期待通りにならない場合があります。そのような場合は、独自のマッピングファイルを /boot/grub2/device.map
に作成してください。下記の例では、 ディスク 3
を起動ディスクとして使用しています。ただし、 GRUB 2 のパーティション番号は 1
から始まることに注意してください (GRUB Legacy では 0
から始まっていました) 。
(hd1) /dev/disk-by-id/ディスク 3 の ID (hd2) /dev/disk-by-id/ディスク 1 の ID (hd3) /dev/disk-by-id/ディスク 2 の ID
オペレーティングシステムが起動する前であっても、 GRUB 2 はファイルシステムにアクセスすることができます。 root の権限のない利用者であっても、ブートローダにさえアクセスできてしまえば、システムの起動後はアクセスできないようなファイルにも、アクセスできてしまいます。このような種類のアクセスを防止したり、メニュー項目を自由に選択できる状況を阻止したりしたい場合は、起動パスワードを設定することをお勧めします。
この設定を行うと、起動時にパスワードの入力を求められるようになります。言い換えると、システムは自動では起動しなくなります。
下記の手順で起動パスワードを設定します。下記の手順以外にも、 YaST (詳しくは をお読みください) でも設定することができます。
まずは grub2-mkpasswd-pbkdf2
を利用して、パスワードを暗号化します:
>
sudo
grub2-mkpasswd-pbkdf2 パスワードを入力してください: **** Reenter password: **** PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
出力された文字列を、 set superusers
コマンドと共に/etc/grub.d/40_custom
内に貼り付けます。
set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
内容をメインの設定ファイルに取り込むには、下記のように実行します:
>
sudo
grub2-mkconfig -o /boot/grub2/grub.cfg
システムを再起動すると、 GRUB 2 は起動メニューの項目を選択する際にユーザ名とパスワードの入力を求めるようになります。それぞれユーザ名には root
を、パスワードには grub2-mkpasswd-pbkdf2
で入力したパスワードを入力してください。両方の項目が正しく入力されると、システムは選択した項目を起動するようになります。
詳しくは https://www.gnu.org/software/grub/manual/grub/grub.html#Security をお読みください。
GRUB 2 では、認可レベルを設定して起動メニュー項目へのアクセスを制限することができます。具体的には、複数のユーザアカウントとパスワードを設定して、それぞれ異なるメニュー項目へのアクセス許可を設定することができます。 GRUB 2 でこのようなアクセス制限を設定するには、下記の手順を実施します:
まずは GRUB 2 内に設定したいユーザ名とパスワードを用意します。このとき、パスワードは 12.2.6項 「起動パスワードの設定」 で説明しているとおり、 grub2-mkpasswd-pbkdf2
を利用して暗号化しておきます。
/etc/grub.d/10_linux
ファイルを削除します。これにより、既定の GRUB 2 メニュー項目が作成されないようにすることができます。
あとは /boot/grub2/custom.cfg
ファイルを編集して、独自のメニュー項目を追加していきます。下記は例ですので、必要に応じて編集してお使いください:
set superusers=admin password admin 管理者パスワード password maintainer メンテナパスワード menuentry 'Operational mode' { insmod ext2 set root=hd0,1 echo 'Loading Linux ...' linux /boot/vmlinuz root=/dev/vda1 $GRUB_CMDLINE_LINUX_DEFAULT $GRUB_CMDLINE_LINUX mode=operation echo 'Loading Initrd ...' initrd /boot/initrd } menuentry 'Maintenance mode' --users maintainer { insmod ext2 set root=hd0,1 echo 'Loading Linux ...' linux /boot/vmlinuz root=/dev/vda1 $GRUB_CMDLINE_LINUX_DEFAULT $GRUB_CMDLINE_LINUX mode=maintenance echo 'Loading Initrd ...' initrd /boot/initrd }
内容をメインの設定ファイルに取り込むには、下記のように実行します:
>
sudo
grub2-mkconfig -o /boot/grub2/grub.cfg
上記の例は下記のような構成です:
GRUB 2 には 2 種類の項目
と が存在しています。何もユーザを指定しない場合、いずれのメニュー項目とも使用できますが、 GRUB 2 のコマンドラインに入ることはできず、かつ既存のメニュー項目を編集することもできなくなります。
admin
ユーザを指定した場合、 GRUB 2 のコマンドラインに入ることができるほか、既存のメニュー項目を編集することもできるようになります。
maintenance
ユーザを指定した場合は回復用のメニュー項目を選択できます。
openSUSE Leap システムで、ブートローダに関する一般的な設定を行うにあたって、最も簡単なのは YaST を使用することです。 YaST のブートローダモジュールを起動するには、 から › を選択します。
タブを利用して、種類や場所、高度なブートローダオプションの設定を行うことができます。また、 GRUB 2 を標準モードで使用するか、 EFI モードで使用するかを選択することもできます。
EFI システムをお使いの場合は、 GRUB2-EFI だけをご利用いただけます。それ以外を選択してしまうと、お使いのシステムを起動できなくなってしまいます。
ブートローダを再インストールするには、まず YaST 内でいったん設定を変更してから、元に戻します。たとえば GRUB2-EFI を再インストールしたい場合は、いったん
を選択してから、 に戻します。上記の手順を実施しないと、ブートローダ全体が書き込まれません。
一覧にあるもの以外のブートローダを使用したい場合は、
を選択します。なお、この選択を行う前に、お使いのブートローダのドキュメンテーションをよくお読みください。ブートローダの既定の配置場所はパーティションの設定に依存して決まり、マスターブートレコード (MBR) もしくは /
パーティションのブートセクタのいずれかに配置します。ブートローダの配置場所を変更するには、下記の手順を実施します:
を選択し、 で下記のいずれかを選択します:
これを選択すると、 /boot
を含むディスクの MBR 内にブートローダをインストールします。通常は /
と同じディスクになることが多いはずですが、 /boot
と /
とがを別々のディスクにインストールされている場合、 /boot
を含むディスクにインストールします。
これを選択すると、 /
パーティションのブートセクタ内にブートローダをインストールします。
ブートローダの配置先を独自に指定したい場合は、こちらに設定を行います。
を押すと変更を適用することができます。
タブには、下記の追加のオプションが用意されています:
/boot
ディレクトリを含むパーティションをアクティブ化します。 POWER システムの場合は、 PReP パーティションをアクティブ化します。このオプションは、古い BIOS や古いオペレーティングシステムをお使いの場合で、アクティブに設定されたパーティションでないと、起動が失敗するような場合に設定します。ただし、このオプションは有効にしたままで問題ありません。
MBR 内に 「GRUB 以外の」 コードが含まれている場合は、このオプションを選択することで、オペレーティングシステムに依存しない汎用のコードに置き換えることができます。このオプションの選択を外してしまうと、システムが起動できなくなってしまう場合があります。
Trusted Computing 機能 (Trusted Platform Module (TPM)) に対応する TrustedGRUB2 を開始します。詳しくは https://github.com/Sirrix-AG/TrustedGRUB2 をお読みください。
セクションでは、下記のいずれかを選択することができます:
従来の BIOS による起動の場合に適切な選択です。
UEFI による起動の場合に適切な選択です。
既に動作しているシステムの場合、こちらを選択するのが最適です。
ほとんどの場合において、 YaST 側であらかじめ設定された選択が適切なものとなります。
お使いのコンピュータに複数のディスクが接続されている場合、ここでディスクの起動順序を指定することができます。 MBR から起動する場合、一覧内にある最初のディスクが GRUB 2 のインストール先となります。また、既定で openSUSE Leap がインストールされるディスクでもあります。一覧内の残りの項目は、 GRUB 2 のデバイスマッパーに対するヒント情報になっています (詳しくは 12.2.4項 「BIOS ドライブと Linux デバイスのマッピングについて」 をお読みください) 。
ほほ全てのシステムにおいて、既定値のままご利用いただくのが通常です。ディスクの順序を誤って変更してしまうと、次回の起動時に起動ができなくなってしまいます。たとえば一覧内の最初のディスクが BIOS の起動順序内に含まれていないと、一覧内の他のディスクにはブートコードが書き込まれていないので、起動できなくなってしまいます。
タブを選択します。
を押します。
複数のディスクが一覧内にある場合は、ディスクを選択して
または を押して、ディスクの順序を変更してください。を 2 回押して、変更を保存します。
高度なオプションを設定するには、
タブを選択します。の項目で設定したい値を入力するか、もしくは右にある上下のボタンを利用して、タイムアウトを変更します。
これを選択すると、ブートローダは Windows や他の Linux ディストリビューションなどを検索するようになります。
起動メニューを隠して、既定の項目を起動するようにします。
「既定のブートセクション」 の一覧内から必要な項目を選択します。なお、 「>」 マークは起動項目の区切り文字で、メニューとサブメニューの区切りを示しています。
ブートローダを保護し、追加のパスワード設定を行うための仕組みです。手作業での設定方法については 12.2.6項 「起動パスワードの設定」 をお読みください。このオプションを選択した場合、起動する際に毎回パスワードの入力を求められることになります。言い換えると、システムの起動を自動では行うことができなくなります。ただし、 GRUB 1 をお使いの場合にのみ、 を選択することができます。こちらは既存の起動項目を修正する際にのみ、 GRUB 2 の管理者パスワードの入力を求められることになります。
システムの機能を有効化したり無効化したり、ドライバを追加したりする際に使用する、オプションのカーネルパラメータを指定します。
SUSE では、 CPU に対するサイドチャネル攻撃を防ぐため、お使いの CPU に適用することのできる全ての CPU 緩和策をまとめて設定する機能を提供しています。なお、選択した項目によっては、性能面の悪化を引き起こす可能性があります。下記の選択肢の中から、セキュリティと性能の要件に適合するものを選択してください:
お使いの CPU モデルに応じた緩和策を全て有効化しますが、 CPU を跨いだスレッド 攻撃については保護を行いません。この設定では、ご利用の負荷状況に応じて、 性能面に幾分かの影響が発生します。 :
利用可能な全ての緩和策を全て適用します。お使いの CPU モデルに応じた全ての 緩和策を適用し、かつ同時マルチスレッディング Simultaneous Multithreading (SMT) も無効化し、 CPU スレッドを跨いだサイドチャネル攻撃を無効化します。 ご利用の負荷状況にもよりますが、さらに性能面への影響が高くなります。 :
全ての緩和策を無効化します。お使いの CPU モデルに応じて、 CPU に対するサイド チャネル攻撃が成立することになります。この設定では、性能面への影響はありません。 :
緩和策のレベルを指定しません。カーネルのコマンドラインオプションを利用して、 手作業で緩和策を個別に指定することができるようになります。 :
この項目にチェックを入れると、起動メニューがテキストモードではなく、グラフィカルなスプラッシュスクリーンとして表示されるようになります。この画面での解像度は既定では自動検出されますが、必要であれば
で選択することもできます。また、テーマは でファイル選択を行って設定します。テーマについては、独自のテーマファイルをお持ちの場合のみ変更してください。お使いのマシンがシリアルコンソールで制御するシステムである場合は、このオプションを選択して使用する COM ポートと速度を設定してください。詳しくは info grub
または https://www.gnu.org/software/grub/manual/grub.html#Serial-terminal をお読みください。
grub2-mkconfig
/etc/default/grub
と /etc/grub.d/
にあるスクリプトからの結果をもとにして、新しい /boot/grub2/grub.cfg
を生成します。
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig
を何もパラメータを付けずに実行すると、生成された設定が標準出力 (STDOUT) に出力されますので、ここから想定通りに出力されているかどうかを確認することができます。また、 /boot/grub2/grub.cfg
に出力した後でも、 grub2-script-check
を利用して文法をチェックすることができます。
grub2-mkconfig
では UEFI の Secure Boot テーブルを修復できない問題についてUEFI Secure Boot を使用していて、お使いのシステムが GRUB 2 にまで正しく到達できない場合、 shim の再インストールと UEFI 起動テーブルの再生成が必要となります。具体的には、下記のように実行します:
#
shim-install --config-file=/boot/grub2/grub.cfg
grub2-mkrescue
インストール済みの GRUB 2 設定に対して、起動可能なレスキューイメージを作成します。
grub2-mkrescue -o save_path/name.iso iso
grub2-script-check
指定したファイルに文法上のエラーがないかどうかをチェックします。
grub2-script-check /boot/grub2/grub.cfg
grub2-once
次回の起動時のみに適用する規定の起動項目を設定します。起動項目の一覧を取得したい場合は、 --list
オプションをお使いください。
grub2-once 番号
grub2-once
のヘルプ何もオプションを指定しないでプログラムを実行すると、利用可能なオプションの一覧を表示することができます。
レスキューモード とは root
専用のユーザセッションで、システムの起動が失敗してしまうような場合に、その調査と修復を行うモードです。このモードはシングルユーザモードで、ローカルのファイルシステムと一部のシステムサービスのみが起動され、ネットワークインターフェイスは有効化されません。レスキューモードを開始したい場合は、下記の手順を実施してください。
まずはシステムを再起動します。 GRUB 2 の起動メニューが表示されるまで待ちます。
GRUB 2 の起動メニューが表示されたら e を押し、起動コマンドラインの編集モードに入ります。
カーネルパラメータを含む行に、下記のような内容を追記します:
systemd.unit=rescue.target
あとは Ctrl + X を押して、システムの起動を行います。
あとは root
のパスワードを入力します。
必要な調査や修復作業を実施します。
作業が終わったら systemctl isolate multi-user.target
または systemctl isolate graphical.target
を実行することで、通常の起動モードに戻すことができます。
GRUB 2 に関する広い範囲の情報は、 https://www.gnu.org/software/grub/ で提供されています。また、 grub
の info ページにも、様々な記載があります。