Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
適用先 openSUSE Leap 15.7

12 ブートローダ GRUB 2 Edit source

概要

本章では、 openSUSE® Leap 内で使用されているブートローダである GRUB 2 について、その設定方法を説明しています。 なお、 YaST モジュールを利用すれば、ほとんどの重要な設定を行うことができます。起動処理そのものに関する説明は 第9章 「起動処理の紹介 を、 UEFI 環境における Secure Boot サポートについては 第14章 「UEFI (Unified Extensible Firmware Interface) をそれぞれお読みください。

12.1 GRUB Legacy と GRUB 2 との主な違い Edit source

  • 設定ファイルのファイル名が変更されています。

  • さらに多くのファイルシステム (例: btrfs など) に対応しています。

  • LVM や RAID デバイスに保存されているファイルを直接読み込むことができます。

  • ユーザインターフェイスを各国語に翻訳したり、テーマで置き換えたりすることができます。

  • 追加のファイルシステムへの対応など、機能を追加するためのモジュールを読み込むことができるようになっています。

  • 他のカーネルやオペレーティングシステム (例: Windows) を検索し、自動的にそれらの起動項目を作成する機能にも対応しています。

  • 最小限の機能に絞った、 bash に似たコンソールが用意されています。

12.2 設定ファイルの構造 Edit source

GRUB 2 の設定は、それぞれ下記のファイルが基本となっています:

/boot/grub2/grub.cfg

このファイルには、 GRUB 2 のメニュー項目に関する設定が記述されています。 GRUB Legacy では menu.lst ファイルとして存在していたものですが、 grub.cfggrub2-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 を呼び出しますので、後からこれを実行する必要はありません。

12.2.1 /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 によるブートローダの設定」 をお読みください。

12.2.2 /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-oncegrub2-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 ハイパーバイザのオプションについて

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 マニュアル をお読みください。

12.2.3 /etc/grub.d 内にあるスクリプト Edit source

このディレクトリ内にあるスクリプトは、 grub2-mkconfig -o /boot/grub2/grub.cfg コマンド を実行する際に読み込まれます。これらのスクリプトの実行結果は、メインの設定ファイルである /boot/grub2/grub.cfg に統合されます。 grub.cfg でのメニュー項目内の順序は、このディレクトリ内の実行順になります。つまり、数字の小さいものが先に、大きいものが後に実行されることになります。たとえば 00_header は、 10_linux よりも前に実行されますし、 10_linux40_custom よりも前に実行されます。また、アルファベットで始まる名前のファイルが存在する場合は、数字で始まるファイルよりも後に実行されます。また、 grub2-mkconfig の実行時には、実行可能なファイルのみが grub.cfg に出力を行います。既定では /etc/grub.d 内にある全てのファイルが実行可能ファイルになっています。

ヒント
ヒント: grub.cfg 内のカスタマイズについて

/boot/grub2/grub.cfggrub2-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.cfg40_custom の直後に取り込まれるようになります。

12.2.4 BIOS ドライブと Linux デバイスのマッピングについて Edit source

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

12.2.5 起動処理中でのメニュー項目の編集 Edit source

誤った設定を書き込んでしまって起動ができなくなった場合や、システムの設定を一時的に試してみたいなどの場合には、メニュー項目を直接編集する機能が必要となる場合があります。これを行うには、下記の手順を実施してください。

  1. グラフィカルな起動メニューが表示されたら、矢印キーを利用して編集したい項目を選択します。

  2. E を押してテキストベースのエディタを開きます。

  3. 矢印キーを利用して、編集したい行まで移動します。

    GRUB 2 ブートエディタ
    図 12.1: GRUB 2 ブートエディタ

    以下の 2 つの方法があります:

    1. カーネルのパラメータを編集したい場合は、 linuxlinuxefi で始まる行の末尾に、スペース区切りで必要なパラメータを追加します。パラメータの完全な一覧については、 https://ja.opensuse.org/Linuxrc をご覧ください。

    2. カーネルのバージョンなどの情報を編集したい場合は、一般的なエディタのやり方で必要な項目を編集します。 <Tab> を押すと、補完機能を利用することができます。

  4. F10 を押すと編集した内容でシステムを起動することができます。また、 Esc を押すと編集内容を破棄し、 GRUB 2 のメニューに戻ることができます。

この方法で変更した内容は、今回の起動処理に限って適用されるものであり、恒久的には保存されません。

重要
重要: 起動処理中のキーボードレイアウトについて

起動時にはアメリカ英語のキーボードレイアウトのみを使用することができます。詳しくは 図4.1「US キーボードレイアウト」 をご覧ください。

注記
注記: インストールメディア内のブートローダについて

従来型の BIOS のシステムでは、インストールメディアのブートローダは GRUB Legacy になっています。起動パラメータを追加したい場合は、項目を選んでそのままパラメータを入力してください。ここで入力したパラメータは、インストール後のシステムでも利用できるよう、恒久的に保存されます。

12.2.6 起動パスワードの設定 Edit source

オペレーティングシステムが起動する前であっても、 GRUB 2 はファイルシステムにアクセスすることができます。 root の権限のない利用者であっても、ブートローダにさえアクセスできてしまえば、システムの起動後はアクセスできないようなファイルにも、アクセスできてしまいます。このような種類のアクセスを防止したり、メニュー項目を自由に選択できる状況を阻止したりしたい場合は、起動パスワードを設定することをお勧めします。

重要
重要: 起動時にパスワードを求める設定

この設定を行うと、起動時にパスワードの入力を求められるようになります。言い換えると、システムは自動では起動しなくなります。

下記の手順で起動パスワードを設定します。下記の手順以外にも、 YaST (詳しくは ブートローダをパスワードで保護する をお読みください) でも設定することができます。

  1. まずは grub2-mkpasswd-pbkdf2 を利用して、パスワードを暗号化します:

    > sudo grub2-mkpasswd-pbkdf2
    パスワードを入力してください: ****
    Reenter password: ****
    PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
  2. 出力された文字列を、 set superusers コマンドと共に/etc/grub.d/40_custom 内に貼り付けます。

    set superusers="root"
    password_pbkdf2 root grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
  3. 内容をメインの設定ファイルに取り込むには、下記のように実行します:

    > 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 をお読みください。

12.2.7 起動メニュー項目に対するアクセス保護 Edit source

GRUB 2 では、認可レベルを設定して起動メニュー項目へのアクセスを制限することができます。具体的には、複数のユーザアカウントとパスワードを設定して、それぞれ異なるメニュー項目へのアクセス許可を設定することができます。 GRUB 2 でこのようなアクセス制限を設定するには、下記の手順を実施します:

  1. まずは GRUB 2 内に設定したいユーザ名とパスワードを用意します。このとき、パスワードは 12.2.6項 「起動パスワードの設定」 で説明しているとおり、 grub2-mkpasswd-pbkdf2 を利用して暗号化しておきます。

  2. /etc/grub.d/10_linux ファイルを削除します。これにより、既定の GRUB 2 メニュー項目が作成されないようにすることができます。

  3. あとは /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
    }
  4. 内容をメインの設定ファイルに取り込むには、下記のように実行します:

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

上記の例は下記のような構成です:

  • GRUB 2 には 2 種類の項目 Operational modeMaintenance mode が存在しています。

  • 何もユーザを指定しない場合、いずれのメニュー項目とも使用できますが、 GRUB 2 のコマンドラインに入ることはできず、かつ既存のメニュー項目を編集することもできなくなります。

  • admin ユーザを指定した場合、 GRUB 2 のコマンドラインに入ることができるほか、既存のメニュー項目を編集することもできるようになります。

  • maintenance ユーザを指定した場合は回復用のメニュー項目を選択できます。

12.3 YaST によるブートローダの設定 Edit source

openSUSE Leap システムで、ブートローダに関する一般的な設定を行うにあたって、最も簡単なのは YaST を使用することです。 YaST のブートローダモジュールを起動するには、 YaST コントロールセンター から システム › ブートローダ を選択します。

ブートコードのオプション タブを利用して、種類や場所、高度なブートローダオプションの設定を行うことができます。また、 GRUB 2 を標準モードで使用するか、 EFI モードで使用するかを選択することもできます。

重要
重要: EFI システムでは GRUB2-EFI が必要となる件について

EFI システムをお使いの場合は、 GRUB2-EFI だけをご利用いただけます。それ以外を選択してしまうと、お使いのシステムを起動できなくなってしまいます。

重要
重要: ブートローダの再インストール

ブートローダを再インストールするには、まず YaST 内でいったん設定を変更してから、元に戻します。たとえば GRUB2-EFI を再インストールしたい場合は、いったん GRUB2 を選択してから、 GRUB2-EFI に戻します。

上記の手順を実施しないと、ブートローダ全体が書き込まれません。

注記
注記: 独自のブートローダ

一覧にあるもの以外のブートローダを使用したい場合は、 管理しない を選択します。なお、この選択を行う前に、お使いのブートローダのドキュメンテーションをよくお読みください。

12.3.1 ブートローダの場所とブートコードのオプション Edit source

ブートローダの既定の配置場所はパーティションの設定に依存して決まり、マスターブートレコード (MBR) もしくは / パーティションのブートセクタのいずれかに配置します。ブートローダの配置場所を変更するには、下記の手順を実施します:

手順 12.1: ブートローダの配置場所の変更
  1. ブートコードのオプション を選択し、 ブートローダの場所 で下記のいずれかを選択します:

    マスターブートレコード (MBR) から起動

    これを選択すると、 /boot を含むディスクの MBR 内にブートローダをインストールします。通常は / と同じディスクになることが多いはずですが、 /boot/ とがを別々のディスクにインストールされている場合、 /boot を含むディスクにインストールします。

    ルートパーティションから起動

    これを選択すると、 / パーティションのブートセクタ内にブートローダをインストールします。

    独自の起動パーティション

    ブートローダの配置先を独自に指定したい場合は、こちらに設定を行います。

  2. OK を押すと変更を適用することができます。

ブートコードのオプション
図 12.2: ブートコードのオプション

ブートコードのオプション タブには、下記の追加のオプションが用意されています:

ブートパーティションをアクティブに設定

/boot ディレクトリを含むパーティションをアクティブ化します。 POWER システムの場合は、 PReP パーティションをアクティブ化します。このオプションは、古い BIOS や古いオペレーティングシステムをお使いの場合で、アクティブに設定されたパーティションでないと、起動が失敗するような場合に設定します。ただし、このオプションは有効にしたままで問題ありません。

MBR に汎用ブートコードを書き込む

MBR 内に GRUB 以外の コードが含まれている場合は、このオプションを選択することで、オペレーティングシステムに依存しない汎用のコードに置き換えることができます。このオプションの選択を外してしまうと、システムが起動できなくなってしまう場合があります。

Trusted Boot サポートを有効にする

Trusted Computing 機能 (Trusted Platform Module (TPM)) に対応する TrustedGRUB2 を開始します。詳しくは https://github.com/Sirrix-AG/TrustedGRUB2 をお読みください。

プロテクティブ MBR フラグ セクションでは、下記のいずれかを選択することができます:

設定

従来の BIOS による起動の場合に適切な選択です。

削除

UEFI による起動の場合に適切な選択です。

変更しない

既に動作しているシステムの場合、こちらを選択するのが最適です。

ほとんどの場合において、 YaST 側であらかじめ設定された選択が適切なものとなります。

12.3.2 ディスクの順序の調整 Edit source

お使いのコンピュータに複数のディスクが接続されている場合、ここでディスクの起動順序を指定することができます。 MBR から起動する場合、一覧内にある最初のディスクが GRUB 2 のインストール先となります。また、既定で openSUSE Leap がインストールされるディスクでもあります。一覧内の残りの項目は、 GRUB 2 のデバイスマッパーに対するヒント情報になっています (詳しくは 12.2.4項 「BIOS ドライブと Linux デバイスのマッピングについて」 をお読みください) 。

警告
警告: 起動不可能なシステムになってしまう問題について

ほほ全てのシステムにおいて、既定値のままご利用いただくのが通常です。ディスクの順序を誤って変更してしまうと、次回の起動時に起動ができなくなってしまいます。たとえば一覧内の最初のディスクが BIOS の起動順序内に含まれていないと、一覧内の他のディスクにはブートコードが書き込まれていないので、起動できなくなってしまいます。

手順 12.2: ディスク順序の変更
  1. ブートコードのオプション タブを選択します。

  2. ディスク順序の編集 を押します。

  3. 複数のディスクが一覧内にある場合は、ディスクを選択して 上へ または 下へ を押して、ディスクの順序を変更してください。

  4. OK を 2 回押して、変更を保存します。

12.3.3 高度なオプションの変更 Edit source

高度なオプションを設定するには、 ブートローダのオプション タブを選択します。

12.3.3.1 ブートローダのオプション タブ Edit source

ブートローダのオプション
図 12.3: ブートローダのオプション
タイムアウト

タイムアウト (秒) の項目で設定したい値を入力するか、もしくは右にある上下のボタンを利用して、タイムアウトを変更します。

その他の OS の検出

これを選択すると、ブートローダは Windows や他の Linux ディストリビューションなどを検索するようになります。

ブート時にメニューを隠す

起動メニューを隠して、既定の項目を起動するようにします。

既定のブートセクション

既定のブートセクション の一覧内から必要な項目を選択します。なお、 > マークは起動項目の区切り文字で、メニューとサブメニューの区切りを示しています。

ブートローダをパスワードで保護する

ブートローダを保護し、追加のパスワード設定を行うための仕組みです。手作業での設定方法については 12.2.6項 「起動パスワードの設定」 をお読みください。このオプションを選択した場合、起動する際に毎回パスワードの入力を求められることになります。言い換えると、システムの起動を自動では行うことができなくなります。ただし、 GRUB 1 をお使いの場合にのみ、 項目の修正のみを保護する を選択することができます。こちらは既存の起動項目を修正する際にのみ、 GRUB 2 の管理者パスワードの入力を求められることになります。

12.3.3.2 カーネルのパラメータ タブ Edit source

カーネルのパラメータ
図 12.4: カーネルのパラメータ
オプションのカーネルコマンドラインパラメータ

システムの機能を有効化したり無効化したり、ドライバを追加したりする際に使用する、オプションのカーネルパラメータを指定します。

CPU 緩和策

SUSE では、 CPU に対するサイドチャネル攻撃を防ぐため、お使いの CPU に適用することのできる全ての CPU 緩和策をまとめて設定する機能を提供しています。なお、選択した項目によっては、性能面の悪化を引き起こす可能性があります。下記の選択肢の中から、セキュリティと性能の要件に適合するものを選択してください:

自動:  お使いの CPU モデルに応じた緩和策を全て有効化しますが、 CPU を跨いだスレッド 攻撃については保護を行いません。この設定では、ご利用の負荷状況に応じて、 性能面に幾分かの影響が発生します。

自動 + SMT 無し:  利用可能な全ての緩和策を全て適用します。お使いの CPU モデルに応じた全ての 緩和策を適用し、かつ同時マルチスレッディング Simultaneous Multithreading (SMT) も無効化し、 CPU スレッドを跨いだサイドチャネル攻撃を無効化します。 ご利用の負荷状況にもよりますが、さらに性能面への影響が高くなります。

無し:  全ての緩和策を無効化します。お使いの CPU モデルに応じて、 CPU に対するサイド チャネル攻撃が成立することになります。この設定では、性能面への影響はありません。

手動:  緩和策のレベルを指定しません。カーネルのコマンドラインオプションを利用して、 手作業で緩和策を個別に指定することができるようになります。

グラフィカルコンソールを使用する

この項目にチェックを入れると、起動メニューがテキストモードではなく、グラフィカルなスプラッシュスクリーンとして表示されるようになります。この画面での解像度は既定では自動検出されますが、必要であれば コンソールの解像度 で選択することもできます。また、テーマは コンソールのテーマ でファイル選択を行って設定します。テーマについては、独自のテーマファイルをお持ちの場合のみ変更してください。

シリアルコンソールを使用する

お使いのマシンがシリアルコンソールで制御するシステムである場合は、このオプションを選択して使用する COM ポートと速度を設定してください。詳しくは info grub または https://www.gnu.org/software/grub/manual/grub.html#Serial-terminal をお読みください。

12.4 便利な GRUB 2 コマンド Edit source

grub2-mkconfig

/etc/default/grub/etc/grub.d/ にあるスクリプトからの結果をもとにして、新しい /boot/grub2/grub.cfg を生成します。

例 12.1: grub2-mkconfig の使用方法
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 設定に対して、起動可能なレスキューイメージを作成します。

例 12.2: grub2-mkrescue の使用方法
grub2-mkrescue -o save_path/name.iso iso
grub2-script-check

指定したファイルに文法上のエラーがないかどうかをチェックします。

例 12.3: grub2-script-check の使用方法
grub2-script-check /boot/grub2/grub.cfg
grub2-once

次回の起動時のみに適用する規定の起動項目を設定します。起動項目の一覧を取得したい場合は、 --list オプションをお使いください。

例 12.4: grub2-once の使用方法
grub2-once 番号
ヒント
ヒント: grub2-once のヘルプ

何もオプションを指定しないでプログラムを実行すると、利用可能なオプションの一覧を表示することができます。

12.5 レスキューモード Edit source

レスキューモード とは root 専用のユーザセッションで、システムの起動が失敗してしまうような場合に、その調査と修復を行うモードです。このモードはシングルユーザモードで、ローカルのファイルシステムと一部のシステムサービスのみが起動され、ネットワークインターフェイスは有効化されません。レスキューモードを開始したい場合は、下記の手順を実施してください。

手順 12.3: レスキューモードへの突入
  1. まずはシステムを再起動します。 GRUB 2 の起動メニューが表示されるまで待ちます。

  2. GRUB 2 の起動メニューが表示されたら e を押し、起動コマンドラインの編集モードに入ります。

  3. カーネルパラメータを含む行に、下記のような内容を追記します:

    systemd.unit=rescue.target
  4. あとは Ctrl + X を押して、システムの起動を行います。

  5. あとは root のパスワードを入力します。

  6. 必要な調査や修復作業を実施します。

  7. 作業が終わったら systemctl isolate multi-user.target または systemctl isolate graphical.target を実行することで、通常の起動モードに戻すことができます。

12.6 さらなる情報 Edit source

GRUB 2 に関する広い範囲の情報は、 https://www.gnu.org/software/grub/ で提供されています。また、 grub の info ページにも、様々な記載があります。

このページを印刷