第8章 ブートローダ GRUB2

目次

8.1. GRUB Legacy との主な違い
8.2. 設定ファイルの構造
8.3. YaST を利用したブートローダの設定
8.4. Linux ブートローダのアンインストール
8.5. グラフィカルな SUSE スクリーン
8.6. トラブルシューティング
8.7. さらなる情報

本章では、 openSUSE® で使用されるブートローダ GRUB2 (Grand Unified Bootloader) について、その設定方法を説明しています。これは従来の GRUB ブートローダの後継にあたる ソフトウエアです。明示的に区別するため、従来のバージョンは GRUB Legacy とも呼ばれます (詳しくは 第7章 ブートローダ GRUB をお読みください) 。 GRUB2 は openSUSE® バージョン より既定のブートローダと なりました。主な設定は専用の YaST モジュールを利用して 行なうことができます。 Linux の起動手順について詳しくない場合は、 第7章 ブートローダ GRUB をお読みのうえ、起動に関する背景的な知識を得てください。また、起動処理の概要は 第5章 Linux システムの起動 で説明しています。

8.1. GRUB Legacy との主な違い

  • 設定を複数のファイルに分散して保存するようになりました。また、設定ファイルの 書式も変更されています。

  • パーティション番号が 1 から始まるようになりました (従来の GRUB Legacy では 0 から始まっていました) 。

  • さらに多くのファイルシステムに対応しています。

  • GRUB2 では LVM や RAID デバイス上のファイルを、直接読めるようになりました。

  • メニュー項目の名称を含め、ユーザインターフェイスを翻訳できるようになりました。

  • GRUB では、ファイルシステムなどの特定の機能に対応するために、モジュールを 読み込む仕組みが追加されています。

  • ステージ と呼ばれる仕組みは廃止され、 GRUB2 を構成する イメージの構造が変更されています。

8.2. 設定ファイルの構造

GRUB2 の設定は、下記に示すファイルで行ないます:

/boot/grub2/grub.cfg

このファイルには、 GRUB2 のメニュー項目に関する全ての情報が保存 されています。これは従来の GRUB Legacy で言うところの menu.lst にあたるものです。 grub.cfggrub2-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 を忘れずに実行してください。

8.2.1. /boot/grub2/grub.cfg ファイル

起動メニューでのグラフィカルなスプラッシュスクリーンは、 GRUB2 の設定ファイル /boot/grub2/grub.cfg を基礎にしています。このファイルには そのほか、このメニューから起動可能な全てのパーティションとオペレーティングシステムに 関する情報も含まれています。

システムが起動する際、 GRUB2 は常にファイルシステムからメニューファイルを 読み込みます。そのため、 GRUB2 はメニューファイルを変更した場合であっても、 再インストールを行なう必要はありません。また、 grub.cfg は カーネルのインストールや削除を行なった場合にも、自動的に再構築されます。

grub.cfggrub2-mkconfig -o /boot/grub2/grub.cfg コマンドを実行すると構築することができます。 このコマンドは、 /etc/default/grub ファイルと /etc/grub.d/ ディレクトリ内に存在するスクリプトを、それぞれ 取り込んで設定を構築する仕組みであるため、このファイルを手作業で修正すべきでは ありません。その代わりに、 /etc/grub.d/ ディレクトリ内の ソースファイルを編集するか、もしくは YaST ブートローダモジュールを利用して、 GRUB2 の設定ファイルを変更してください。 YaST での設定方法について、詳しくは 8.3項 「YaST を利用したブートローダの設定」 をお読みください。

8.2.2. /etc/default/grub ファイル

このファイルには、 GRUB2 に対するより一般的な設定が含まれています。たとえばメニューの 表示時間のほか、起動に利用する既定の OS などが含まれています。このファイルは、 root の権限があれば、自由に編集することができます。全てのオプションを一覧表示するには、 下記のコマンドを実行して出力された内容をお読みください:

grep "export GRUB_DEFAULT" -A50 /usr/sbin/grub2-mkconfig | grep GRUB_

既に設定済みの値のほかにも、独自に変数を設定して、 /etc/grub.d ディレクトリ内のスクリプトから利用することもできます。

/etc/default/grub はシステムファイルであるため、このファイルを 編集するには root 権限が必要となります。また、このファイルを編集した後は、 設定ファイルを更新するために、 grub2-mkconfig -o /boot/grub2/grub.cfg を実行する必要があります。

8.2.2.1. 一般的なオプション

本章では、 /etc/default/grub ファイル内で使用する 一般的なオプションを示しています。全てのオプションを参照したい場合は、 GNU GRUB manual (英語) をお読みください。

GRUB_DEFAULT

次回コンピュータが再起動した場合に、起動すべき既定のメニュー項目を 設定します。これは数値で指定できるほか、メニューの項目そのものを 指定したり、 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 は次回以降恒久的に 適用される項目を、それぞれ設定します。

GRUB_SAVEDEFAULT

true に設定すると、起動メニュー内で選択した OS を、 次回以降の既定の起動項目として設定します。この設定を動作させるには、 GRUB_DEFAULT=saved もあわせて設定する必要があります。

GRUB_HIDDEN_TIMEOUT

指定した秒数だけ、ユーザからのキー入力を待ちます。この待機時間の間は、 キー入力が行なわれるまでメニューを表示しません。何もキー入力がないまま、 指定した秒数が経過すると、 GRUB_TIMEOUT に制御が 移ります。また、 GRUB_HIDDEN_TIMEOUT=0 を指定すると、 起動時に が押されているかどうかをチェックし、 押されている場合は起動メニューを表示し、押されていない場合は即時に 既定のメニュー項目を起動します。これは、 GRUB2 で認識できる起動可能な OS が 1 つしかない場合の既定値です。

GRUB_HIDDEN_TIMEOUT_QUIET

false を指定すると、 GRUB_HIDDEN_TIMEOUT 機能が有効な場合、何もない画面上にカウントダウンタイマーだけが表示される ようになります。

GRUB_TIMEOUT

既定の起動項目を自動的に起動するまでの間、起動メニューを表示して待機する 時間を秒単位で設定します。何かキーを押すとカウントダウンは停止し、 GRUB2 はいずれかの項目を選択するまで待機します。なお、 GRUB_TIMEOUT=-1 を指定すると、起動項目を選択するまでの 間、メニューを表示したままずっと待ち続ける意味になります。

GRUB_CMDLINE_LINUX

通常/復元モードなど、それぞれの起動項目のコマンドラインに対して、ここで 指定された内容が追加されます。ここにはカーネルに対するオプションなどを 設定します。

GRUB_CMDLINE_LINUX_DEFAULT

GRUB_CMDLINE_LINUX とほとんど同じですが、通常モードに 対してだけ、この内容が追加されます。

GRUB_TERMINAL

入出力を行なう端末デバイスを指定します。 console (PC BIOS/EFI コンソール), serial (シリアルポート端末), ofconsole (Open Firmware コンソール), gfxterm (グラフィックモードの出力; 既定値) の中から、 いずれかを指定します。

GRUB_GFXMODE

gfxterm グラフィカル端末で使用する解像度を指定します。 ただし、お使いのグラフィックカード (VBE) 側で対応するモードのみを指定 できます。既定値は auto で、この場合は最適な解像度を 検出して利用します。なお、 GRUB2 のコマンドラインで vbeinfo と入力することで、利用可能な画面解像度を表示することができます。コマンド ラインは、 GRUB2 の起動メニュー画面が表示されたタイミングで、 c を押すことで利用することができます。

また、解像度の設定の後ろに、色深 (ビット単位) を指定することもできます。 たとえば下記のようになります: GRUB_GFXMODE=1280x1024x24

[Tip]

GRUB2 とオペレーティングシステムで同じ解像度を設定すると、 システムの起動時間を少し短縮することができます。

GRUB_BACKGROUND

gfxterm グラフィカル端末で使用する、背景画像を設定します。 このファイルは起動時に GRUB2 が読み込むことのできるファイルでなければ ならないほか、 .png, .tga, .jpg, .jpeg のいずれかの拡張子で なければなりません。また必要であれば、画像は画面に適合するようにサイズ調整が 行なわれます。

8.2.3. /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 内の修正を実施することができます。

8.2.3.1. ハードディスクとパーティションの名前ルール

GRUB2 でハードディスクやパーティションに対して使用する名前付けは、通常の Linux のデバイス名とは異なるものを使用します。 BIOS が使用する単純なディスク 列挙の仕組みにとても似ていて、文法は BSD システムの方式に似たものに なっています。また、 GRUB2 では最初のパーティション番号は 0 になっています。 つまり、 (hd0,0) は最初のハードディスク内にある 最初のパーティションを意味することになります。一般的なデスクトップマシン の場合、プライマリマスターに接続されているハードディスクのことを指し、 Linux のデバイス名で言うと、 /dev/sda1 になります。

4 つまで作成できるプライマリパーティションは、それぞれ 0 から 3 までの間に割り当てられています。論理パーティションは 4 以降になります:

(hd0,0)   最初のハードディスクにある最初のプライマリパーティション
(hd0,1)   2 つめのプライマリパーティション
(hd0,2)   3 つめのプライマリパーティション
(hd0,3)   4 つめのプライマリパーティション (一般的には拡張パーティション)
(hd0,4)   最初の論理パーティション
(hd0,5)   2 つめの論理パーティション

BIOS でのデバイス表記と同じで、 GRUB2 は PATA (IDE), SATA, SCSI, ハードウエア RAID デバイスを区別せずに使用します。 BIOS やその他のコントローラで認識される 全てのハードディスクは、 BIOS 内で設定した起動順序に従って番号が付けられます。

残念ながら、 Linux のデバイス名を正しく BIOS のデバイス名に変換することは できません。この割り当ては特定のアルゴリズムに従って生成され、 device.map ファイルに保存されます。必要であれば、 このファイルを編集することもできます。 device.map に関する情報は、 8.2.4項 「device.map ファイル」 をお読みください。

GRUB2 で完全なパスを指定するには、まず括弧内にデバイス名を指定したあと、 パーティション (ファイルシステム) 内でのパスを記述します。 なお、パスはスラッシュから書き始めます。たとえば起動可能なカーネルが 最初の PATA (IDE) ハードディスクにおける最初のパーティションに存在する場合、 下記のように指定することができます:

(hd0,0)/boot/vmlinuz

8.2.3.2. メニューファイルの例

下記は GRUB2 メニューファイルの構造を示すための例です。下記のインストール例 では起動パーティションが /dev/sda5 に、 ルートパーティションが /dev/sda7 に、 Windows のインストールが /dev/sda1 にそれぞれ 行なわれている場合を想定しています。

gfxmenu (hd0,4)/boot/message1
color white/blue black/light-gray2
default 03
timeout 84

title linux5
   root (hd0,4)
   kernel /boot/vmlinuz root=/dev/sda7 vga=791 resume=/dev/sda9
   initrd /boot/initrd

title windows6
   rootnoverify (hd0,0)
   chainloader +1

title floppy7
   rootnoverify (hd0,0)
   chainloader (fd0)+1

title failsafe8
   root (hd0,4)
   kernel /boot/vmlinuz.shipped root=/dev/sda7 ide=nodma \
   apm=off acpi=off vga=normal nosmp maxcpus=0 3 noresume
   initrd /boot/initrd.shipped

最初のブロックでは、スプラッシュスクリーンの設定を行なっています:

1

/dev/sda5 パーティション内の /boot ディレクトリにある、 message ファイルを、背景イメージとして 使用する設定です。

2

色の設定を行なっています。前景を白、背景を青に設定し、選択しているものを 黒で、選択の背景をライトグレーで表示します。色の設定はスプラッシュスクリーン には影響しません。 Esc でスプラッシュスクリーンを抜けた 場合にのみ意味のある設定です。

3

最初の (0) メニュー項目である title linux を既定の設定として起動します。

4

ユーザ入力が 8 秒間行なわれないと、 GRUB2 は自動的に既定の項目を起動 します。自動起動を無効化するには、 timeout の行を 削除してください。 timeout 0 を設定すると、既定の 項目を即時起動する意味になります。

2 番目の以降のブロックは、様々なオペレーティングシステムを起動するための 設定です。それぞれのオペレーティングシステムの設定は、 title で始まります。

5

最初の項目 (title linux) は、 openSUSE を 起動するための項目です。カーネル (vmlinuz) は 最初のハードディスクにおける最初の論理パーティション (ブートパーティション) 内に位置しています。ルートパーティションや VGA モードなどのカーネル パラメータが後に続いています。ルートパーティションの指定は Linux の 名前付けルールに従って /dev/sda7/ と書かれています。 これはこの情報を読むのがカーネルであるためで、 GRUB2 はその値について 何も処理を行なわないためです。 initrd についても 同様に、最初のハードディスクにおける最初の論理パーティション内に 位置しています。

6

2 つめの項目は Windows を読み込むための項目です。 Windows は最初の ハードディスク (hd0,0) における最初のパーティション から起動する設定になっています。 chainloader +1 のコマンドは、 GRUB2 に対して指定したパーティションで最初のセクタを 読み出して実行するように指定するコマンドです。

7

3 つめの項目は、単に BIOS 設定を変更せずにフロッピィディスクから起動する ための項目です。

8

failsafe と書かれている項目は、問題の発生している マシンであっても Linux を起動できるよう、カーネルパラメータをいくつか 指定して起動するための項目です。

メニューファイルは必要な時に変更することができ、 GRUB2 は次の起動時に 変更済みの設定を使用します。設定の変更は、 YaST かエディタなどで編集して ください。また、代替策として GRUB2 の機能を利用して一時的に変更する こともできます。詳しくは 8.2.3.3項 「起動処理時のメニュー項目編集」 を お読みください。

8.2.3.3. 起動処理時のメニュー項目編集

グラフィカルな起動メニューでは、カーソルキーを利用して起動するオペレーティング システムを選択することができます。なお、 Linux システムを選択した場合は、 起動プロンプトを利用して追加のパラメータを設定することもできます。個別の メニュー項目を直接編集したい場合は Esc を押し、スプラッシュ スクリーンを抜けて GRUB2 のテキストベースのメニューを表示させてから、 E を押します。このようにして変更した内容は、その時点の 起動でのみ有効で、恒久的に適用されることはありません。

[Important]起動処理時のキーボードレイアウト

起動時には英語 (アメリカ英語) キーボードレイアウトだけを利用できます。 詳しくは 図 「英語キーボードのレイアウト」 (↑スタートアップ) をお読みください。

メニュー項目の編集を行なうと、うまく起動できないシステムに対する修復を 行なうことができます。これは、間違ったブートローダの設定を手作業で修正する ことで、うまく起動するための回避策を入力することができるためです。 起動処理内での手動でのパラメータ入力は、システムの設定を恒久的に変更せず、 一時的に新しい設定をテストしたりしたい場合にも便利です。

編集モードを有効にしたあと、まずはカーソルキーを利用して編集する行を選択 します。ここからさらに E を押すと、選択した行を編集する ことができます。この方法で、起動処理を行なう前に間違ったパーティション指定や パス指定を修正してください。編集モードを抜けてメニューに戻るには、 Enter を押します。メニューから B を 押すと、その設定で起動を行ないます。それ以外の処理は、画面下部のヘルプ テキストに表示されています。

起動オプションを恒久的に変更してそれらの設定をカーネルに渡したい場合は、 root ユーザで menu.lst ファイルを開き、それぞれ必要なカーネル パラメータを既存の行に設定してください。複数のパラメータはスペースで区切ります:

title linux
   root(hd0,0)
     kernel /vmlinuz root=/dev/sda3 additional parameter
   initrd /initrd

GRUB2 は次回の起動時に自動で設定したパラメータを読み込みます。 YaST ブートローダモジュールからでも同じことを行なうことができます。 上記と同様に、新しいパラメータはスペースで区切って指定します。

8.2.4. device.map ファイル

device.map ファイルは、 GRUB2 や BIOS のデバイス名を Linux のデバイス名に変換するためのファイルです。 PATA (IDE) と SCSI のハードディスクが 混在するシステムの場合、 GRUB2 は特殊な手順で起動順序を判断しなければなりません。 これは GRUB2 が起動順序の設定を行なっている BIOS 情報にアクセスできない 可能性があるためです。 GRUB2 はこの分析結果を /boot/grub/device.map ファイルに保存します。たとえば BIOS で SCSI よりも PATA を優先して起動するように設定しているシステムでは、 device.map ファイルは下記のようになります:

(fd0)  /dev/fd0
(hd0)  /dev/sda
(hd1)  /dev/sdb

もしくは下記のようになる場合もあります:

(fd0)  /dev/fd0
(hd0)  /dev/disk-by-id/DISK1 の ID
(hd1)  /dev/disk-by-id/DISK2 の ID

PATA (IDE) や SCSI 、もしくはその他のハードディスクは様々な要素に依存していて、 Linux ではその割り当てを識別することができないことから、 device.map ファイルのある順序を手動で編集することも できます。起動時に何らかの問題が発生した場合は、このファイル内にある順序が BIOS の順序とあっているかどうかを確認し、 GRUB2 プロンプトから必要に応じて 一時的に変更してみてください。その設定で Linux システムが問題なく起動する ようであれば、 YaST ブートローダモジュールやエディタなどを利用して、 device.map ファイルを恒久的に変更してください。

device.map ファイルを手作業で変更した場合は、 下記のコマンドを入力して GRUB2 を再インストールしてください。 このコマンドを実行すると、 device.map ファイルを 読み込み直し、 grub.conf ファイルにあるコマンドを 実行します:

grub --batch < /etc/grub.conf

8.2.5. /etc/sysconfig/bootloader ファイル

この設定ファイルは YaST を利用してブートローダを設定した場合、および 新しいカーネルをインストールした場合にのみ使用されるものです。このファイルは、 ブートローダの設定ファイル (たとえば GRUB2 であれば /boot/grub/menu.lst) を書き換える perl-bootloader ライブラリが解釈します。なお、 /etc/sysconfig/bootloader ファイルは GRUB2 固有の設定ファイルではありません。 openSUSE 上に インストールされたブートローダであれば、どのブートローダにも適用されます。

[Note]カーネル更新後のブートローダ設定

新しいカーネルがインストールされると、 perl のブートローダモジュールは毎回、 新しいブートローダの設定ファイル (たとえば GRUB2 であれば /boot/grub/menu.lst) を /etc/sysconfig/bootloader に設定された既定値で 作成します。カーネルパラメータをカスタマイズしている場合は、 /etc/sysconfig/bootloader を適宜変更し、 カーネル更新後も必要な設定が反映されるようにしてください。

LOADER_TYPE

お使いのシステムにインストールされているブートローダを指定します (たとえば GRUB2 や LILO など)。この項目は手動では変更せず、 手順7.6「ブートローダの種類の設定」 に示されている 手順で YaST を利用し、ブートローダを設定してください。

DEFAULT_VGA / FAILSAFE_VGA / XEN_VGA

起動処理時に利用するフレームバッファについて、画面の解像度と色深度の 設定を行ないます。これらはカーネルパラメータ vga に渡される値で、それぞれ既定の起動項目のほか、フェイルセーフ (安全設定) や XEN 設定で使用されます。それぞれ下記の値を設定することができます:

表8.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

ブートサイクルの検出を使用するかどうかと、使用していて起動がうまく いかなかった場合に、 /boot/grub/menu.lst 内で どの代替項目 (たとえば フェイルセーフ など) を起動するかを指定します。詳しくは /usr/share/doc/packages/bootcycle/README をお読みください。

8.2.6. 起動パスワードの設定

オペレーティングシステムが起動する前であっても、 GRUB2 はファイルシステムに アクセスすることができます。 root 権限のないユーザは、この方法で Linux システム内のファイルにアクセスする可能性があります。このようなアクセス方法を 禁止したり、特定のオペレーティングシステムを起動できないようにしたりしたい 場合は、起動パスワードを設定してください。

[Important]起動パスワードとスプラッシュスクリーン

GRUB2 で起動パスワードを使用する場合は、スプラッシュスクリーンは表示 されなくなります。

root ユーザから下記の手順を実施することで、 起動パスワードを設定することができます:

  1. At the root prompt, encrypt the password using grub-md5-crypt:

    # grub-md5-crypt
    Password: ****
    Retype password: ****
    Encrypted: $1$lS2dv/$JOYcdxIn7CJk9xShzzJVw/
  2. 上記の出力で、 "Encrypted:" 以降の部分を menu.lst ファイル内のグローバル セクションに貼り付けます:

    gfxmenu (hd0,4)/message
    color white/blue black/light-gray
    default 0
    timeout 8
    password --md5 $1$lS2dv/$JOYcdxIn7CJk9xShzzJVw/

    上記のように設定することで、起動プロンプトから P を押し、 正しいパスワードを入力した場合にのみ、 GRUB2 コマンドを実行することが できるようになります。ただし、起動メニュー内に記載されているオペレーティング システムであれば、パスワードの入力なしでも実行できます。

  3. 起動メニューから 1 つまたは複数のオペレーティングシステムの起動が できないようにするには、パスワード無しでは起動できないように設定することが できます。 menu.lst ファイル内のセクションに対して、 lock という行を追加してください。たとえば下記のように なります:

    title linux
       kernel (hd0,4)/vmlinuz root=/dev/sda7 vga=791
       initrd (hd0,4)/initrd
       lock

    上記の設定でシステムを再起動すると、起動メニューから Linux を選択すると 下記のようなエラーメッセージが表示されます:

    Error 32: Must be authenticated

    Enter を押すとメニューに入ることができます。 さらに P を押してパスワードプロンプトを表示させ、 パスワードを入力して Enter を押してください。 すると選択したオペレーティングシステム (この場合は Linux) を起動すること ができるようになります。

8.3. YaST を利用したブートローダの設定

一般的に、お使いの openSUSE のブートローダを設定するのに最も簡単な方法は、 YaST のモジュールを利用して設定することです。 YaST コントロールセンター から、 システム+ブートローダ を選択して設定を行ないます。 図7.1「ブートローダの設定」 にあるとおり、ここではお使いの システムでのブートローダ設定が表示され、変更を行なうことができます。

図8.1 ブートローダの設定

ブートローダの設定

ブートローダの種類やインストール先、または高度なブートローダ設定を閲覧したり変更 したりするには、 ブートローダのインストール を利用します。 なお、 GRUB2 ブートローダを使用するには、利用可能なブートローダの一覧で選択を 行なう必要があります。

8.3.1. 既定の起動項目の設定

既定で起動が行なわれるシステムを変更するには、下記の手順で行ないます:

手順8.1 既定のシステムの設定

  1. ブートローダのオプション を押し、 既定のブートセクション の一覧を開きます。

  2. 既定で起動したい項目を一覧から選択します。なお、項目の一覧内に > が書かれている場合、これはサブセクション内に存在して いることを示します。

  3. 最後に OK を押すと設定を保存することができます。

8.3.2. ブートローダのインストール先の変更

ブートローダのインストール先を変更するには、下記の手順で行ないます:

手順8.2 ブートローダのインストール先の変更

  1. ブートローダのインストール タブを選択し、 ブートローダの場所 に対して以下のいずれかを 選択してください:

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

    これを選択すると、最初のディスク (BIOS で設定された順序で 最初にあたるディスク) の MBR にブートローダをインストールします。

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

    これを選択すると、 / ディレクトリに 割り当てたパーティションに対してブートローダをインストールします (これが既定値です) 。

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

    これを選択すると、 /boot ディレクトリに 割り当てたパーティションに対してブートローダをインストールします。

    拡張パーティションから起動

    これを選択すると、拡張パーティションコンテナに対してブートローダを インストールします。

    カスタムブートパーティション

    ブートローダの場所を手作業で指定するには、このオプションを選択してください。

  2. 変更を保存するには、 OK を押します。

8.3.3. ブートローダの時間切れ設定

ブートローダは既定の項目を、すぐには起動しません。時間切れとして設定した時間が 経過するまでの間、起動するシステムを選択したりカーネルのパラメータを入力したり することができます。ブートローダの時間切れを設定するには、下記の手順で行ないます: 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:

手順8.3 ブートローダの時間切れ設定

  1. ブートローダのインストール タブを選択します。

  2. ブートローダのオプション を押します。

  3. タイムアウト (秒) の項目を選択して新しい値を入力するか、 もしくはマウスやキーボードで矢印キーを操作して値を編集します。

  4. OK を 2 回押して設定を保存します。

[Warning]タイムアウトを 0 秒に設定した場合の影響

タイムアウトに 0 秒を設定すると、システムの起動時に GRUB2 の操作を 行なうことができなくなります。同時に Linux 以外のオペレーティング システムを既定の起動項目として設定すると、 Linux システムへのアクセス を無効化することができます。

8.3.4. 高度なオプションの設定

高度な起動オプションは、 ブートローダのインストール +ブートローダのオプション を 選択すると設定できるようになります。通常は既定値から変更を行なう必要は ありません。

図8.2 Boot Loader Options

Boot Loader Options

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

ブートローダを含むパーティションをアクティブに設定します。いくつかの 古いオペレーティングシステム (Windows 98 など) では、アクティブな パーティションからでないと起動できないものがあるためです。

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

現在の MBR に対し、オペレーティングシステムに依存しない汎用のコードを 書き込みます。

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

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

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

これを選択すると、ブートメニューはテキストモードではなく、グラフィカルな スプラッシュ画面を表示するようになります。ブートメニューでの解像度は、 コンソールの解像度 の一覧から設定することができるほか、 コンソールのテーマ で、テーマの定義ファイルを選択する こともできます。

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

お使いのマシンがシリアルコンソールで操作するものである場合は、この項目を 選択して COM ポートと速度を設定してください。詳しくは info grub または http://www.gnu.org/software/grub/manual/grub.html#Serial-terminal (英語) をお読みください。

8.3.5. ブートローダの種類の設定

ブートローダのインストール タブでは、ブートローダの種類を 選択することができます。 openSUSE での既定は GRUB2 ですが、 LILO または ELILO を使用したい場合は下記のような手順で変更します:

[Warning]LILO はサポート対象外です

LILO の使用はお勧めできません—openSUSE では サポート対象外であるためです。特別な場合にのみお使いください。

手順8.4 ブートローダの種類の設定

  1. ブートローダのインストール タブを選択します。

  2. まずは ブートローダ の項目で LILO を選択します。

  3. ダイアログボックスが開いたら、下記のいずれかの処理を選択してください:

    新しい設定を提示

    YaST に対して、新しい設定を提案させます。

    現在の設定を変換

    YaST に対して、現在の設定を変換するよう指示します。 設定の変換を行なうことで、設定のうちのいくつかが失われる場合があります。

    新しい設定の作成

    カスタムな設定を書き込みます。この処理は openSUSE のインストール時 には選択できません。

    ディスクに保存された設定の読み込み

    /etc/lilo.conf ファイルに保存された設定を読み込み ます。この処理は openSUSE のインストール時には選択できません。

  4. OK を 2 回押して設定を保存します。

変換にあたっては、古い GRUB2 の設定がディスクに保存されます。これを使用し直す 場合は、ブートローダの種類を GRUB2 に戻してから 変換前に保存した設定に戻す を選択してください。この選択肢は、インストール済みのシステムでのみ利用できます。

[Note]カスタムなブートローダ

GRUB2 でも LILO でもないその他のブートローダを使用したい場合は、 ブートローダをインストールしない を選択してください。 このオプションを選択する場合は、事前にお使いのブートローダの文書を良くお読み ください。

8.4. Linux ブートローダのアンインストール

YaST では、 Linux でのブートローダをアンインストールし、 Linux がインストール される前に存在していた通常の MBR に戻す機能も提供しています。インストール時に YaST は自動で元の MBR をバックアップしているため、必要に応じてそこから書き戻す ことができるようになっています。

GRUB2 をアンインストールするには、 YaST を起動して システム+ブートローダ を 選択し、ブートローダモジュールを起動します。そこからさらに その他+ハードディスクの MBR を復元する を選択し、確認のため はい、上書きします を 押します。

8.5. グラフィカルな SUSE スクリーン

グラフィカルな SUSE スクリーンは、カーネルパラメータに vga= を指定した場合にのみ、 1 つめのコンソールに表示されるものです。 YaST を利用してインストールした場合、 このオプションは選択した解像度とグラフィックカードにあわせて自動的に有効化 されます。 SUSE スクリーンを無効化したい場合は、下記の 3 種類の方法で 無効化することができます:

必要に応じて SUSE スクリーンを無効化する方法

グラフィカルな画面を無効化するには、 echo 0 >/proc/splash というコマンドを入力します。 再度有効化したい場合は、 echo 1 >/proc/splash と入力します。

既定で SUSE スクリーンを無効化する方法

お使いのブートローダの設定に、 splash=0 というカーネル パラメータを記入します。詳しい情報は 第8章 ブートローダ GRUB2 をお読み ください。なお、テキストモードをお使いになりたい場合 (古いバージョンでの 既定値) は、 vga=normal と記入します。

完全に SUSE スクリーンを無効化する方法

新しくカーネルをコンパイルし、 framebuffer support 内の Use splash screen instead of boot logo の オプション選択を外します。カーネル内でのフレームバッファサポートを無効化すると、 スプラッシュスクリーンについても自動的に無効に設定されます。

[Warning]サポート対象外です

SUSE では、独自にコンパイルしたカーネルを利用して起動した場合、いかなる サポートをも提供いたしません。

8.6. トラブルシューティング

この章では、 GRUB2 を利用して起動する際に発生しうる問題や、それらの問題に対する 解決方法について概要を述べています。 いくつかの問題は http://ja.opensuse.org/SDB:SDB (日本語) や http://en.opensuse.org/Portal:Support_database/ (英語) にあるサポートデータベースに記載されています。 キーワード検索を行なう場合は、 GRUB2起動 、または ブートローダ などで 検索してください。

GRUB2 と XFS

XFS にはパーティションの起動ブロック内に 第 1 ステージ を保存しておくための領域がありません。そのため、ブートローダの配置場所として は、 XFS パーティションを設定しないでください。この問題は、 XFS 以外の ファイルシステムでフォーマットする個別の起動パーティションを作成することで、 解決することができます。

GRUB2 が GRUB Geom エラーを報告する問題

GRUB2 はシステムを起動する際、接続されたハードディスクのジオメトリ情報 (配置情報) を確認します。 BIOS は時として矛盾した情報を提供することがあり、 これによって GRUB2 は Geom Error を報告します。この場合は BIOS を更新して 解決してください。

また GRUB2 は、 BIOS で登録されていない追加のハードディスクから Linux を起動しようとした場合にもこのエラーメッセージを表示します。 ブートローダの 第 1 ステージ が見つかって正しく 読み込めたものの、 第 2 ステージ が見つからない 場合に発生します。このような問題が発生した場合は、新しいハードディスクを BIOS に登録することで解決することができます。

複数のハードディスクを含むシステムで起動できない問題

YaST はインストール時に、ハードディスクの起動順序を正しく判別しない 場合があります。たとえば、 BIOS での起動順序が SCSI, PATA (IDE) の順であるにも 関わらず、 GRUB2 では PATA (IDE) ディスクを hd0 と認識し、 SCSI ディスクを hd1 と認識することがあります。

この場合は GRUB2 のコマンドラインを利用して、起動処理中にハードディスクの 順序を修正してください。システムを問題なく起動できたら、 device.map ファイルを編集し、恒久的に新しい割り当てを 書き込んでください。その後、 /boot/grub/menu.lst/boot/grub/device.map にある GRUB2 のデバイス名を 確認し、下記のコマンドでブートローダを再インストールします:

grub --batch < /etc/grub.conf
Windows を 2 台目のハードディスクから起動する方法

Windows のようなオペレーティングシステムでは、 1 台目のハードディスクからのみ 起動することができます。 1 台目以外のハードディスクにそのようなオペレーティング システムをインストールした場合は、関連するメニュー項目を編集することで、論理的な 変更を行なうことができます。

...
title windows
   map (hd0) (hd1)
   map (hd1) (hd0)
   chainloader(hd1,0)+1
...

上記の例では、 Windows が 2 台目のハードディスクから始まっていることを示して います。ハードディスクの論理的な順序は map コマンドで 変更することができます。この仕組みは、 GRUB2 のメニューファイルには影響 しません。そのため、 2 台目のハードディスクは chainloader に指定しなければなりません。

8.7. さらなる情報

GRUB2 に関する広範囲の情報は、 http://www.gnu.org/software/grub/ (英語) に記載されています。 grub の info ページを読むことも できます。 特定の問題について調べるには、 http://ja.opensuse.org/SDB:SDB (日本語) または http://en.opensuse.org/Portal:Support_database/ (英語) にある サポートデータベースから、 GRUB2 キーワードを指定することで検索 することもできます。