
この章では、SUSE® Linux Enterprise Desktopで使用されているブートローダGRUB 2の設定方法について説明します。これは、現在「GRUB 2 Legacy」と呼ばれる従来のGRUBブートローダの後継バージョンです。「」GRUB 2は、SUSE® Linux Enterprise Desktopのバージョン12以降でデフォルトのブートローダになっています。YaSTモジュールは、最も重要な設定を行うために使用できます。ブート手順は、総じて第10章 Linuxシステムのブートで説明しています。UEFIマシンでのセキュアブートのサポートの詳細については、第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
コマンドによって自動的に生成されます。編集しないでください。
/boot/grub2/custom.cfg
このオプションファイルは、ブート時にgrub.cfgによって直接調達され、ブートメニューにカスタム項目を追加するために使用できます。
/etc/default/grub このファイルは、GRUB 2のユーザ設定を制御し、通常は背景やテーマなどの追加の環境設定を含みます。
/etc/grub.d/にあるスクリプト
このディレクトリ内のスクリプトは、grub2-mkconfig
コマンドの実行時に読み込まれます。スクリプトの命令はメインの設定ファイル/boot/grub/grub.cfgに統合されます。
/etc/sysconfig/bootloader
この設定ファイルは、ブートローダをYaSTで設定するときと、新しいカーネルがインストールされる際に使用されます。perl-bootloaderで評価され、それに従ってブートローダ設定ファイル(GRUB 2の /boot/grub2/grub.cfg など)が変更されます。/etc/sysconfig/bootloader は、GRUB 2固有の設定ファイルではありません。その値は、SUSE Linux Enterprise Desktopにインストールされているすべてのブートローダに適用されます。
/boot/grub2/x86_64-efi、、
これらの設定ファイルにはアーキテクチャ固有のオプションが含まれます。
GRUB 2は、さまざまな方法で制御できます。グラフィカルメニュー(スプラッシュ画面)を使用して、既存の設定からブートエントリを選択できます。設定は、他の設定ファイルからコンパイルされた/boot/grub2/grub.cfgファイルからロードされます(以下を参照)。GRUB 2設定ファイルはすべてシステムファイルとみなされ、編集するにはroot特権が必要です。
GRUB 2設定ファイルを手動で編集した後、grub2-mkconfig
を実行して変更を有効化する必要があります。ただし、YaSTを使用して設定を変更した場合、grub2-mkconfig
は自動的に実行されるため、この作業は必要ありません。
/boot/grub2/grub.cfgファイル #
ブートメニューを含むグラフィカルスプラッシュ画面は、GRUB 2の設定ファイル/boot/grub2/grub.cfgに基づいており、このファイルにはメニューを使用してブートできるすべてのパーティションまたはオペレーティングシステムに関する情報が含まれています。
システムをブートするたびに、GRUB 2はファイルシステムから直接メニューファイルを読み込みます。このため、設定ファイルを変更するたびにGRUB 2を再インストールする必要がありません。grub.cfgは、カーネルをインストールまたは削除すると自動的に再構築されます。
grub.cfgは、grub2-mkconfig
によって、/etc/default/grubファイルと、/etc/grub.d/ディレクトリにあるスクリプトからコンパイルされます。そのため、このファイルは手動で編集しないでください。代わりに、関連するソースファイルを編集するか、13.3項 「YaSTによるブートローダの設定」で説明されているようにYaSTモジュールを使用して設定を変更します。
/etc/default/grubファイル #ここには、メニューを表示するタイミングやブートするデフォルトのOSなど、GRUB 2のより一般的なオプションが含まれます。すべての使用可能なオプションについては、次のコマンドの出力を参照してください。
grep "export GRUB_DEFAULT" -A50 /usr/sbin/grub2-mkconfig | grep GRUB_
定義済みの変数以外にユーザ独自の変数を導入して、後から/etc/grub.dディレクトリにあるスクリプト内でそれらの変数を使用できます。
/etc/default/grubを編集した後は、grub2-mkconfig
を実行して、メインの構成ファイルを更新します。
このファイルに設定されているオプションはすべて、全ブートエントリに影響する汎用オプションです。XenカーネルまたはXenハイバーバイザに固有のオプションは、GRUB_*_XEN_*設定オプションを介して設定できます。詳細については、以下を参照してください。
GRUB_DEFAULT
デフォルトでブートされるブートメニューエントリを設定します。値は、数値、メニューエントリの完全な名前、または「saved」になります。「」
GRUB_DEFAULT=2は、3番目(0から数える)のブートメニューエントリをブートします。
GRUB_DEFAULT="2>0"は、3番目の最上位レベルのメニューエントリの1番目にあるサブメニューエントリをブートします。
GRUB_DEFAULT="Example boot menu entry"は、「Example boot menu entry」というタイトルのメニューエントリをブートします。「」
GRUB_DEFAULT=savedは、grub2-rebootコマンドまたはgrub2-set-defaultコマンドによって指定されたエントリをブートします。grub2-rebootは次回の再起動時にのみ有効なデフォルトブートエントリを設定するのに対し、grub2-set-defaultは変更しない限りデフォルトとして使用されるブートエントリを設定します。
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
このエントリは、すべてのXenブートエントリのGRUB_CMDLINE_LINUXパラメータを完全に置き換えます。
GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT
GRUB_CMDLINE_LINUX_XEN_REPLACEと同じですが、GRUB_CMDLINE_LINUX_DEFAULTのパラメータのみを置き換えます。
GRUB_CMDLINE_XEN
このエントリは、Xenゲストカーネルのカーネルパラメータのみを指定します。基本原則は、GRUB_CMDLINE_LINUXと同じです。
GRUB_CMDLINE_XEN_DEFAULT
GRUB_CMDLINE_XENと同じです。基本原則は、GRUB_CMDLINE_LINUX_DEFAULTと同じです。
GRUB_TERMINAL
入出力端末デバイスを有効化および指定します。console (PC BIOSおよびEFIコンソール)、serial (シリアル端末)、ofconsole (Open Firmwareコンソール)、またはデフォルトのgfxterm (グラフィックモード出力)のいずれかになります。また、必要なオプションを引用符で囲むことで、2つ以上のデバイスを有効にすることもできます(たとえば、GRUB_TERMINAL="console serial")。
GRUB_GFXMODE
gfxtermグラフィカル端末で使用される解像度。使用できるモードはグラフィックカード(VBE)でサポートされているモードのみである点に注意してください。デフォルトは「auto」で、優先解像度の選択を試みます。GRUB 2コマンドラインで「vbeinfo」と入力すると、GRUB 2で使用可能な画面解像度が表示されます。コマンドラインにアクセスするには、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スナップショットでブートできます。詳細については、4.3項 「スナップショットからのブートによるシステムロールバック」を参照してください。
すべての*_DEFAULTパラメータは、手動またはYaSTで処理できます。
すべてのオプションのリストについては、GNU GRUBのマニュアル (http://www.gnu.org/software/grub/manual/grub.html#Simple-configuration)を参照してください。すべての設定可能なパラメータのリストについては、http://en.opensuse.org/Linuxrcを参照してください。
/etc/grub.d内のスクリプト #
このディレクトリ内のスクリプトはgrub2-mkconfig
コマンドの実行時に読み込まれ、スクリプトの命令は/boot/grub2/grub.cfgに統合されます。grub.cfg内のメニュー項目の順序は、このディレクトリ内のファイルの実行順序によって決まります。まず、名前が数字で始まるファイルが、最も小さい数字が付いたものから順番に実行されます。00_headerは10_linuxの前に実行され、10_linuxは40_customの前に実行されます。アルファベットの名前が付いたファイルが存在する場合は、名前が数字で始まるファイルの後に実行されます。grub2-mkconfigの実行中にgrub.cfgへ出力を生成するのは実行可能ファイルのみです。デフォルトでは、/etc/grub.dディレクトリ内のファイルはすべて実行可能ファイルです。最も重要なスクリプトは次のとおりです。
00_header
システムファイルの場所、表示設定、テーマ、以前に保存したエントリなどの環境変数を設定します。また、/etc/default/grubに保存されている初期設定をインポートします。通常、このファイルを変更する必要はありません。
10_linux
ルートデバイス上のLinuxカーネルを識別し、関連するメニューエントリを作成します。これには、関連する回復モードオプション(有効な場合)が含まれます。最新のカーネルのみがメインメニューページに表示され、その他のカーネルはサブメニューに含まれます。
30_os-prober
このスクリプトは、OS-proberを使用してLinuxやその他のオペレーティングシステムを検索し、結果をGRUB 2メニューに示します。他の特定のオペレーティングシステム(WindowsやOS Xなど)を識別するためのセクションがあります。
40_custom
このファイルを使用すると、grub.cfgに簡単にカスタムブートエントリを組み込むことができます。最初は、exec tail -n +3 $0の部分を変更しないようにしてください。
90_persistent
これは、grub.cfgファイルの対応部分をコピーし、それを未変更のまま出力する特殊なスクリプトです。このようにすることで、grub.cfgの該当部分を直接変更し、grub2-mkconfig
を実行しても変更内容を維持できます。
処理シーケンスは、名前の先頭の数値によって設定され、最も小さい数値が最初に実行されます。スクリプトの名前が同じ数値で始まる場合は、名前全体のアルファベット順で順序が決まります。
GRUB Legacyでは、device.map設定ファイルを使用して、BIOSドライブ番号からLinuxデバイス名を派生させていました。BIOSドライブとLinuxデバイスのマッピングは常に正しく推測できるとは限りません。たとえば、BIOS設定でIDEとSCSIのブートシーケンスが入れ替わると、GRUB Legacyは誤った順序を取得します。
GRUB 2では、grub.cfgの生成時にデバイスID文字列(UUID)またはファイルシステムラベルを使用することで、この問題を回避しています。GRUB 2ユーティリティは一時デバイスマップをオンザフライで作成します。通常、特に単一ディスクのシステムの場合は、この処理で十分です。
ただし、GRUB 2の自動デバイスマッピングメカニズムを無効にする必要がある場合は、カスタムマッピングファイル/boot/grub2/device.mapを作成します。次の例では、マッピングを変更して、DISK 3をブートディスクにしています。パーティション番号は、GRUB Legacyでは0から始まっていましたが、GRUB 2では1から始まる点に注意してください。
(hd1) /dev/disk-by-id/DISK3 ID (hd2) /dev/disk-by-id/DISK1 ID (hd3) /dev/disk-by-id/DISK2 ID
メニューエントリを直接編集できると、誤設定が原因でシステムがブートしなくなった場合に役立ちます。また、システム設定を変更せずに新しい設定をテストする場合にも使用できます。
グラフィカルブートメニューで、編集するエントリを矢印キーで選択します。
Eを押して、テキストベースのエディタを開きます。
矢印キーを使用して、編集する行へ移動します。
ここでは2つのオプションがあります。
スペース区切りのパラメータを、linuxまたはlinuxefiで始まる行の終わりに追加して、カーネルパラメータを編集します。すべてのパラメータのリストはhttp://en.opensuse.org/Linuxrcから入手できます。
または、一般オプションを編集して、カーネルバージョンなどを変更します。<<Tab>>キーを押すと、考えられる完了結果がすべて提示されます。
F10キーを押して変更内容が反映されたシステムをブートするか、<Esc>キーを押して編集内容は破棄し、GRUB 2メニューに戻ります。
この方法で加えた変更は、現在のブートプロセスだけに適用され、永続的に保存されることはありません。
従来のBIOSが搭載されたシステム上にあるインストールメディアのブートローダは、引き続きGRUB Legacyになります。ブートオプションを追加するには、エントリを選択し、入力を開始します。インストールブートエントリに追加した内容は、インストール済みシステムに永続的に保存されます。
オペレーティングシステムのブート前でも、GRUB 2はファイルシステムへのアクセスを可能にします。rootパーミッションを持たないユーザは、システムのブート後、アクセス権のないLinuxシステム上のファイルにアクセスできます。この種のアクセスを阻止したり、ユーザによる特定のメニューエントリのブートを防止するために、ブートパスワードを設定できます。
設定すると、ブートのたびにブートパスワードが必要になります。つまり、システムは自動的にはブートしません。
ブートパスワードを設定するには、次の手順に従います。または、YaSTを使用してください( を参照してください)。
grub2-mkpasswd-pbkdf2を使用してパスワードを暗号化します。
tux > sudo grub2-mkpasswd-pbkdf2
Password: ****
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...
grub2-mkconfig
を実行して、メインの設定ファイルに変更をインポートします。
再起動後、メニューエントリのブートを試みると、ユーザ名とパスワードの入力が求められます。「root」と入力し、grub2-mkpasswd-pbkdf2コマンドの実行時に入力したパスワードを入力します。資格情報が正しい場合、システムは選択したブートエントリをブートします。
SUSE Linux Enterprise Desktopシステムでブートローダの汎用オプションを設定する最も簡単な方法は、YaSTモジュールを使用することです。で、 › の順に選択します。モジュールにシステムの現在のブートローダ設定が示され、変更を加えられます。
タブで、タイプ、場所、および高度なローダ設定に関する設定を表示および変更できます。GRUB 2ブートローダを使用するには、それが使用可能なブートローダのリストから選択されていることを確認します。
タブでブートローダタイプを設定します。SUSE Linux Enterprise Desktopのデフォルトのブートローダは、GRUB 2です。GRUBまたはGRUB2-EFIを使用するには、次の手順に従います。
で、、または他のエントリのいずれかを選択します。
EFIシステムがある場合は、GRUB2-EFIのみをインストールできます。それ以外をインストールすると、システムはブート不能になります。
開かれたダイアログで、次のアクションのいずれかを選択します。
YaSTは新しい設定を提案します。
YaSTは現在の設定を変換します。設定を変換すると、いくつかの設定内容が失われることがあります。
カスタム設定を書き込みます。このアクションは、SUSE Linux Enterprise Desktopのインストール時には使用できません。
専用のブートローダ設定ファイルをロードします。このアクションは、SUSE Linux Enterprise Desktopのインストール時には使用できません。
を2回クリックして、変更内容を保存します。
変換中に、古いGRUB 2はディスクに保存されます。これを使うには、ブートローダのタイプをGRUB 2に戻し、を選択します。この操作は、インストール済みのシステムでのみ実行可能です。
リストにないブートローダを使用する場合は、を選択します。このオプションを選択する場合には、あらかじめ、ブートローダのドキュメントをよくお読みください。
ブートローダの場所を変更するには、次の手順に従います。
タブを選択し、で、次のいずれかのオプションを選択します。
最初のディスクのMBRにブートローダをインストールします(BIOS 中のブートシーケンスプリセットによる)。
/パーティションのブートセクタにブートローダがインストールされます(デフォルト)。
/bootパーティションのブートセクタにブートローダがインストールされます。
拡張パーティションコンテナにブートローダがインストールされます。
このオプションを選択すると、手動でブートローダの場所を指定できます。
をクリックして、変更を適用します。
コンピュータに複数のハードディスクがある場合、ディスクのブートシーケンスを指定できます。詳細については、13.2.4項 「BIOSドライブとLinuxドライブのマッピング」を参照してください。
タブを開きます。
をクリックします。
複数のディスクが表示されている場合には、ディスクを選択してからまたはをクリックして、ディスクの表示順を変更します。
を2回クリックして、変更内容を保存します。
詳細なブートオプションは、 › の順に選択して、設定できます。
新しい値を入力するか、マウスで適切な矢印キーをクリックして、の値を変更します。
選択すると、ブートローダはWindowsや他のLinuxインストールなど、インストール済みの他のシステムを検索します。
ブートメニューを隠し、デフォルトエントリをブートします。
[デフォルトのブートセクション]リストから目的のエントリを選択します。「」ブートエントリ名内の「>」記号は、ブートセクションとそのサブセクションを区切っている点に注意してください。「」
ブートローダとシステムを追加のパスワードで保護します。詳細については、13.2.6項 「ブートパスワードの設定」を参照してください。
[VGAモード]オプションは、ブートプロセス時のデフォルトの画面解像度を指定します。
カーネルパラメータは、デフォルトパラメータの最後に追加されます。オプションパラメータは標準のカーネルにのみ追加され、フェールセーフパラメータはフェールセーフカーネルまたは回復カーネルにのみ追加されます。使用できるすべてのパラメータのリストについては、http://en.opensuse.org/Linuxrcを参照してください。
オンにすると、テキストモードではなくグラフィカルなスプラッシュスクリーンにブートメニューが表示されます。ブート画面の解像度は、リストから設定できます。グラフィカルテーマ定義ファイルは、ファイル選択機能で指定できます。
コンピュータがシリアルコンソールで制御されている場合は、このオプションを有効にして、どのCOMポートをどの速度で使用するか指定します。info grubまたはhttp://www.gnu.org/software/grub/manual/grub.html#Serial-terminalを参照してください。
3215および3270端末では、カーソルの移動方法と、GRUB 2内での編集コマンドの実行方法にいくつかの相違点と制限事項があります。
対話処理は大幅に制限されています。多くの場合、入力しても結果は視覚的なフィードバックとして表示されません。カーソルの位置を確認するには、下線(_)を入力します。
3270端末では、画面の表示と更新は3215端末より優れています。
「従来」の方法でカーソルを移動することはできません。「」<Alt>、<Meta>、<Ctrl>、およびカーソルキーは動作しません。カーソルを移動するには、13.4.2項 「キーの組み合わせ」に一覧にされたキーの組み合わせを使用します。
キャレット(^)は制御文字として使用されます。文字として^を入力し他の文字を続けるには、^、^、「LETTER」と入力します。
<Enter>キーは動作しません。代わりに、^–jを使用します。
|
共通の代用キー: |
^–J |
決定する(「Enter」「」) |
|
^–L |
中止して、直前の「状態」に戻る「」 | |
|
^–I |
タブ補完機能(編集およびシェルモード) | |
|
メニューモードで使用可能なキー: |
^–A |
最初のエントリ |
|
^–E |
最後のエントリ | |
|
^–P |
前のエントリ | |
|
^–N |
次のエントリ | |
|
^–G |
前のページ | |
|
^–C |
次のページ | |
|
^–F |
選択したエントリをブートする、またはサブメニューに切り替える(^–Jと同じ) | |
|
E |
選択したエントリを編集する | |
|
c |
GRUBシェルを起動する | |
|
編集モードで使用可能なキー: |
^–P |
前の行に戻る |
|
^–N |
次の行に進む | |
|
^–B |
1文字戻る | |
|
^–F |
1文字進む | |
|
^–A |
行の先頭に移動する | |
|
^–E |
行の末尾 | |
|
^–H |
バックスペース | |
|
^–D |
削除 | |
|
^–K |
行を削除する | |
|
^–Y |
ヤンク(コピー) | |
|
^–O |
行を開く | |
|
^–L |
画面を更新する | |
|
^–X |
エントリをブートする | |
|
^–C |
GRUBシェルを起動する | |
|
コマンドラインモードで使用可能なキー: |
^–P |
前のコマンド |
|
^–N |
履歴の次のコマンド | |
|
^–A |
行の先頭に移動する | |
|
^–E |
行の末尾 | |
|
^–B |
1文字戻る | |
|
^–F |
1文字進む | |
|
^–H |
バックスペース | |
|
^–D |
削除 | |
|
^–K |
行を削除する | |
|
^–U |
行を破棄する | |
|
^–Y |
ヤンク(コピー) |
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-mkrescue
インストールされたGRUB 2設定の、ブート可能なレスキューイメージを作成します。
grub2-mkrescue -o save_path/name.iso iso
grub2-script-check
指定したファイルの構文エラーをチェックします。
grub2-check-config /boot/grub2/grub.cfg
grub2-once
次のブート時にのみ使用されるデフォルトブートエントリを設定します。使用可能なブートエントリのリストを取得するには、--listオプションを使用します。
grub2-once number_of_the_boot_entry
オプションを付けずにプログラムを呼び出すと、使用可能なすべてのオプションのリストを取得できます。
GRUB 2の詳細情報は、http://www.gnu.org/software/grub/で入手できます。また、grub情報ページも参照してください。http://www.suse.com/supportにあるTechnical Information Search (技術情報検索)で、キーワード「GRUB 2」を検索して、特別な事項に関する情報を入手することもできます。「」