概要
本章では、 openSUSE® で使用されるブートローダ GRUB2 (Grand Unified Bootloader) について、その設定方法を説明しています。これは従来の GRUB ブートローダの後継にあたる ソフトウエアです。明示的に区別するため、従来のバージョンは 「GRUB Legacy」 とも呼ばれます (詳しくは 第9章 ブートローダ GRUB をお読みください) 。 GRUB2 は openSUSE® バージョン より既定のブートローダと なりました。主な設定は専用の YaST モジュールを利用して 行なうことができます。 Linux の起動手順について詳しくない場合は、 第9章 ブートローダ GRUB をお読みのうえ、起動に関する背景的な知識を得てください。また、起動処理の概要は 第7章 Linux システムの起動 で説明しています。
設定を複数のファイルに分散して保存するようになりました。また、設定ファイルの 書式も変更されています。
パーティション番号が 1 から始まるようになりました (従来の GRUB Legacy では 0 から始まっていました) 。
さらに多くのファイルシステムに対応しています。
GRUB2 では LVM や RAID デバイス上のファイルを、直接読めるようになりました。
メニュー項目の名称を含め、ユーザインターフェイスを翻訳できるようになりました。
GRUB では、ファイルシステムなどの特定の機能に対応するために、モジュールを 読み込む仕組みが追加されています。
「ステージ」 と呼ばれる仕組みは廃止され、 GRUB2 を構成する イメージの構造が変更されています。
GRUB2 の設定は、下記に示すファイルで行ないます:
/boot/grub2/grub.cfg
このファイルには、 GRUB2 のメニュー項目に関する全ての情報が保存
されています。これは従来の GRUB Legacy で言うところの
menu.lst
にあたるものです。
grub.cfg
は grub2-mkconfig
コマンドで構築するもので、通常は手作業で編集すべきではないものです。
/etc/default/grub
このファイルは GRUB2 のユーザ設定を制御するためのもので、通常は 背景画像やテーマなど、追加の環境設定が含まれています。
/etc/grub.d/
内のスクリプト
このディレクトリ内に存在するスクリプトは、 grub2-mkconfig
コマンドの実行中に読み込まれ、メインの設定ファイル
/boot/grub/grub.cfg
内に取り込まれます。
/etc/sysconfig/bootloader
このファイルは perl-bootloader ライブラリから読み込むことができるもので、 YaST からブートローダを設定する際、および新しいカーネルがインストールされた 際に利用されます。このファイルにはカーネルパラメータなどの設定オプションが 含まれていて、これらはブートローダの設定ファイルに対して既定で追加されます。
GRUB2 は様々な方法でコントロールすることができます。既存の設定ファイルにある
起動項目はグラフィカルなメニュー (スプラッシュスクリーン) で選択することが
できます。設定は grub.cfg
ファイルから読み込まれますが、
このファイルはさらに他のファイルの内容から生成されます (詳しくは下記をお読みください) 。
GRUB2 では、すべての設定ファイルがシステムファイルという位置づけとなるため、
これらを編集する際は、 root
の権限が必要となります。また、 GRUB2 の
設定ファイルを編集した後は、 grub2-mkconfig -o
/boot/grub2/grub.cfg を忘れずに実行してください。
/boot/grub2/grub.cfg
ファイル¶
起動メニューでのグラフィカルなスプラッシュスクリーンは、 GRUB2 の設定ファイル
/boot/grub2/grub.cfg
を基礎にしています。このファイルには
そのほか、このメニューから起動可能な全てのパーティションとオペレーティングシステムに
関する情報も含まれています。
システムが起動する際、 GRUB2 は常にファイルシステムからメニューファイルを
読み込みます。そのため、 GRUB2 はメニューファイルを変更した場合であっても、
再インストールを行なう必要はありません。また、 grub.cfg
は
カーネルのインストールや削除を行なった場合にも、自動的に再構築されます。
grub.cfg
は grub2-mkconfig -o
/boot/grub2/grub.cfg コマンドを実行すると構築することができます。
このコマンドは、 /etc/default/grub
ファイルと
/etc/grub.d/
ディレクトリ内に存在するスクリプトを、それぞれ
取り込んで設定を構築する仕組みであるため、このファイルを手作業で修正すべきでは
ありません。その代わりに、 /etc/grub.d/
ディレクトリ内の
ソースファイルを編集するか、もしくは YaST ブートローダモジュールを利用して、
GRUB2 の設定ファイルを変更してください。 YaST での設定方法について、詳しくは
10.3項 「YaST を利用したブートローダの設定」 をお読みください。
/etc/default/grub
ファイル¶このファイルには、 GRUB2 に対するより一般的な設定が含まれています。たとえばメニューの 表示時間のほか、起動に利用する既定の OS などが含まれています。利用可能な全てのオプションを 一覧表示するには、下記のコマンドを実行して出力された内容をお読みください:
grep "export GRUB_DEFAULT" -A50 /usr/sbin/grub2-mkconfig | grep GRUB_
既に設定済みの値のほかにも、独自に変数を設定して、 /etc/grub.d
ディレクトリ内のスクリプトから利用することもできます。
このファイルを編集した後は、設定ファイルを更新するために、 grub2-mkconfig -o /boot/grub2/grub.cfg を実行する必要があります。
本章では、 /etc/default/grub
ファイル内で使用する
一般的なオプションを示しています。全てのオプションを参照したい場合は、
GNU GRUB manual (英語) をお読みください。
次回コンピュータが再起動した場合に、起動すべき既定のメニュー項目を 設定します。これは数値で指定できるほか、メニューの項目そのものを 指定したり、 「saved」 を設定したりすることもできます。 たとえば下記のようになります:
GRUB_DEFAULT=2
を指定すると、 3 番目の (数値は
0 から始まります) メニュー項目を起動します。
GRUB_DEFAULT="2>0"
を指定すると、 3 番目のサブ
メニュー内にある最初の項目を起動します。
GRUB_DEFAULT="Example boot menu entry"
を指定すると、
その名前のメニュー項目を起動します。
GRUB_DEFAULT=saved
を指定すると、 grub2-reboot
または grub2-set-default コマンドで設定した項目を
起動します。 grub2-reboot は次回の再起動の際にのみ
適用される項目を、 grub2-set-default は次回以降恒久的に
適用される項目を、それぞれ設定します。
true
に設定すると、起動メニュー内で選択した OS を、
次回以降の既定の起動項目として設定します。この設定を動作させるには、
GRUB_DEFAULT=saved
もあわせて設定する必要があります。
指定した秒数だけ、ユーザからのキー入力を待ちます。この待機時間の間は、
キー入力が行なわれるまでメニューを表示しません。何もキー入力がないまま、
指定した秒数が経過すると、 GRUB_TIMEOUT
に制御が
移ります。また、 GRUB_HIDDEN_TIMEOUT=0
を指定すると、
起動時に Shift が押されているかどうかをチェックし、
押されている場合は起動メニューを表示し、押されていない場合は即時に
既定のメニュー項目を起動します。これは、 GRUB2 で認識できる起動可能な
OS が 1 つしかない場合の既定値です。
false
を指定すると、 GRUB_HIDDEN_TIMEOUT
機能が有効な場合、何もない画面上にカウントダウンタイマーだけが表示される
ようになります。
既定の起動項目を自動的に起動するまでの間、起動メニューを表示して待機する
時間を秒単位で設定します。何かキーを押すとカウントダウンは停止し、
GRUB2 はいずれかの項目を選択するまで待機します。なお、
GRUB_TIMEOUT=-1
を指定すると、起動項目を選択するまでの
間、メニューを表示したままずっと待ち続ける意味になります。
通常/復元モードなど、それぞれの起動項目のコマンドラインに対して、ここで 指定された内容が追加されます。ここにはカーネルに対するオプションなどを 設定します。
GRUB_CMDLINE_LINUX
とほとんど同じですが、通常モードに
対してだけ、この内容が追加されます。
入出力を行なう端末デバイスを指定します。 console
(PC BIOS/EFI コンソール), serial
(シリアルポート端末),
ofconsole
(Open Firmware コンソール),
gfxterm
(グラフィックモードの出力; 既定値) の中から、
いずれかを指定します。
gfxterm
グラフィカル端末で使用する解像度を指定します。
ただし、お使いのグラフィックカード (VBE) 側で対応するモードのみを指定
できます。既定値は auto
で、この場合は最適な解像度を
検出して利用します。なお、 GRUB2 のコマンドラインで vbeinfo
と入力することで、利用可能な画面解像度を表示することができます。コマンド
ラインは、 GRUB2 の起動メニュー画面が表示されたタイミングで、
c を押すことで利用することができます。
また、解像度の設定の後ろに、色深 (ビット単位) を指定することもできます。
たとえば下記のようになります:
GRUB_GFXMODE=1280x1024x24
GRUB2 とオペレーティングシステムで同じ解像度を設定すると、 システムの起動時間を少し短縮することができます。 |
gfxterm
グラフィカル端末で使用する、背景画像を設定します。
このファイルは起動時に GRUB2 が読み込むことのできるファイルでなければ
ならないほか、 .png
, .tga
,
.jpg
, .jpeg
のいずれかの拡張子で
なければなりません。また必要であれば、画像は画面に適合するようにサイズ調整が
行なわれます。
/etc/grub.d
内のスクリプト¶
このディレクトリ内にあるスクリプトは、 grub2-mkconfig
コマンドの実行時に読み込まれ、書かれた命令は /boot/grub2/grub.cfg
内に組み込まれます。また、 grub.cfg
内のメニュー項目の
順序は、このディレクトリ内での実行順序に従います。実行は数字の小さい順に
行われ、たとえば 00_header
, 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 やその他のオペレーティング システムを検出し、それらを GRUB2 のメニューとして配置します。 これらは Linux や Windows, Hurd や Mac OS X など、それぞれのオペレーティング システムを識別したセクションを生成します。
40_custom
grub.cfg
内に挿入されるべき独自の項目を設定する
際に利用する、雛形ファイルです。 exec tail -n +3 $0
以下の行の内容と既定のコメントが、 grub.cfg
内に
直接 (何も変更されることなく) 書き込まれます。
90_persistent
これは grub.cfg
ファイルの一部をコピーし、それらを
変更することなく出力するための、特殊なスクリプトです。これにより、
grub2-mkconfig が実行されても元に戻ることなく、
grub.cfg
内の修正を実施することができます。
/etc/sysconfig/bootloader
ファイル¶
この設定ファイルは YaST を利用してブートローダを設定した場合、および
新しいカーネルをインストールした場合にのみ使用されるものです。このファイルは、
ブートローダの設定ファイル (たとえば GRUB2 であれば
/boot/grub2/grub.cfg
) を書き換える目的で、 perl-bootloader
ライブラリが解釈します。なお、 /etc/sysconfig/bootloader
ファイルは GRUB2 固有の設定ファイルではありません。 openSUSE 上に
インストールされたブートローダであれば、どのブートローダにも適用されます。
カーネル更新後のブートローダ設定 | |
---|---|
新しいカーネルがインストールされると、 perl のブートローダモジュールは毎回、
新しいブートローダの設定ファイルを |
LOADER_TYPE
お使いのシステムにインストールされているブートローダを指定します (GRUB2, GRUB, LILO など)。この項目は手作業では変更せず、 10.3.5項 「ブートローダの種類の設定」 に示されている 手順で YaST を利用し、ブートローダを設定してください。
LOADER_LOCATION
ブートローダの場所を指定します。こちらも手作業で変更せず、 10.3.2項 「ブートローダのインストール先の変更」 に示されている手順で YaST を利用し、ブートローダを設定してください。
DEFAULT_VGA / FAILSAFE_VGA / XEN_VGA
起動処理時に利用するフレームバッファについて、画面の解像度と色深度の
設定を行ないます。これらはカーネルパラメータ vga
に渡される値で、それぞれ既定の起動項目のほか、フェイルセーフ (安全設定) や
XEN 設定で使用されます。それぞれ下記の値を設定することができます:
表10.1 画面解像度と色深度の一覧
640x480 |
800x600 |
1024x768 |
1280x1024 |
1600x1200 | |
---|---|---|---|---|---|
8 ビット |
0x301 |
0x303 |
0x305 |
0x307 |
0x31C |
15 ビット |
0x310 |
0x313 |
0x316 |
0x319 |
0x31D |
16 ビット |
0x311 |
0x314 |
0x317 |
0x31A |
0x31E |
24 ビット |
0x312 |
0x315 |
0x318 |
0x31B |
0x31F |
DEFAULT_APPEND / FAILSAFE_APPEND / XEN_KERNEL_APPEND
ブートローダの設定ファイル内で、既定の項目やフェイルセーフ設定、および XEN
の起動項目に設定する、カーネルパラメータ (vga
以外)
を指定します。
CYCLE_DETECTION / CYCLE_NEXT_ENTRY
ブートサイクルの検出を使用するかどうかと、使用していて起動がうまく
いかなかった場合、次回の起動で、どの代替起動項目 (たとえば
フェイルセーフ
など) を起動するかを指定します。
詳しくは /usr/share/doc/packages/bootcycle/README
をお読みください。
GRUB Legacy では、 device.map
と呼ばれる設定ファイルを
利用して、 BIOS のドライブ番号と Linux のデバイス名を対応付けていました。
この対応付けは常に正しく動作するというものではなく、たとえばお使いの BIOS で
IDE と SCSI の起動順序を入れ替えたような場合に、 GRUB が正しい順序で
認識しないようなことがありました。
GRUB2 では、この問題に対処するため、 grub.cfg
を生成
する際に、デバイスの ID 文字列 (UUID) やファイルシステムのラベルを利用する
ようになりました。また、 GRUB2 ユーティリティでは、特に 1 台のディスクしか
搭載されていないシステムのため、その場で一時的なデバイスマップを作成して
対応するようなことも行っています。
しかしながら、 GRUB2 による自動的なデバイスマッピング機構を無効化する必要が
ある場合もあります。このような場合は、 GRUB Legacy と同様に、
独自のマッピングファイル /boot/grub2/device.map
を
作成してください (詳しくは 9.1.2項 「device.map ファイル」 をお読みください) 。
なお、 GRUB Legacy とは異なり、 GRUB2 のパーティション番号は 1 から
始まる (GRUB Legacy では 0 から始まっていました) ことに注意してください。
メニュー項目の編集は、うまく起動できないシステムを修復したりする場合に 有効な手段となります。ブートローダの設定が誤っているような場合は、手作業で パラメータを入力することで回避することができますし、現在のシステムを恒久的に 変更せず、新しい設定を一時的に試す目的にも有効です。
グラフィカルな起動メニューでは、矢印キーを利用することで起動するオペレーティング システムを選択することができます。 Linux システムを選択した場合、起動プロンプトに 対して、追加のパラメータを入力することもできます。それぞれのメニュー項目を直接 編集したい場合は、 Esc を押してスプラッシュスクリーンを終了し、 GRUB2 のテキストベースのメニューに移動してから、 E を押して ください。この方法で編集を行った場合、その内容は現在の起動に対してのみ適用され、 恒久的に保存されたりすることはありません。
ブートローダのパスワード保護 | |
---|---|
10.2.7項 「起動パスワードの設定」 の手順でブートローダをパスワード保護している 場合は、ブートローダを 「解錠」 するため、ユーザ名とパスワードを 入力する必要があります。 |
起動処理時のキーボードレイアウト | |
---|---|
起動時には英語 (アメリカ英語) キーボードレイアウトだけを利用できます。 詳しくは 図 「英語キーボードのレイアウト」 (↑スタートアップ) をお読みください。 |
選択した起動項目に対応する設定オプションやコマンドが、テキストエディタの インターフェイス内に表示されます。それぞれ矢印キーでカーソルを移動し、 必要に応じて内容を編集してください。また、 TAB キーでは 候補を表示することができるほか、 ESC キーではすべての 編集内容を破棄して、 GRUB2 のメニューに戻ることができます。メニュー 項目の編集が終わったら、 F10 キーを押すことで、起動を 行なうことができます。
オペレーティングシステムが起動する前であっても、 GRUB2 はファイルシステムに アクセスすることができます。 root 権限のないユーザは、この方法で Linux システム内のファイルにアクセスする可能性があります。このようなアクセス方法を 禁止したり、特定のオペレーティングシステムを起動できないようにしたりしたい 場合は、起動パスワードを設定してください。
起動パスワードとスプラッシュスクリーン | |
---|---|
GRUB2 で起動パスワードを使用する場合は、スプラッシュスクリーンは表示 されなくなります。 |
root
ユーザから下記の手順を実施することで、
起動パスワードを設定することができます:
root ユーザのプロンプトから、 grub2-mkpasswd-pbkdf2 を利用し、 パスワードを暗号化します:
# grub2-mkpasswd-pbkdf2 Password: **** Reenter password: **** PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
/etc/grub.d/40_custom
ファイルに、
set superusers コマンドと暗号化された長い文字列を
挿入します。なお、冒頭のコメント部分は削除しないでください:
set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
grub2-mkconfig -o /boot/grub2/grub.cfg を実行し、 メインの設定ファイルに変更点を書き込みます。
上記のように設定すると、いずれかのメニュー項目を起動しようとした場合に
ユーザ名とパスワードの入力が求められるようになります。ユーザ名には
root
を、パスワードには grub2-mkpasswd-pbkdf2
で入力したものを入力してください。それぞれ正しい値を入力した場合にのみ、
システムは選択した項目を起動します。
一般的に、お使いの openSUSE のブートローダを設定するのに最も簡単な方法は、 YaST のモジュールを利用して設定することです。 YaST コントロールセンター から、 + を選択して設定を行ないます。 図9.1「ブートローダの設定」 にあるとおり、ここではお使いの システムでのブートローダ設定が表示され、変更を行なうことができます。
ブートローダの種類やインストール先、または高度なブートローダ設定を閲覧したり変更 したりするには、
を利用します。 なお、 GRUB2 ブートローダを使用するには、利用可能なブートローダの一覧で選択を 行なう必要があります。既定で起動が行なわれるシステムを変更するには、下記の手順で行ないます:
手順10.1 既定のシステムの設定¶
を押し、 の一覧を開きます。
既定で起動したい項目を一覧から選択します。なお、項目の一覧内に 「>」 が書かれている場合、これはサブセクション内に存在して いることを示します。
最後に
を押すと設定を保存することができます。ブートローダのインストール先を変更するには、下記の手順で行ないます:
手順10.2 ブートローダのインストール先の変更¶
タブを選択し、 に対して以下のいずれかを 選択してください:
これを選択すると、最初のディスク (BIOS で設定された順序で 最初にあたるディスク) の MBR にブートローダをインストールします。
これを選択すると、 /
ディレクトリに
割り当てたパーティションに対してブートローダをインストールします
(これが既定値です) 。
これを選択すると、 /boot
ディレクトリに
割り当てたパーティションに対してブートローダをインストールします。
これを選択すると、拡張パーティションコンテナに対してブートローダを インストールします。
ブートローダの場所を手作業で指定するには、このオプションを選択してください。
変更を保存するには、
を押します。ブートローダは既定の項目を、すぐには起動しません。時間切れとして設定した時間が 経過するまでの間、起動するシステムを選択したりカーネルのパラメータを入力したり することができます。ブートローダの時間切れを設定するには、下記の手順で行ないます: The boot loader does not boot the default system immediately. During the time-out, you can select the system to boot or write some kernel parameters. To set the boot loader time-out, proceed as follows:
手順10.3 ブートローダの時間切れ設定¶
タブを選択します。
を押します。
の項目を選択して新しい値を入力するか、 もしくはマウスやキーボードで矢印キーを操作して値を編集します。
を 2 回押して設定を保存します。
タイムアウトを 0 秒に設定した場合の影響 | |
---|---|
タイムアウトに 0 秒を設定すると、システムの起動時に GRUB2 の操作を 行なうことができなくなります。同時に Linux 以外のオペレーティング システムを既定の起動項目として設定すると、 Linux システムへのアクセス を無効化することができます。 |
高度な起動オプションは、
+ を 選択すると設定できるようになります。通常は既定値から変更を行なう必要は ありません。ブートローダを含むパーティションをアクティブに設定します。いくつかの 古いオペレーティングシステム (Windows 98 など) では、アクティブな パーティションからでないと起動できないものがあるためです。
現在の MBR に対し、オペレーティングシステムに依存しない汎用のコードを 書き込みます。
ブートメニューを隠し、既定の項目を起動するように設定します。
これを選択すると、ブートメニューはテキストモードではなく、グラフィカルな スプラッシュ画面を表示するようになります。ブートメニューでの解像度は、
の一覧から設定することができるほか、 で、テーマの定義ファイルを選択する こともできます。お使いのマシンがシリアルコンソールで操作するものである場合は、この項目を 選択して COM ポートと速度を設定してください。詳しくは info grub または http://www.gnu.org/software/grub/manual/grub.html#Serial-terminal (英語) をお読みください。
openSUSE での既定は GRUB2 ですが、 GRUB や LILO 、または ELILO を使用したい場合は下記のような手順で変更します:
タブでは、ブートローダの種類を 選択することができます。LILO はサポート対象外です | |
---|---|
LILO の使用はお勧めできません—openSUSE では サポート対象外であるためです。特別な場合にのみお使いください。 |
手順10.4 ブートローダの種類の設定¶
タブを選択します。
まずは
の項目で または を選択します。ダイアログボックスが開いたら、下記のいずれかの処理を選択してください:
YaST に対して、新しい設定を提案させます。
YaST に対して、現在の設定を変換するよう指示します。 設定の変換を行なうことで、設定のうちのいくつかが失われる場合があります。
カスタムな設定を書き込みます。この処理は openSUSE のインストール時 には選択できません。
それぞれ選択したブートローダの設定を読み込みます。この処理は openSUSE のインストール時には選択できません。
を 2 回押して設定を保存します。
変換にあたっては、古い GRUB2 の設定がディスクに保存されます。これを使用し直す 場合は、ブートローダの種類を GRUB2 に戻してから
を選択してください。この選択肢は、インストール済みのシステムでのみ利用できます。カスタムなブートローダ | |
---|---|
GRUB2, GRUB, LILO のどれでもない他のブートローダを使用したい場合は、 を選択してください。 このオプションを選択する場合は、事前にお使いのブートローダの文書を良くお読み ください。 |
GRUB2 に関する広範囲の情報は、 http://www.gnu.org/software/grub/ (英語) に記載されています。 grub の info ページを読むことも できます。 特定の問題について調べるには、 http://ja.opensuse.org/SDB:SDB (日本語) または http://en.opensuse.org/Portal:Support_database/ (英語) にある サポートデータベースから、 「GRUB2」 キーワードを指定することで検索 することもできます。