目次
概要
本章では、 openSUSE® で使用されるブートローダ GRUB (Grand Unified Bootloader) について、その設定方法を説明しています。全ての設定は専用の YaST モジュールを利用して 行なうことができます。 Linux の起動手順について詳しくない場合は、下記の章をお読み のうえ、起動に関する知識を得てください。また、本章では GRUB で起動する際に発生する 可能性のある問題について、その内容と解決方法についても述べています。
本章では、ブートローダ GRUB を利用した起動の管理と設定方法について述べています。 起動処理の全体像については 第7章 Linux システムの起動 で述べています。 ブートローダはマシン (BIOS) とオペレーティングシステム (openSUSE) の橋渡しを するためのもので、ブートローダの設定を変更すると、オペレーティングシステムの開始 方法について直接的な影響を与えることができます。
本章ではそれぞれ下記の用語を使用しています。説明をよくお読みのうえ、 以降を読み進めてください:
MBR の構造は、オペレーティングシステムでそれぞれ独立した仕組みになっています。
最初の 446 バイトがプログラムコードとして予約されています。この領域には一般に
ブートローダプログラムや、オペレーティングシステムを選択するための仕組みの
一部が書き込まれています。次の 64 バイトは、最大で 4 つまでの定義を行なうこと
ができるパーティションテーブルの領域です。パーティションテーブルにはハード
ディスクのパーティション情報と、そのパーティションの種類が含まれています。
オペレーティングシステムは、この一覧を利用してパーティションを処理します。
通常の MBR では、必ずいずれか 1 つのパーティションに対して
アクティブ のマークが付けられています。
MBR の最後の 2 バイトは 「マジックナンバー」 と呼ばれているもので、
固定値 (AA55
) が書かれています。マジックナンバーが左記の値で
ない場合、 BIOS は MBR を無効なものとして扱い、起動時に読み込みを行なわなくなります。
ブートセクタとはハードディスクのパーティション内にある最初のセクタで、
他のパーティションに対する 「コンテナ」 である拡張パーティション
以外の場所に存在しています。これらのブートセクタは 512 バイトから構成
されていて、それぞれのパーティション内にインストールされている、 DOS, windows,
OS/2 などのオペレーティングシステムを起動するためのコード領域になっています。
また、ブートセクタにはファイルシステム内の特別な情報も保持しています。
Linux パーティションのブートセクタには、 XFS の場合を除き、ファイルシステム
設定後には何も書かれていません。そのため Linux パーティションは、自分自身に
カーネルや有効なルートファイルシステムが含まれていたとしても、自分自身で起動を
行なうことができません。なお、起動可能なシステムが含まれるパーティションの場合、
MBR と同じマジックナンバー (AA55
) が書かれています。
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 シェルで利用できます。
/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
コマンドで指定することもできます。
timeout
と default
コマンドは通常、
メニュー項目よりも前に記述します。ファイルの記入例は
9.1.1.2項 「メニューファイルの例」 にありますので、こちらを参考にして
ください。
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
下記は GRUB メニューファイルの構造を示すための例です。下記のインストール例
では起動パーティションが /dev/sda5
に、
ルートパーティションが /dev/sda7
に、
Windows のインストールが /dev/sda1
にそれぞれ
行なわれている場合を想定しています。
gfxmenu (hd0,4)/boot/message color white/blue black/light-gray default 0 timeout 8 title linux root (hd0,4) kernel /boot/vmlinuz root=/dev/sda7 vga=791 resume=/dev/sda9 initrd /boot/initrd title windows rootnoverify (hd0,0) chainloader +1 title floppy rootnoverify (hd0,0) chainloader (fd0)+1 title failsafe 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
最初のブロックでは、スプラッシュスクリーンの設定を行なっています:
| |
色の設定を行なっています。前景を白、背景を青に設定し、選択しているものを 黒で、選択の背景をライトグレーで表示します。色の設定はスプラッシュスクリーン には影響しません。 Esc でスプラッシュスクリーンを抜けた 場合にのみ意味のある設定です。 | |
最初の ( | |
ユーザ入力が 8 秒間行なわれないと、 GRUB は自動的に既定の項目を起動
します。自動起動を無効化するには、 |
2 番目の以降のブロックは、様々なオペレーティングシステムを起動するための
設定です。それぞれのオペレーティングシステムの設定は、
title
で始まります。
最初の項目 ( | |
2 つめの項目は Windows を読み込むための項目です。 Windows は最初の
ハードディスク ( | |
3 つめの項目は、単に BIOS 設定を変更せずにフロッピィディスクから起動する ための項目です。 | |
|
メニューファイルは必要な時に変更することができ、 GRUB は次の起動時に 変更済みの設定を使用します。設定の変更は、 YaST かエディタなどで編集して ください。また、代替策として GRUB の機能を利用して一時的に変更する こともできます。詳しくは 9.1.1.3項 「起動処理時のメニュー項目編集」 を お読みください。
グラフィカルな起動メニューでは、カーソルキーを利用して起動するオペレーティング システムを選択することができます。なお、 Linux システムを選択した場合は、 起動プロンプトを利用して追加のパラメータを設定することもできます。個別の メニュー項目を直接編集したい場合は Esc を押し、スプラッシュ スクリーンを抜けて GRUB のテキストベースのメニューを表示させてから、 E を押します。このようにして変更した内容は、その時点の 起動でのみ有効で、恒久的に適用されることはありません。
起動処理時のキーボードレイアウト | |
---|---|
起動時には英語 (アメリカ英語) キーボードレイアウトだけを利用できます。 詳しくは 図 「英語キーボードのレイアウト」 (↑スタートアップ) をお読みください。 |
メニュー項目の編集を行なうと、うまく起動できないシステムに対する修復を 行なうことができます。これは、間違ったブートローダの設定を手作業で修正する ことで、うまく起動するための回避策を入力することができるためです。 起動処理内での手動でのパラメータ入力は、システムの設定を恒久的に変更せず、 一時的に新しい設定をテストしたりしたい場合にも便利です。
編集モードを有効にしたあと、まずはカーソルキーを利用して編集する行を選択 します。ここからさらに E を押すと、選択した行を編集する ことができます。この方法で、起動処理を行なう前に間違ったパーティション指定や パス指定を修正してください。編集モードを抜けてメニューに戻るには、 Enter を押します。メニューから B を 押すと、その設定で起動を行ないます。それ以外の処理は、画面下部のヘルプ テキストに表示されています。
起動オプションを恒久的に変更してそれらの設定をカーネルに渡したい場合は、
root
ユーザで
menu.lst
ファイルを開き、それぞれ必要なカーネル
パラメータを既存の行に設定してください。複数のパラメータはスペースで区切ります:
title linux
root(hd0,0)
kernel /vmlinuz root=/dev/sda3 追加のパラメータ
initrd /initrd
GRUB は次回の起動時に自動で設定したパラメータを読み込みます。 YaST ブートローダモジュールからでも同じことを行なうことができます。 上記と同様に、新しいパラメータはスペースで区切って指定します。
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
menu.lst
と device.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
を指定してその間違った実装を
無視するように指定しています。
/etc/sysconfig/bootloader
ファイル¶
この設定ファイルは YaST を利用してブートローダを設定した場合、および
新しいカーネルをインストールした場合にのみ使用されるものです。このファイルは、
ブートローダの設定ファイル (たとえば GRUB であれば
/boot/grub/menu.lst
) を書き換える perl-bootloader
ライブラリが解釈します。なお、 /etc/sysconfig/bootloader
ファイルは GRUB 固有の設定ファイルではありません。 openSUSE 上に
インストールされたブートローダであれば、どのブートローダにも適用されます。
カーネル更新後のブートローダ設定 | |
---|---|
新しいカーネルがインストールされると、 perl のブートローダモジュールは毎回、
新しいブートローダの設定ファイル (たとえば GRUB であれば
|
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
をお読みください。
オペレーティングシステムが起動する前であっても、 GRUB はファイルシステムに アクセスすることができます。 root 権限のないユーザは、この方法で Linux システム内のファイルにアクセスする可能性があります。このようなアクセス方法を 禁止したり、特定のオペレーティングシステムを起動できないようにしたりしたい 場合は、起動パスワードを設定してください。
起動パスワードとスプラッシュスクリーン | |
---|---|
GRUB で起動パスワードを使用する場合は、スプラッシュスクリーンは表示 されなくなります。 |
root
ユーザから下記の手順を実施することで、
起動パスワードを設定することができます:
まずはコマンドプロンプトから grub-md5-crypt を利用し、パスワードを暗号化します:
# grub-md5-crypt Password: **** Retype password: **** Encrypted: $1$lS2dv/$JOYcdxIn7CJk9xShzzJVw/
上記の出力で、 "Encrypted:" 以降の部分を
menu.lst
ファイル内のグローバル
セクションに貼り付けます:
gfxmenu (hd0,4)/message color white/blue black/light-gray default 0 timeout 8 password --md5 $1$lS2dv/$JOYcdxIn7CJk9xShzzJVw/
上記のように設定することで、起動プロンプトから P を押し、 正しいパスワードを入力した場合にのみ、 GRUB コマンドを実行することが できるようになります。ただし、起動メニュー内に記載されているオペレーティング システムであれば、パスワードの入力なしでも実行できます。
起動メニューから 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) を起動すること ができるようになります。
お使いの openSUSE のブートローダを設定するのに最も簡単な方法は、 YaST のモジュールを利用して設定することです。 YaST のコントロールセンター から、 + を選択して設定を行ないます。 図9.1「ブートローダの設定」 にあるとおり、ここではお使いの システムでのブートローダ設定が表示され、変更を行なうことができます。
個別のオペレーティングシステムに関するブートローダのセクションを編集したり変更 したり、削除したりするには、 9.1項 「GRUB での起動」 をお読みください。
タブを利用します。 セクションを追加するには を、既存のセクションについて 設定値を変更するにはセクションを選択してから をそれぞれ 押してください。またセクションを削除するには、削除したい項目を選んで を押してください。ブートローダのオプションについて詳しく 知りたい場合は、まずブートローダの種類やインストール先、または高度なブートローダ設定を閲覧したり変更 したりするには、
を利用します。高度なオプションにアクセスするには、 9.1項 「GRUB での起動」 をお読みください。また、既存の設定ファイルを削除して することもできます。また、 YaST に対して するように求めることもできるほか、設定をディスクに書き込んだり、ディスクから既存の 設定を再読み込みしたりすることもできます。インストール時に保存しておいた マスターブートレコード (MBR) に戻すには、 を選択してください。
ボタンを押す ことで表示されるドロップダウンメニューを利用します。内蔵のエディタを利用して GRUB の設定ファイルを直接編集することができます。詳しくはブートローダの場所を変更するには、下記の手順で行ないます:
手順9.2 ブートローダのインストール先の変更¶
タブを選択し、 に対して以下のいずれかを 選択してください:
これを選択すると、最初のディスク (BIOS で設定された順序で 最初にあたるディスク) の MBR にブートローダをインストールします。
これを選択すると、 /
ディレクトリに
割り当てたパーティションに対してブートローダをインストールします
(これが既定値です) 。
これを選択すると、 /boot
ディレクトリに
割り当てたパーティションに対してブートローダをインストールします。
これを選択すると、拡張パーティションコンテナに対してブートローダを インストールします。
ブートローダの場所を手作業で指定するには、このオプションを選択してください。
変更を保存するには、
を押します。ブートローダは既定の項目を、すぐには起動しません。時間切れとして設定した時間が 経過するまでの間、起動するシステムを選択したりカーネルのパラメータを入力したり することができます。ブートローダの時間切れを設定するには、下記の手順で行ないます:
手順9.3 ブートローダの時間切れ設定¶
タブを選択します。
を押します。
の項目を選択して新しい値を入力するか、 もしくはマウスやキーボードで矢印キーを操作して値を編集します。
を 2 回押して設定を保存します。
タイムアウトを 0 秒に設定した場合の影響 | |
---|---|
タイムアウトに 0 秒を設定すると、システムの起動時に GRUB の操作を 行なうことができなくなります。同時に Linux 以外のオペレーティング システムを既定の起動項目として設定すると、 Linux システムへのアクセス を無効化することができます。 |
お使いのコンピュータに 2 台以上のハードディスクが接続されている場合、 マシンの BIOS 設定に合わせてディスクの起動順序を指定することができます (9.1.2項 「device.map ファイル」 も合わせてご覧ください) 。 これを行なうには、下記の手順で行ないます:
手順9.5 ディスク順序の設定¶
タブを選択します。
を押します。
複数のディスクが一覧表示されている場合、ディスクを選択してから
または を押し、 ディスクの順序を入れ替えます。を 2 回押して設定を保存します。
高度な起動オプションは、
+ を 選択すると設定できるようになります。通常は既定値から変更を行なう必要は ありません。ブートローダを含むパーティションをアクティブに設定します。いくつかの 古いオペレーティングシステム (Windows 98 など) では、アクティブな パーティションからでないと起動できないものがあるためです。
現在の MBR に対し、オペレーティングシステムに依存しない汎用のコードを 書き込みます。
GRUB をデバッグモードで動作させ、ディスクの動作についてメッセージを 表示するようにします。
ブートメニューを隠し、既定の項目を起動するように設定します。
ブートメニューを隠した場合、システムの起動時に GRUB にアクセス することができなくなります。同時に Linux 以外のオペレーティング システムを既定の起動項目として設定すると、 Linux システムへのアクセス を無効化することができます。 |
トラステッドコンピューティング機能に対応する信頼済み GRUB を 起動するようにします。
GRUB で聴覚信号を有効または無効に設定します。
起動スクリーンを表示する際に利用するグラフィックファイルのパスを指定します。
お使いのマシンがシリアルコンソールで操作するものである場合は、この項目を 選択して COM ポートと速度を設定してください。詳しくは info grub または http://www.gnu.org/software/grub/manual/grub.html#Serial-terminal (英語) をお読みください。
openSUSE での既定は GRUB ですが、 LILO または ELILO を使用したい場合は下記のような手順で変更します:
タブでは、ブートローダの種類を 選択することができます。LILO はサポート対象外です | |
---|---|
LILO の使用はお勧めできません—openSUSE では サポート対象外であるためです。特別な場合にのみお使いください。 |
手順9.6 ブートローダの種類の設定¶
タブを選択します。
まずは
の項目で を選択します。ダイアログボックスが開いたら、下記のいずれかの処理を選択してください:
YaST に対して、新しい設定を提案させます。
YaST に対して、現在の設定を変換するよう指示します。 設定の変換を行なうことで、設定のうちのいくつかが失われる場合があります。
カスタムな設定を書き込みます。この処理は openSUSE のインストール時 には選択できません。
/etc/lilo.conf
ファイルに保存された設定を読み込み
ます。この処理は openSUSE のインストール時には選択できません。
を 2 回押して設定を保存します。
変換にあたっては、古い GRUB の設定がディスクに保存されます。これを使用し直す 場合は、ブートローダの種類を GRUB に戻してから
を選択してください。この選択肢は、インストール済みのシステムでのみ利用できます。カスタムなブートローダ | |
---|---|
GRUB でも LILO でもないその他のブートローダを使用したい場合は、 を選択してください。 このオプションを選択する場合は、事前にお使いのブートローダの文書を良くお読み ください。 |
YaST では、 Linux でのブートローダをアンインストールし、 Linux がインストール される前に存在していた通常の MBR に戻す機能も提供しています。インストール時に YaST は自動で元の MBR をバックアップしているため、必要に応じてそこから書き戻す ことができるようになっています。
GRUB をアンインストールするには、 YaST を起動して
+ を 選択し、ブートローダモジュールを起動します。そこからさらに + を選択し、確認のため を 押します。お使いのシステムを起動マネージャから起動する際に問題が発生した場合や、お使いの ハードディスクにブートマネージャをインストールすることができない場合は、 Linux を起動するために必要な全てのスタートアップファイルを含んだ、起動 CD を作成する こともできます。この作業を行なうには、お使いのシステムに CD ライター (書き込み 可能な CD ドライブ) が必要です。
GRUB を利用した起動 CD-ROM 作成を行なうには単純に、特別な形式の
第 2 ステージ である、 stage2_eltorito
と、カスタマイズした menu.lst
ファイル (必要であれば) を
用意するだけです。従来必要だった stage1
と
stage2
は、もはや必要ではありません。
手順9.7 起動 CD の作成
まずは ISO イメージを作成するためのディレクトリに移動します。たとえば:
cd /tmp
下記のようにして GRUB 用のサブディレクトリを作成し、その中の
iso
ディレクトリに移動します:
mkdir -p iso/boot/grub && cd iso
それぞれ 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
まずは root (hd
のように書かれている項目を
x
,
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
と指定すると、起動処理時に現われる起動メッセージの出力を抑止することができます。
あとは下記のコマンドで 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
できあがったファイル grub.iso
を、お好きなツールを利用して
CD メディアに書き込みます。ただし、 ISO イメージをデータファイルとして書き込んだり
せず、お使いのユーティリティで CD イメージとして書き込むオプションを指定してください。
グラフィカルな SUSE スクリーンは、カーネルパラメータに
vga=
を指定した場合にのみ、
1 つめのコンソールに表示されるものです。 YaST を利用してインストールした場合、
このオプションは選択した解像度とグラフィックカードにあわせて自動的に有効化
されます。 SUSE スクリーンを無効化したい場合は、下記の 3 種類の方法で
無効化することができます:
値
グラフィカルな画面を無効化するには、 echo 0 >/proc/splash というコマンドを入力します。 再度有効化したい場合は、 echo 1 >/proc/splash と入力します。
お使いのブートローダの設定に、 splash=0
というカーネル
パラメータを記入します。詳しい情報は 第9章 ブートローダ GRUB をお読み
ください。なお、テキストモードをお使いになりたい場合 (古いバージョンでの
既定値) は、 vga=normal
と記入します。
新しくカーネルをコンパイルし、
内の の オプション選択を外します。カーネル内でのフレームバッファサポートを無効化すると、 スプラッシュスクリーンについても自動的に無効に設定されます。サポート対象外です | |
---|---|
SUSE では、独自にコンパイルしたカーネルを利用して起動した場合、いかなる サポートをも提供いたしません。 |
この章では、 GRUB を利用して起動する際に発生しうる問題や、それらの問題に対する 解決方法について概要を述べています。 いくつかの問題は http://ja.opensuse.org/SDB:SDB (日本語) や http://en.opensuse.org/Portal:Support_database/ (英語) にあるサポートデータベースに記載されています。 キーワード検索を行なう場合は、 GRUB や 起動 、または ブートローダ などで 検索してください。
XFS にはパーティションの起動ブロック内に 第 1 ステージ
を保存しておくための領域がありません。そのため、ブートローダの配置場所として
は、 XFS パーティションを設定しないでください。この問題は、 XFS 以外の
ファイルシステムでフォーマットする個別の起動パーティションを作成することで、
解決することができます。
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 のようなオペレーティングシステムでは、 1 台目のハードディスクからのみ 起動することができます。 1 台目以外のハードディスクにそのようなオペレーティング システムをインストールした場合は、関連するメニュー項目を編集することで、論理的な 変更を行なうことができます。
... title windows map (hd0) (hd1) map (hd1) (hd0) chainloader(hd1,0)+1 ...
上記の例では、 Windows が 2 台目のハードディスクから始まっていることを示して
います。ハードディスクの論理的な順序は map
コマンドで
変更することができます。この仕組みは、 GRUB のメニューファイルには影響
しません。そのため、 2 台目のハードディスクは chainloader
に指定しなければなりません。
GRUB に関する広範囲の情報は、 http://www.gnu.org/software/grub/ (英語) に記載されています。 grub の info ページを読むことも できます。 特定の問題について調べるには、 http://ja.opensuse.org/SDB:SDB (日本語) または http://en.opensuse.org/Portal:Support_database/ (英語) にある サポートデータベースから、 「GRUB」 キーワードを指定することで検索 することもできます。