第9章 ブートローダ GRUB

目次

9.1. GRUB での起動
9.2. YaST を利用したブートローダの設定
9.3. Linux ブートローダのアンインストール
9.4. 起動 CD の作成
9.5. グラフィカルな SUSE スクリーン
9.6. トラブルシューティング
9.7. さらなる情報

概要

本章では、 openSUSE® で使用されるブートローダ GRUB (Grand Unified Bootloader) について、その設定方法を説明しています。全ての設定は専用の YaST モジュールを利用して 行なうことができます。 Linux の起動手順について詳しくない場合は、下記の章をお読み のうえ、起動に関する知識を得てください。また、本章では GRUB で起動する際に発生する 可能性のある問題について、その内容と解決方法についても述べています。

本章では、ブートローダ GRUB を利用した起動の管理と設定方法について述べています。 起動処理の全体像については 第7章 Linux システムの起動 で述べています。 ブートローダはマシン (BIOS) とオペレーティングシステム (openSUSE) の橋渡しを するためのもので、ブートローダの設定を変更すると、オペレーティングシステムの開始 方法について直接的な影響を与えることができます。

本章ではそれぞれ下記の用語を使用しています。説明をよくお読みのうえ、 以降を読み進めてください:

MBR (マスターブートレコード)

MBR の構造は、オペレーティングシステムでそれぞれ独立した仕組みになっています。 最初の 446 バイトがプログラムコードとして予約されています。この領域には一般に ブートローダプログラムや、オペレーティングシステムを選択するための仕組みの 一部が書き込まれています。次の 64 バイトは、最大で 4 つまでの定義を行なうこと ができるパーティションテーブルの領域です。パーティションテーブルにはハード ディスクのパーティション情報と、そのパーティションの種類が含まれています。 オペレーティングシステムは、この一覧を利用してパーティションを処理します。 通常の MBR では、必ずいずれか 1 つのパーティションに対して アクティブ のマークが付けられています。 MBR の最後の 2 バイトは マジックナンバー と呼ばれているもので、 固定値 (AA55) が書かれています。マジックナンバーが左記の値で ない場合、 BIOS は MBR を無効なものとして扱い、起動時に読み込みを行なわなくなります。

ブートセクタ

ブートセクタとはハードディスクのパーティション内にある最初のセクタで、 他のパーティションに対する コンテナ である拡張パーティション 以外の場所に存在しています。これらのブートセクタは 512 バイトから構成 されていて、それぞれのパーティション内にインストールされている、 DOS, windows, OS/2 などのオペレーティングシステムを起動するためのコード領域になっています。 また、ブートセクタにはファイルシステム内の特別な情報も保持しています。 Linux パーティションのブートセクタには、 XFS の場合を除き、ファイルシステム 設定後には何も書かれていません。そのため Linux パーティションは、自分自身に カーネルや有効なルートファイルシステムが含まれていたとしても、自分自身で起動を 行なうことができません。なお、起動可能なシステムが含まれるパーティションの場合、 MBR と同じマジックナンバー (AA55) が書かれています。

9.1. GRUB での起動

GRUB は 2 つのステージから構成されています。第 1 ステージは 512 バイトから 構成されているもので、ブートローダの第 2 ステージを読み出す処理だけを 行ないます。第 2 ステージがブートローダの中心部分です。

設定によっては、これらの中間である第 1.5 ステージを利用することもできます。 このステージは適切なファイルシステムから第 2 ステージを読み込むもので、 YaST から GRUB を初期設定したとき、可能であればこの方法がとられます。

第 2 ステージでは様々なファイルシステムにアクセスすることができます。 現時点では ext2, ext3, reiserfs, minix, Windows で使用される DOS FAT ファイルシステムにそれぞれ対応しています。拡張機能として、 XFS, BSD システムで 使用される UFS, FFS にも対応しています。 0.95 以降のバージョンで、 GRUB は El Torito 仕様に準拠した ISO 9660 標準ファイルシステムを含む CD または DVD からの起動も行なうことができるようになりました。また GRUB は、 ファイルシステムが起動する前であっても、対応する BIOS ディスクデバイス (BIOS で検出されたフロッピィディスク、ハードディスク、 CD/DVD ドライブ) 内に あるファイルシステムにアクセスすることができます。そのため、 GRUB の設定 ファイル (menu.lst) を書き換えても、ブートマネージャの インストールをやり直す必要がありません。システムが起動すると、 grub は正しい パスからメニューファイルやカーネルのパーティションデータ、初期 RAM ディスク (initrd) などを再度読み込み、場所を確定します。

GRUB における実際の設定は、下記に示す 4 つのファイルから構成されています:

/boot/grub/menu.lst

このファイルには、 GRUB から起動することのできるパーティションや オペレーティングシステムに関する全ての情報が保存されています。 この情報が存在しないと GRUB はプロンプトを表示し、ユーザに対して 入力を求める動作を行ないます。詳しくは 9.1.1.3項 「起動処理時のメニュー項目編集」 をお読みください。

/boot/grub/device.map

このファイルには、 GRUB のデバイス名や BIOS 表記法と Linux のデバイス名の 変換情報が記載されています。

/etc/grub.conf

このファイルには、ブートローダを正しくインストールするために必要な、 GRUB に対するコマンドやパラメータ、オプションが含まれています。

/etc/sysconfig/bootloader

このファイルは perl-bootloader ライブラリから読み込むことができるもので、 YaST からブートローダを設定する際、および新しいカーネルがインストールされた 際に利用されます。このファイルにはカーネルパラメータなどの設定オプションが 含まれていて、これらはブートローダの設定ファイルに対して既定で追加されます。

GRUB は様々な方法でコントロールすることができます。既存の設定ファイルにある 起動項目はグラフィカルなメニュー (スプラッシュスクリーン) で選択することが できます。設定は menu.lst ファイルから読み込みます。

GRUB では、起動を行なう前に全ての起動パラメータを変更することができます。 たとえばメニューファイルを編集していたときに存在したエラーを、起動時に変更する ことも可能です。起動コマンドは入力用のプロンプトから対話的に入力することも できます。詳しくは 9.1.1.3項 「起動処理時のメニュー項目編集」 をお読みください。 また GRUB は、起動前にカーネルの位置や initrd の位置を 指定することもできます。この方法により、ブートローダの設定に存在していない インストール済みオペレーティングシステムを起動することができます。

GRUB には 2 つのバージョンが存在します: ブートローダと、通常の Linux プログラム (/usr/sbin/grub) です。後者は GRUB シェル と呼ばれる場合もあります。 GRUB シェルは インストール済みのシステムで GRUB のエミュレーションを行ない、 GRUB を インストールしたり新しい設定を適用前に確認したりすることができます。ハードディスクや フロッピィディスクのブートローダとして GRUB をインストールする機能は、 GRUB の内蔵コマンド setup を利用して行ないます。 このコマンドは、 Linux が読み込まれている場合に GRUB シェルで利用できます。

9.1.1. /boot/grub/menu.lst ファイル

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

システムが起動する際、 GRUB は常にファイルシステムからメニューファイルを 読み込みます。そのため、 GRUB はメニューファイルを変更した場合であっても、 再インストールを行なう必要はありません。 GRUB の設定ファイルを変更するには、 9.2項 「YaST を利用したブートローダの設定」 に書かれている手順で YaST ブートローダモジュールをお使いください。

メニューファイルにはコマンドが含まれていますが、文法はとても単純です。 シェルのようにして各行にコマンドを記述し、スペースで区切ってオプションの パラメータを指定するだけです。過去のバージョンとの互換性を保つ理由から、 コマンドによっては最初のパラメータの冒頭に = を入れる ことができるものもあります。コメントは行頭にハッシュ記号 (#) を記入します。

メニュー一覧で項目の識別を行なうため、各項目に対して title (タイトル) を設定します。キーワード title 以降に設定した スペースを含む任意のテキストを、メニュー内の選択オプションとして表示すること ができます。 title 以降の行に続くコマンドは、そのメニュー が選択された場合にのみ実行されます。

最も単純なケースは、他のオペレーティングシステムのブートローダに転送することです。 そのときに使用するコマンドは chainloader で、その後ろに 続くパラメータとして、他のパーティションのブートブロックを示す値を入力します。 GRUB では、ブロックの指定を下記のようにして行ないます:

chainloader (hd0,3)+1

GRUB でのデバイス名については、 9.1.1.1項 「ハードディスクとパーティションの名前ルール」 で 説明しています。上記の例では、 1 台目のハードディスクの 4 つめの パーティションに対して、最初のブロックを指定しています。

また、 kernel コマンドを利用すると、カーネルイメージを指定 することができます。最初のパラメータには、パーティション内でのカーネルイメージの パスを指定します。それ以降のパラメータには、カーネルのコマンドラインを指定します。

カーネル内蔵のドライバではルートパーティションにアクセスできなかったり、 高度なホットプラグ機能のある Linux システムであったりする場合は、 initrd を個別の GRUB コマンドとして指定しなければなりません。 initrd コマンドのパラメータは 1 つだけ、 initrd に対する パスを指定します。 initrd を読み込む場所は読み込んだ カーネルに書き込まれるため、 initrd コマンドは kernel コマンドの後に記述しなければなりません。

root コマンドはカーネルと initrd ファイルの指定を単純化 するための仕組みです。 root に指定するパラメータは 1 つだけで、 デバイスやパーティションを指定します。ここで指定したデバイスは、各コマンドで 個別にパスを指定せず、かつ次の root コマンドが現われない 限り、全てのカーネルや initrd 、もしくはその他のファイル パス指定に使用されます。

boot コマンドは各メニュー項目の最後に実行されるコマンド ですが、メニューファイルでは記入する必要はありません。しかしながら、 GRUB を対話的に使用している場合は、最後に boot コマンドを入力 しなければなりません。このコマンド自身には何もパラメータを指定しません。 単にそれまでに指定したカーネルイメージやチェインローダを読み出すだけです。

全てのメニュー項目を記入したら、それらの中のいずれかを default (既定の) 項目として指定します。指定を行なわない 場合は、最初の項目 (0 を指定した場合と同じ) を選択 します。また、既定の項目を選択するまでのタイムアウトを timeout コマンドで指定することもできます。 timeoutdefault コマンドは通常、 メニュー項目よりも前に記述します。ファイルの記入例は 9.1.1.2項 「メニューファイルの例」 にありますので、こちらを参考にして ください。

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

GRUB でハードディスクやパーティションに対して使用する名前付けは、通常の Linux のデバイス名とは異なるものを使用します。 BIOS が使用する単純なディスク 列挙の仕組みにとても似ていて、文法は BSD システムの方式に似たものに なっています。また、 GRUB では最初のパーティション番号は 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 でのデバイス表記と同じで、 GRUB は PATA (IDE), SATA, SCSI, ハードウエア RAID デバイスを区別せずに使用します。 BIOS やその他のコントローラで認識される 全てのハードディスクは、 BIOS 内で設定した起動順序に従って番号が付けられます。

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

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

(hd0,0)/boot/vmlinuz

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

下記は GRUB メニューファイルの構造を示すための例です。下記のインストール例 では起動パーティションが /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 秒間行なわれないと、 GRUB は自動的に既定の項目を起動 します。自動起動を無効化するには、 timeout の行を 削除してください。 timeout 0 を設定すると、既定の 項目を即時起動する意味になります。

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

5

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

6

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

7

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

8

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

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

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

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

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

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

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

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

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

title linux
   root(hd0,0)
     kernel /vmlinuz root=/dev/sda3 追加のパラメータ
   initrd /initrd

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

9.1.2. device.map ファイル

device.map ファイルは、 GRUB や BIOS のデバイス名を Linux のデバイス名に変換するためのファイルです。 PATA (IDE) と SCSI のハードディスクが 混在するシステムの場合、 GRUB は特殊な手順で起動順序を判断しなければなりません。 これは GRUB が起動順序の設定を行なっている BIOS 情報にアクセスできない 可能性があるためです。 GRUB はこの分析結果を /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 の順序とあっているかどうかを確認し、 GRUB プロンプトから必要に応じて 一時的に変更してみてください。その設定で Linux システムが問題なく起動する ようであれば、 YaST ブートローダモジュールやエディタなどを利用して、 device.map ファイルを恒久的に変更してください。

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

grub --batch < /etc/grub.conf

9.1.3. /etc/grub.conf ファイル

menu.lstdevice.map に続く 3 番目に重要な GRUB の設定ファイルとして、 /etc/grub.conf ファイルがあります。このファイルには GRUB シェルに対するコマンドとパラメータが含まれていて、ブートローダを 正しくインストールするのに必要なファイルです:

setup --stage2=/boot/grub/stage2 --force-lba (hd0,1) (hd0,1)
   quit

上記の例では GRUB に対し、最初のハードディスクにある 2 番目のパーティション (hd0,1) にブートローダをインストールし、起動イメージが同じパーティション内に 存在していることを示しています。 --stage2=/boot/grub/stage2 パラメータは、マウント済みのファイルシステムから 第 2 ステージ のイメージをインストールするために 必要なパラメータです。また、 BIOS によっては LBA サポートの実装が誤っている 場合があるため、 --force-lba を指定してその間違った実装を 無視するように指定しています。

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

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

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

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

LOADER_TYPE

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

DEFAULT_VGA / FAILSAFE_VGA / XEN_VGA

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

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

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

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

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

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

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

  1. まずはコマンドプロンプトから 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 を押し、 正しいパスワードを入力した場合にのみ、 GRUB コマンドを実行することが できるようになります。ただし、起動メニュー内に記載されているオペレーティング システムであれば、パスワードの入力なしでも実行できます。

  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) を起動すること ができるようになります。

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

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

図9.1 ブートローダの設定

ブートローダの設定

個別のオペレーティングシステムに関するブートローダのセクションを編集したり変更 したり、削除したりするには、 セクション管理 タブを利用します。 セクションを追加するには 追加 を、既存のセクションについて 設定値を変更するにはセクションを選択してから 編集 をそれぞれ 押してください。またセクションを削除するには、削除したい項目を選んで 削除 を押してください。ブートローダのオプションについて詳しく 知りたい場合は、まず 9.1項 「GRUB での起動」 をお読みください。

ブートローダの種類やインストール先、または高度なブートローダ設定を閲覧したり変更 したりするには、 ブートローダのインストール を利用します。

高度なオプションにアクセスするには、 その他 ボタンを押す ことで表示されるドロップダウンメニューを利用します。内蔵のエディタを利用して GRUB の設定ファイルを直接編集することができます。詳しくは 9.1項 「GRUB での起動」 をお読みください。また、既存の設定ファイルを削除して 全く新しい設定を作成 することもできます。また、 YaST に対して 新しい設定を提示 するように求めることもできるほか、設定をディスクに書き込んだり、ディスクから既存の 設定を再読み込みしたりすることもできます。インストール時に保存しておいた マスターブートレコード (MBR) に戻すには、 ハードディスクの MBR を 復元する を選択してください。

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

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

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

  1. セクション管理 タブを開きます。

  2. 既定で起動したい項目を一覧から選択します。

  3. 既定に設定 を押します。

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

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

ブートローダの場所を変更するには、下記の手順で行ないます:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

この YaST モジュールを利用することで、起動を確認するためのパスワードを 設定することができます。これにより追加のセキュリティ保護を実現することができます。

手順9.4 起動パスワードの設定

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

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

  3. ブートローダをパスワードで保護する のオプションを選択し、 起動時に入力させたいパスワードを パスワード の欄に それぞれ入力します。

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

9.2.5. ディスク順序の設定

お使いのコンピュータに 2 台以上のハードディスクが接続されている場合、 マシンの BIOS 設定に合わせてディスクの起動順序を指定することができます (9.1.2項 「device.map ファイル」 も合わせてご覧ください) 。 これを行なうには、下記の手順で行ないます:

手順9.5 ディスク順序の設定

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

  2. ブートローダのインストール詳細 を押します。

  3. 複数のディスクが一覧表示されている場合、ディスクを選択してから 上へ または 下へ を押し、 ディスクの順序を入れ替えます。

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

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

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

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

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

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

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

デバッグ用フラグ

GRUB をデバッグモードで動作させ、ディスクの動作についてメッセージを 表示するようにします。

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

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

[Warning]

ブートメニューを隠した場合、システムの起動時に GRUB にアクセス することができなくなります。同時に Linux 以外のオペレーティング システムを既定の起動項目として設定すると、 Linux システムへのアクセス を無効化することができます。

信頼済み Grub を使用する

トラステッドコンピューティング機能に対応する信頼済み GRUB を 起動するようにします。

聴覚信号を有効にする

GRUB で聴覚信号を有効または無効に設定します。

グラフィカルメニューファイル

起動スクリーンを表示する際に利用するグラフィックファイルのパスを指定します。

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

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

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

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

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

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

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

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

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

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

    新しい設定を提示

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

    現在の設定を変換

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

    新しい設定の作成

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

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

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

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

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

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

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

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

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

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

9.4. 起動 CD の作成

お使いのシステムを起動マネージャから起動する際に問題が発生した場合や、お使いの ハードディスクにブートマネージャをインストールすることができない場合は、 Linux を起動するために必要な全てのスタートアップファイルを含んだ、起動 CD を作成する こともできます。この作業を行なうには、お使いのシステムに CD ライター (書き込み 可能な CD ドライブ) が必要です。

GRUB を利用した起動 CD-ROM 作成を行なうには単純に、特別な形式の 第 2 ステージ である、 stage2_eltorito と、カスタマイズした menu.lst ファイル (必要であれば) を 用意するだけです。従来必要だった stage1stage2 は、もはや必要ではありません。

手順9.7 起動 CD の作成

  1. まずは ISO イメージを作成するためのディレクトリに移動します。たとえば: cd /tmp

  2. 下記のようにして GRUB 用のサブディレクトリを作成し、その中の iso ディレクトリに移動します:

    mkdir -p iso/boot/grub && cd iso
  3. それぞれ iso/boot/ ディレクトリに、カーネルと stage2_eltorito, initrd, menu.lst, message ファイルをコピーします:

    cp /boot/vmlinuz boot/
    cp /boot/initrd boot/
    cp /boot/message boot/
    cp /usr/lib/grub/stage2_eltorito boot/grub
    cp /boot/grub/menu.lst boot/grub
  4. まずは root (hdx, y) のように書かれている項目を root (cd) のように修正し、お使いの CD-ROM デバイスを 指し示すようにします。また、それぞれメッセージファイルやカーネル、 initrd についても、 /boot/message (メッセージファイル), /boot/vmlinuz (カーネル), /boot/initrd (initrd) を指定します。全ての設定が完了すると、 menu.lst は下記のような形になります:

    timeout 8
    default 0
    gfxmenu (cd)/boot/message
    
    title Linux
       root (cd)
       kernel /boot/vmlinuz root=/dev/sda5 vga=794 resume=/dev/sda1 \
       splash=verbose showopts
       initrd /boot/initrd

    splash=verbose の代わりに splash=silent と指定すると、起動処理時に現われる起動メッセージの出力を抑止することができます。

  5. あとは下記のコマンドで ISO イメージを作成します:

    genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot \
    -boot-load-size 4 -boot-info-table -iso-level 2 -input-charset utf-8 \
    -o grub.iso /tmp/iso
  6. できあがったファイル grub.iso を、お好きなツールを利用して CD メディアに書き込みます。ただし、 ISO イメージをデータファイルとして書き込んだり せず、お使いのユーティリティで CD イメージとして書き込むオプションを指定してください。

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

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

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

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

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

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

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

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

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

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

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

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

GRUB と XFS

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

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

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

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

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

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

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

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 コマンドで 変更することができます。この仕組みは、 GRUB のメニューファイルには影響 しません。そのため、 2 台目のハードディスクは chainloader に指定しなければなりません。

9.7. さらなる情報

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


openSUSE リファレンス 13.1