ブート・ローダー対決: LILO と GRUB について

競合ブート・ローダーの比較検証

一般的なデスクトップ・ユーザーから Linux のシステム管理者まで、ほとんどの Linux® ユーザーはブート・ローダーと呼ばれるユーティリティーを使用しています。このユーティリティーの種類によって、提供されるサポートや機能のレベルが異なります。一般に、Linux の配布版とともにインストールされるデフォルトのブート・ローダーが必ずしもユーザーのニーズに最も適しているとは限りません。各ブート・ローダーのデフォルト設定についても同じことが言えます。ここでは、一般的なブート・ローダーの中から LILO と GRUB の 2 つの長所と短所について説明するとともに、お使いのマシンを最大限に活用するための各種設定について提案します。

Laurence Bonney, WebSphere MQ JMS Test Team Lead, IBM

Laurence Bonneyは、イギリスにあるIBM Hursley Labsのソフトウェア・エンジニアであり、IBM WebSphere MQ JMS製品のテスト・チームの技術チームリーダーとして働いています。暇な時にはギターを弾き(上手くありません)、休暇がある限りサーフィンに行き、そしてビデオゲームで遊んでいます。



2005年 8月 24日

仕事や経験に関係なく、事実上すべての Linux ユーザーが使っているユーティリティーがブート・ローダーです。ここでは、ブート・ローダーの仕組みについて説明し、一般的な 2 つのブート・ローダー、LILO (LInux LOader) と GNU GRUB (GRand Unified Boot loader) を紹介した後、それぞれの長所と短所について検討します。

ブート・ローダーとは

ごく簡単に言うと、ブート・ローダーとはオペレーティング・システムをロードするプログラムです。マシンがオペレーティング・システムをロードするときには、BIOS がブート可能なメディア (マスター・ブート・レコード (略して MBR) と呼ばれる) の最初の 512 バイトを読み取ります。1 つの MBR には 1 つのオペレーティング・システムのブート・レコードしか格納できないため、複数のオペレーティング・システムが必要な場合は問題が生じます。このため、より柔軟性の高いブート・ローダーが必要とされています。

マスター・ブート・レコード自体は、ブート・ローダー・プログラムの一部または全部と、パーティション・テーブル (メディアの残り部分をパーティション分割する方法についての情報が格納される) の 2 つを保持しています。BIOS がロードを行うときには、ハード・ドライブの最初のセクター (MBR) に格納されているデータが調べられ、この MBR に格納されたデータを使ってブート・ローダーが起動されます。

BIOS がアクセスできるデータの量は非常に小さいため、ほとんどのブート・ローダーは 2 段階でロードを行います。ブートの第 1 段階では、イニシャル・プログラム・ローダー (IPL) と呼ばれるブート・ローダー部分がロードされます。IPL はパーティション・テーブルに問い合わせた後、各種メディア上の場所を問わずデータをロードできるようになります。最初にこの処理を行うことによって、残りのローダー部分を保持している第 2 段階のブート・ローダーを見つけ出します。

この第 2 段階がブート・ローダーの中核であり、実際のブート・ローダーはこの部分だけと考える人も多くいます。ここには、ユーザー・インターフェースやカーネル・ローダーなど、ディスク中心のローダー部分が含まれています。このようなユーザー・インターフェースには、単純なコマンド・ラインから直観的でわかりやすい GUI までさまざまなものがあります。

ブート・ローダーは一般に、プライマリ・ブート・ローダーかセカンダリ・ブート・ローダーのいずれかで構成されます。プライマリ・ブート・ローダーでは、前述のとおりブート・ローダーの第 1 段階が MBR にインストールされます。セカンダリ・ブート・ローダーでは、ブート・ローダーの第 1 段階がブート可能なパーティションにインストールされます。この後、別のブート・ローダーを MBR にインストールし、セカンダリ・ブート・ローダーに制御権を渡すよう設定する必要があります。

比較的新しい Linux ブート・ローダーの多くは、オペレーティング・システムを選んでロードできるほか、先進の GUI や暗号化パスワードなどさまざまなレベルの対話を利用できるため、非常に便利になっています。このため、同じマシン上の複数の物理ディスクにわたって多数のオペレーティング・システムを共存させることが可能です。このセットアップは一般的になっています。なぜなら、これにより多くのユーザーが、もともと Windows® マシンによって生成された有用なデータ・ファイルを新しい Linux のインストールと調和させることができるためです。筆者も個人的にこのセットアップを気に入っており、Linux と Windows の両方を共存させて使っています。

ブート・ローダーは徐々に拡張され、ユーザーに便利な幅広い機能が組み込まれるようになりました。このような機能や設定はローダーによってさまざまですが、基本的な目的は同じです。

次に、一般的なブート・ローダーのうち LILO と GRUB の 2 つを見ていきましょう。


LILO

LILO (LInux LOader) は、Linux のあらゆる配布版の標準ブート・ローダーとなっています。旧型の Linux ブート・ローダーと同様に、引き続き強力な Linux コミュニティー・サポートを提供しているため、今後も発展し、使いやすい先進のブート・ローダーとして実用的です。新しい機能としては、ユーザー・インターフェースの拡張や、以前の 1024 シリンダーの制限を解消する新しい BIOS 機能の採用などが挙げられます。

LILO は今後も開発が続きますが、LILO の仕組みの基本原理は変わりません。

LILO の使用

LILO をブート・ローダーとして使用するために必要なことは、OS を新たにインストールするのか、あるいはすでに Linux をインストール済みで、LILO に移行する予定なのかによって異なります。これから OS をインストールする場合は、「LILO の設定」のセクションに進んでください。Linux の配布版をすでにインストール済みの場合は一般に、オプションによって LILO のインストールと設定を行います (マシンの新しい Linux のインストールをブートすることができます)。

既存の Linux ユーザーが LILO に移行する場合は、最初に最新バージョンの LILO を取得する必要があります (参考文献を参照)。何よりもまず、Linux のブート・ディスクが手元にあることを確認してください。何らかの問題が発生して、元の Linux 設定に戻したくなった場合に、ブート・ディスクがあれば随分楽になります。LILO をシステムにインストールしたら、LILO に MBR を引き継がせるのは非常に簡単です。ルート・ユーザーとして、次のように入力します。

# /sbin/lilo -v -v

これにより、現在の LILO のデフォルトが使われ、現在 MBR に入っているデータがすべてスプラットされます。ただし、「LILO の設定」を参照し、期待どおりにブートアップできることを確認してください。また、Windows と Linux を 1 つのマシンで実行したい場合には、Linux のインストールで選択したブート・ローダーが Windows のブート・ローダーによって上書きされないように、Windows OS をインストールしてから Linux OS をインストールするよう注意してください。Linux のブート・ローダーとは違い、Windows のブート・ローダーの大半は Linux をロードできるようになっていません。すでに Linux がインストール済みの場合でも、Linux のブート・ディスクを自分で作成しておけば、Windows をインストールした後で Linux のインストールに戻って MBR を上書きすることができます。

LILO の設定

LILO の設定はすべて、/etc/lilo.conf にある設定ファイルを通して行います。リスト 1 に示す設定例は、筆者の自宅のマシンに関するもので、Linux と Windows 兼用のマシンをデュアルブートできるようになっています。ワークステーションの基本的なセットアップを見れば、この設定が実際のマシンにどのように関係しているのかがわかります。

  • プライマリ HDD (物理ディスク 1) には Windows XP がインストールされています (すべて最初からマシン上にあったものです)。Linux では、この HDD が /dev/hda (GRUB では hd0,0) となります。
  • セカンダリ HDD (物理ディスク 2) には Red Hat Linux がインストールされています。ルート・パーティションはこのハード・ドライブの 3 番目のパーティション /dev/hdb3 (GRUB ではhd1,3) にあります。
リスト 1. lilo.conf ファイルの例
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
compact
default=Linux
image=/boot/vmlinuz-2.4.18-14
	label=Linux
	root=/dev/hdb3
	read-only
	password=linux
other=/dev/hda
	label=WindowsXP

リスト 1 で使われているオプションは次のとおりです。

  • boot= の行は、ブート・ローダーのインストール場所を LILO に通知します。前述の例では、これによって LILO が最初のハード・ディスクの MBR にインストールされます。また、LILO を /dev/hdb3 (この例では Linux のパーティション) にインストールすることも可能ですが、この場合は別のブート・ローダーを /dev/hda にインストールし、それを LILO のブート・ローダーに指定した後、LILO をセカンダリ・ブート・ローダーとして動作させる必要があります。通常、/dev/hda はお使いのブート・ローダーが常駐する最も一般的な場所です。また、このパラメーターをフロッピー・ドライブ (一般に /dev/fd0) に指定して、LILO をフロッピー・ブート・ディスクにすることも可能です。
  • map= は、ブートアップ中に LILO が内部で使用するマップ・ファイルを指定します。/sbin/lilo コマンドを使って LILO をインストールすると、このファイルが自動的に生成されます。このファイルには特に記述子テーブルが格納されます。これは変更しないことをお勧めします。
  • install= は、ブート・プロセス中に LILO が内部で使用するファイルの 1 つです。このファイルには、ブート・ローダーのプライマリ部分とセカンダリ部分の両方が格納されます。この boot.b ファイルのセグメントは MBR に書き込まれ (ブート・ローダーのプライマリ部分)、この MBR によってマップと、続いてセカンダリ・ブート・ローダーが指定されます。これも変更しないでください。
  • prompt= は、ユーザー・インターフェースを使用するよう LILO に通知します (この例では、Linux と WindowsXP の 2 つの選択肢があります)。プロンプト/ユーザー・インターフェースの使用に加え、必要に応じて Linux カーネル固有のパラメーターまたはその他のパラメーターを指定するオプションもあります。設定ファイルでこのオプションを指定しないと、LILO はユーザーとの対話や待機を行わずに、デフォルトの OS にブートします (ただし、ブート中に SHIFT キーを押したままにすると、いつでもプロンプトを起動できます。ブート・ローダーに一般的な設定を使いたくない場合は、この方法が便利です)。
  • timeout= は、(この場合は Linux で) デフォルトの OS が自動的にロードされるまでの、ブート・プロンプトの待機時間 (0.1 秒単位) を示します。lilo.conf で prompt が指定されていない場合は、このパラメーターが無視されます。
  • compact オプションは、近接するディスク読み取り要求を 1 つの要求にマージすることで、ブート・プロセスを大幅に短縮します。このオプションには長所も短所もありますが、フォーラムにはこのオプションの問題に関する投稿が多数寄せられているようです。このオプションは特に、フロッピーからブートしたい場合に便利です。
  • default= オプションは、たとえばタイムアウト時間の経過後などに、デフォルトによってブートするイメージを LILO に通知します。これは、lilo.conf ファイル内のいずれかのイメージのラベルに相対します。設定ファイルでこのオプションを指定しない場合は、このファイルで指定された最初のイメージがブートされます。
  • ユーザーがブートに使用できるようにしたい Linux のバージョンごとに、image= と次の 3 つのオプションを指定してください。image オプションは、ブートしたいカーネルのバージョンを指定します。
  • label= は、実行時にユーザー・インターフェースでブートしたい別の OS を識別します。さらにこのラベルは、ブートするデフォルトの OS を指定する際にも使われます。(注: ラベル名にはスペースを入れないでください。スペースを入れると、ファイルのロード時に予期しないエラーが発生します。)
  • root= オプションは、OS ファイル・システムの実際の常駐場所を LILO に通知します。この例では、2 番目のディスクの 3 番目のパーティションである /dev/hdb3 がこれに該当します。
  • read-only は、ファイル・システムへの初期ブートを読み取り専用で実行することを LILO に通知します。OS が完全にブートされると、読み取り/書き込みモードでマウントされます。
  • password= オプションでは、ブートする特定の OS のパスワードを設定できます。残念ながらこのパスワードは読み取り可能テキストとして lilo.conf ファイルに格納されるため、誰でも簡単にアクセスして読み取ることができます。必要に応じて、ブートしたいオペレーティング・システムごとにパスワードを設定できます (この例では、Linux のブートに対してのみパスワードを設定しています)。
  • other= は、image オプションと root オプションの組み合わせに似た機能をしますが、Linux 以外のオペレーティング・システム用です。この例では、Windows OS の場所 (最初のパーティションの最初のディスクに常駐) を LILO に通知します。これは一般に、Windows をインストールしてから Linux をインストールした場合に該当します。
  • label= は、他のすべての label オプションと同じです。

lilo.conf ファイルでは他にも多数のパラメーターを使用できますが、リスト 1 のパラメーターを使用するとマシンがかなり便利になります。これらのパラメーターと lilo.conf ファイルのその他のパラメーターの詳細については、マニュアル・ページを参照してください (man lilo.conf)。lilo.conf はブート時に読み取られないため、このファイルを変更した場合は MBR を「リフレッシュ」する必要があります。リブート時にこれを行わないと、lilo.conf に対する変更内容が起動時に何も反映されません。最初に LILO を MBR にロードするときと同様に、次のコマンドを実行する必要があります。

$ /sbin/lilo -v -v

-v -v フラグを使用すると、出力内容が非常に詳細になります。この例のように、LILO の実行時に指定できるパラメーターは多数あります。詳細については、マニュアル・ページを参照してください (man lilo)。

初期ブート・プロセス

LILO の初期ロード時には、L、I、L、O の各文字が順に現れます。すべての文字が表示されると、第 1 段階のブートは成功です。文字がすべて表示されなければ、問題があることを意味します。

  • L: 第 1 段階のブート・ローダーはロードされています。LILO がここで停止した場合は、第 2 段階のブート・ローダーのロードに問題が発生しています。この場合は通常、エラー・コードが付随します。この段階での一般的な問題としては、メディアの問題か、あるいは lilo.conf ファイルで指定されたディスク・パラメーターが誤っている可能性があります。
  • LI: 第 2 段階のブート・ローダーはロードされています。LILO がここで停止した場合は、第 2 段階のブート・ローダーを実行できなかったことを意味します。このエラーの原因としては、L: のロードと同様の問題が生じているか、boot.b ファイルが破損、移動、または削除されていることが考えられます。
  • LIL: 第 2 段階のブート・ローダーは実行されています。この時点では、メディアの問題が原因となっているか、(lilo.conf ファイルで指定された) マップ・ファイルで記述子テーブルを検出できない問題が発生している可能性があります。
  • LIL?: 上記と同じポイントまでロードされています。これは通常、boot.b が lilo.conf ファイルで指定された以外の場所にあるために、第 2 段階のブート・ローダーが誤ったアドレスでロードされた可能性が高いことを意味します。
  • LIL-: 上記と同じポイントまでロードされています。記述子テーブルが破損しているために、記述子テーブルのロードに問題が発生している可能性が高いことを意味します。
  • LILO: LILO はエラーなく正常にロードされています。

ブート時の追加設定

LILO が正常にロードされると、LILO プロンプトが表示されます。LILO の初心者にはわかりにくいかもしれませんが、引き続き前述の lilo.conf ファイルの例を使うと、この時点で 2 つの選択肢があります。1 つ目は、LILO を (10 秒後に) タイムアウトさせて、Linux のパーティションである /dev/hdb3 をブートできることです。2 つ目は、TAB キーを押して、ブートするオペレーティング・システムの選択肢をリストできることです。lilo.conf の例では、オプションとして「Linux」と「WindowsXP」を指定しています。これらのいずれかを入力すると、その OS がロードされます。特に Linux オプションをロードするときには、パスワード (この場合は linux) の入力を求めるプロンプトが表示されます。パスワードの入力を誤ると、LILO プロンプトに戻ります。

残念ながら、LILO ではブート時に対話式の設定を行うことができないため、lilo.conf ファイル内または /sbin/lilo の実行時に、使用するオプションをすべて指定する必要があります。

初めて LILO を試すときの最後のアドバイスとして、ハード・ディスクよりもフロッピー・ブート・ディスクを使用した方が、LILO の設定作業がかなり安全になるように思われます。これを行うには、lilo.conf ファイルで boot=/dev/hda を boot=/dev/fd0 に置き換える必要があります。こうすると、lilo.conf ファイル内の設定に問題が生じても、ブート・ディスクを取り出せば以前のように Linux にブートできます。フロッピー・ディスクを使って正常にブートが完了したら、boot=/dev/hda を使うように lilo.conf ファイルを戻してから、最後に /sbin/lilo を実行して変更内容をアップロードします。


GNU GRUB

最近では、GRand Unified Boot ローダー (一般に GRUB と呼ばれる) の方が LILO よりもやや優勢のようです。GNU GRUB は、Erich Stefan Boleyn 氏が作成したオリジナルの GRUB プログラムをベースにして、Free Software Foundation によって積極的に開発されたものです。

GRUB の使用

LILO と同様、GRUB を有効なブート・ローダーとして使うために必要なステップも、OS を新たにインストールするのか、あるいはすでに Linux をインストール済みで、GRUB に移行する予定なのかによって異なります。これから OS をインストールする場合は、「GRUB の設定」のセクションに進んでください。Linux の配布版をすでにインストール済みの場合は一般に、オプションによって LILO のインストールと設定を行います (マシンの新しい Linux のインストールをブートすることができます)。

既存の Linux ユーザーが GRUB に移行する場合は、最新バージョンの GRUB を取得する必要があります (参考文献を参照)。LILO と同様に、何よりもまず Linux のブート・ディスクを手元に用意してください。対話モード (後述を参照) では、このディスクは必要ありませんが、修復できない問題が発生した場合に備えて用意しておくといいでしょう。GRUB をシステムにインストールしたら、GRUB に MBR を引き継がせるのは簡単です。ルート・ユーザーとして、次のように入力します。

# /boot/grub/grub

これにより、BASH のようなコマンド・プロンプトがロードされます。ここで GRUB コマンドを使用します。

grub> install (hd1,3)/boot/grub/stage1 (hd0)(hd1,3)/boot/grub/stage2 p (hd1,3)/boot/grub/menu.conf

このコマンドでは GRUB の install コマンドを使用します。install コマンドには、第 1 段階のイメージの場所と MBR の場所を指定する必要があります (install (hd1,3)/boot/grub/stage1 (hd1))。また、第 2 段階のイメージの場所 ((hd1,3)/boot/grub/stage2) も必要となります。最後にオプションの p (hd1,3)/boot/grub/menu.conf を使用して、GRUB に GUI のメニュー設定ファイルの場所を通知します。

前述の例では、hd1 が Linux ディスク、hd0 が Windows ディスクを表しています。これにより、現在の GRUB のデフォルトが使われ、現在 MBR に入っているデータがすべてスプラットされます (「GRUB の設定」を参照し、期待どおりにブートアップできることを確認してください)。

GRUB の設定

GRUB の設定はすべて、/boot/grub/grub.conf にある設定ファイルを通して行います。リスト 2 に示す設定例は、筆者の自宅用のセットアップに関するもので、Linux と Windows 兼用のマシンをデュアルブートできるようになっています。

リスト 2. grub.conf ファイルの例
default=0
timeout=10
splashimage=(hd1,3)/grub/splash.xpm.gz
password --md5 $1$opeVt0$Y.br.18LyAasRsGdSKLYlp1
title Red Hat Linux
	password --md5 $1$0peVt0$Y.br.18LyAasRsGdSKLYlp1
	root (hd1,3)
	kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
	initrd /initrd-2.4.18-14.img
title Windows XP
	password --md5 $1$0peVt0$Y.br.18LyAasRsGdSKLYlp1
	rootnoverify (hd0,0)
	chainloader +1

リスト 2 で使われているオプションは次のとおりです。

  • default= オプションは、タイムアウト時間の経過後に、デフォルトによってブートするイメージを GRUB に通知します。これは、grub.conf ファイル内のいずれかのイメージに相対します。0 は第 1 指定、1 は第 2 指定というようになります。設定ファイルでこのオプションを指定しない場合は、このファイルで指定された最初のイメージがブートされます。
  • timeout= は、(この場合は Red Hat Linux で) デフォルトの OS が自動的にロードされるまでの、ブート・プロンプトの待機時間 (秒単位) を示します。
  • splashimage= は、GRUB GUI の背景として使われるイメージの場所を示します。
  • password オプションは、GRUB の対話式ブート・オプションにアクセスするために使われる MD5 暗号化パスワードを指定します。これによって、定義済みの OS 選択をユーザーがロードできなくなるわけではありません。これはタイトルごとに設定する必要があります。md5 パスワードを生成するには、GRUB に付属の grub-md5-crypt ツールを (ルートとして) 実行します。暗号化したいパスワードの入力を求めるプロンプトが表示され、パスワードを入力すると、MD5 で暗号化されたパスワードが出力されます。これを grub.conf の password -md5 の後 (ただし同じ行) にコピーします。これは grub.conf ファイルを自由に読み取ることのできる唯一のルートなので、通常はこのパスワードをルート・パスワードに設定できます。
  • title は、実行時にユーザー・インターフェースでブートされる特定の OS を識別します。LILO とは違い、この名前にはスペースを含めることができます。
  • password は、前述の password と同じように設定されます。このマシンを他のユーザーと共有する予定の場合は、このパスワードをルート・パスワードに設定しないでください。
  • root= オプションは、OS ファイル・システムの実際の常駐場所を GRUB に通知します。この例では、GRUB は LILO と異なる方法でメディアを参照しています。LILO の例では、/dev/hdb3 が 2 番目のディスクの 3 番目のパーティションを表しているのに対し、GRUB では、同じく 2 番目のディスクの 3 番目のパーティションを (hd1,3) として参照しています (ディスク 0 が 1 番目のディスクを表しています)。
  • kernel: vmlinuz-X.X.XX-XX は、ルート・ディレクトリ内のデフォルトのブート・カーネル・イメージの名前を示します。
  • initrd: initrd-X.X.XX-XX.img は、ルート・ディレクトリ内のデフォルトの initrd ファイルの名前を示します。
  • title は、他のすべての title オプションと同じです。
  • password: 他の password オプションを参照してください。
  • rootnoverify オプションは、OS のルートを変更しないよう GRUB に通知します。これにより、ファイル・システムが GRUB でサポートされていない場合のロード・エラーを防ぐことができます。
  • chainloader +1 は、この OS をロードするためのチェーン・ローダー (Windows のロードに必要) を使用するよう GRUB に通知します。

grub.conf ファイルでは他にも多数のパラメーターを使用できますが、リスト 2 のパラメーターを使用するとマシンがかなり便利になります。これらのパラメーターと grub.conf ファイルのその他のパラメーターの詳細については、マニュアル・ページを参照してください (man grub.conf)。

LILO の設定ファイルと違い、grub.conf はブート時に読み取られるため、このファイルを変更しても MBR をリフレッシュする必要はありません。

初期ブート・プロセス

GRUB の初期ロード時には、LILO と同様に MBR から第 1 段階がロードされます。このロードが完了すると、一般的なブート・ローダーの第 1 段階と第 2 段階の間に位置する中間段階に入ります (説明しやすいように、第 1.5 段階とします)。第 1.5 段階では、ディスク・ブロックを使ってアクセスするのではなく、通常のファイル・システムが /boot/grub 内にある GRUB の設定ファイルにアクセスできるようにします。この後、ブート・ローダーの第 2 段階に入って、GRUB が grub.conf ファイルをロードします。

ここで GRUB の GUI を見てください。Windows のネイティブ・ユーザーであれば、LILO のインターフェースよりもかなり親しみやすいと思われます。ただし、GUI があるからといって、GRUB が初心者向けの易しいブート・ローダーと考えるのは誤りです。オプションの量は相当あります (ブート時の追加設定に関するヒントを参照)。

筆者のような設定をしている場合は、Red Hat Linux にブートするオプションと、Windows XP にブートするオプションの 2 つが画面に表示されるはずです。デフォルトでは Linux がロードされますが、どちらを選択しても結果は明白です。

では、次に進みましょう。

ブート時の追加設定

GRUB の GUI で任意のキーを押すと、タイムアウトが作動しなくなります。次に P キーを押すと、GRUB のパスワードを入力して GRUB の対話式ブート・オプションに完全にアクセスできるようになります。この後、対応するキーを押すことで、次の 3 つのオプションのいずれかを使用できます。

  • ブートの前にコマンドを編集するには、E キーを押します。これにより、現在強調表示されている OS に固有のオプションを編集できるようになります。GRUB では、その OS のブートに固有のオプションしか表示されません。表示されたオプションは、自由に編集することができます。これは特に、ルート・ファイル・システムに対して誤った HDD を指定した場合に便利です。シングル・ユーザー・モード (パスワードを指定せずにルート・アクセスが可能) でマシンにアクセスする必要がある場合は、GRUB のメイン画面で Linux OS を選択します。この後は、前と同様に E キーを押して kernel 行 (筆者の例では kernel /vmlinuz-2.4.18-14 ro root=LABEL=/) に移動します。次に、この行の末尾に single を付加し、B キーを押して、変更した grub.conf を使ってブートします。編集モードで加えた変更内容は、grub.conf ファイルには保存されません。
  • カーネル引数を修正するには、A キーを押します。Linux の経験を積んだユーザーであれば、必要に応じてカーネル引数を自由に調整できます。
  • BASH のようなコマンド・ライン・インターフェースを使用するには、C キーを押します。これは最小限のコマンド・ライン・インターフェースで、システム上の GRUB 設定ファイルの検索、代替設定ファイルのロード、設定ファイル内の行の編集、GRUB のコマンドの直接入力といったことが可能です。パーティションの削除など、設定の変更によってシステムがブート不可能になった場合や、システムをブートしてシングル・ユーザー・モードや、通常の実行レベルではなく実行レベル 3 などに入る必要がある場合には、これを使うといいでしょう。

ここに記載した以外にも、これらのオプションにはさまざまな用途があります。

おわかりのように、GRUB ではブート時に実にさまざまなことが可能です。ただし、これには長所と短所があります。なぜなら GRUB では、OS のロードが完了する前に攻撃者がシステムにアクセスできる可能性があるためです。悪用されやすい主な領域を次に示します。

  • シングル・ユーザー・モードへのアクセス。シングル・ユーザー・モードへロードするすべてのユーザーに対してルート・アクセス権が与えられるため、お使いの Linux システムが悪用される可能性が高くなります。
  • 他のオペレーティング・システムへのアクセス。パスワードを必要としないよう設定されたブート可能なオペレーティング・システム (DOS など) は悪用されやすい状態にあります。
  • GRUB エディタへのアクセス。この場合、ユーザーに完全アクセス権が与えられ、GRUB 設定を変更できるようになります。

セキュリティの設定は、GRUB 設定の重要な部分です。パスワードの設定や MD5 暗号化の使用は、システム全体のセキュリティ向上に役立ちます。

GRUB の今後

GRUB は現在、GRUB2 に取り代わろうとしています。オリジナルの GRUB は GRUB Legacy に名前が変わり、バグの修正以外に積極的な開発は今後行われない予定です。GRUB2 は、オリジナルのブート・ローダーを完全に書き直したものです。現在のところ、変更の中心となる機能は次のとおりです。

  • 第 1.5 段階から圧縮コア・イメージの作成への変更
  • コア・イメージへの動的ロードのサポート
  • GRUB の全体的なフレームワークをオブジェクト指向にする傾向
  • 非 ASCII 文字セットなどの各国対応のサポート
  • (Linux 以外の) 各種ハードウェア・アーキテクチャと各種プラットフォームのサポート

最新の開発状況については、GRUB のWeb サイトを参照してください (参考文献のセクションを参照)。


GRUB と LILO の比較

冒頭で述べたように、すべてのブート・ローダーは、共通した目的を果たすため同じように機能します。ただし、LILO と GRUB には多数の相違点があります。

  • LILO には対話式のコマンド・インターフェースがありませんが、GRUB にはあります。
  • LILO ではネットワークからのブートをサポートしていませんが、GRUB ではサポートしています。
  • LILO では、MBR 上に物理的にロードするために、オペレーティング・システムの場所に関する情報が格納されます。LILO の設定ファイルを変更した場合は、LILO の第 1 段階のブート・ローダーを MBR に書き直す必要があります。MBR の設定が誤っているとシステムをブートできない可能性があるため、GRUB と比べてこれはかなり危険なオプションです。GRUB では、設定ファイルが誤って設定されたとしても、デフォルトで GRUB のコマンド・ライン・インターフェースが使用されます。

まとめ

どのソフトウェアでもそうですが、1 人のユーザーにとって最適な選択がすべてのユーザーに最適とは限りません。ここで扱った 2 つのブート・ローダーのうち、筆者が個人的に気に入っているのは GNU GRUB です。GRUB はオールラウンドな優れたローダーであり、便利なユーザー・インターフェースと幅広い機能を兼ね備えています。しかしながら、LILO を最適なブート・ローダーとして愛用し続けているユーザーも大勢います。幸いにもこれから Linux のブート・ロードを習得しようとする人は、どちらを使用しても大きな失敗はないでしょう。

セキュリティに関しては、ブート・ディスク/CD が入手可能であれば誰でも、セキュリティ・セットを持たない grub.conf または lilo.conf を使って単にブートすることで、ここで述べたセキュリティ手段を逃れることができます。特に GRUB では、シングル・ユーザー・モードにブートできることが、深刻なセキュリティ・ホールの原因となる可能性があります。この問題を回避する簡単な方法は、マシンの BIOS で CD やフロッピーからブートできないようにし、他のユーザーがこれらの設定を変更できないようにパスワードを使って BIOS を設定することです。

楽しんでやってみてください。

参考文献

学ぶために

  • チュートリアル「Getting to know GRUB」(developerWorks, 2001年1月)は、GRUBのインストール方法と使い方を説明しています。
  • チュートリアル「Build a Linux test network」(developerWorks, 2003年5月)は、SambaとGRUBを組み合わせて、コンパクトで適用性の高い、クロス・プラットフォームのテスト・ネットワークの構築方法を説明しています。これを利用すると、少数のマシン上で、多数のオペレーティング・システムのブートやネットワーク化が可能になります。
  • FireWireのデバイスからLinuxをブート」(developerWorks, 2004年7月)は、(古いマシンに新しい命を吹き込むために)リムーバブル・ドライブからLinuxをブートする方法を説明しています。
  • ヒント: デュアル・ブートLinux」(developerWorks, 2002年4月)は、1台のマシンに複数のLinuxインスタンスをインストールする方法を説明しています。
  • developerWorksのLinuxゾーンには、Linux開発者のための資料が他にも豊富に用意されています。

製品や技術を入手するために

  • 最新のLILOを入手してください。
  • 最新バージョンのGRUB boot loaderを入手してください。
  • 皆さんの次期Linux開発プロジェクトを、IBM trial softwareを使って構築してください。developerWorksから直接ダウンロードすることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=226651
ArticleTitle=ブート・ローダー対決: LILO と GRUB について
publish-date=08242005