第 5章GRUB

システム上でRed Hat Linuxを起動するには、ブートローダーに格納されている起動命令によってブートするように指示する必要があります。これは、Linuxカーネルの起動方法を認識している、プライマリハードディスクドライブかその他のメディア装置に存在するコードです。

Red Hat Linuxだけを起動するx86システムを使用し、Linuxカーネルの1バージョンだけを使用している場合は、ブートローダーがRed Hat Linuxの起動セプロセスすべてを正確に実行することはそれほど重要ではありません。Red Hat Linuxのインストールプログラムでは、ハードディスクドライブのマスターブートレコード(MBR)にブートローダーをすばやく簡単に設定してOSを起動することができます。

ただし、複数のLinuxカーネルや他のOSから起動できるようにしておく場合は、そのために必要な、Red Hat Linuxが使用するメソッド、ブートプロセス、変更内容について理解しておくことが必要です。

本章では、Red Hat Linuxがx86システム上でOSを起動するためのメソッドであるGRUBについて説明し、ブートプロセスを制御するさまざまなコマンドと設定オプションを紹介します。

GRUBの定義

GNU GRUB(GRand Unified Bootloader)はブートローダーをMBRにインストールするためのプログラムで、ディスクの先頭のセクタに存在しています。このプログラムにより、GRUBメニューやコマンド環境をロードするMBRに特定の命令を与えることができるため、希望するOSを起動して、起動時にカーネルに特定の命令を出したり、起動する前にシステムパラメータ(使用可能なRAMなど)を検索することができます。

x86のブートプロセス

最初にx86システムをスタートアップすると、システムのBIOSによってコンピュータのRAM容量、日時、存在するディスク装置、起動メディアに関するそれらのディスク装置のチェック順序などのシステムパラメータがチェックされます。通常、BIOSはハードディスクドライブから起動する前に、コンピュータのフロッピーディスクドライブかCD-ROMドライブ、(その両方のどれか)をチェックするように設定されています。起動メディアがこれらのリムーバブル装置にない場合、BIOSはOSの格納場所とロードする場所の指定をハードディスクドライブの先頭のいくつかのセクターから探します。MBRと呼ばれるこれらの先頭のセクターは、事前に選択されているOSの起動プロセス、OSオプションのGRUBメニュー、特殊オプションを実行するためのGRUBコマンド行インターフェイスのいずれかを開始します。

GRUBのロードとそれに続くOSのロードプロセスは複数のステージで実行されます。

  1. ステージ1と呼ばれるプライマリブートローダーのロード

    プライマリブートローダーはMBRに割り当てられた512バイトよりも小さいスペースに格納する必要があります。したがってMBRには十分な容量がないため、プライマリブートローダーはセカンダリブートローダーのロードだけを行います。

  2. ステージ2と呼ばれるセカンダリブートローダーのロード

    セカンダリブートローダーは、特定のOSをロードできる拡張機能を実行できるようにします。GRUBの場合は、メニューの表示かコマンドの入力を可能にするコードです。

  3. 指定したパーティションへのLinuxカーネルなどのOSのロード

    OSを起動するための適切な命令をGRUBが受け取ると、コマンド行か設定ファイルから必要なブートファイルを検索してマシンの制御をOSに受け渡します。

注意注意
 

ファイルシステムにはファイルシステム設定と同様、プライマリブートローダーとセカンダリブートローダーの間をブリッジするステージ1.5のファイルが必要なものもあります。

たとえば、ステージ1のブートローダーファイルからアクセスできないファイルシステムを使用しているパーティションにステージ2のブートローダーファイルが存在する場合、ステージ1のブートローダーに、ステージ2のブートローダーファイルの読み込みを可能にするステージ1.5ファイルからの追加命令をロードさせることができます。詳細についてはGRUBの説明を参照してください。

このブートメソッドは、ブートローダー間の仲介コードやOSのメインファイル(カーネルなど)を使用せずに、直接OSをロードする命令を使用するため、ダイレクトロードと呼ばれます。ただし、異なるOSで使用されるブートプロセスはこの方法とは若干異なる場合があります。たとえば、MicrosoftのOSであるDOSとWindowsは、現行のMBRの設定をいっさい組み込まずにインストールされると、MBRを完全に上書きする傾向があります。MBRが上書きされると、Red Hat Linuxなどの他のOSによってMBRに保存されたすべての情報が壊れてしまいます。MicrosoftのこれらのOSは他のさまざまなOSと同様に、チェーンロードのブートメソッドを使用してロードされます。この方法を使用すると、MBRは単純にOSを格納しているパーティションの先頭のセクターをポイントして、実際にOSを起動するのに必要な専用ファイルを検索します。

GRUBはどちらのブートメソッド法もサポートするため、ほとんどのOS、最も広く使用されているファイルシステム、BIOSが認識できるほとんどのハードディスクとともに使用できます。

GRUBの機能

GRUBは、使用可能な他のブートローダーに適合させるための数々の機能を備えています。そのうち最も重要なものをいくつかご紹介します。

  • GRUBはx86のマシンに完全なコマンドベースのOS起動前の環境を提供することにより、特定のオプションを伴うOSのロードとシステムに関する情報の収集に最大限の柔軟性をもたらします。

    x86システム以外の多くのアーキテクチャは、コマンド行でシステムのブート方法を制御可能にするOS起動前の環境を長年にわたって採用してきました。LILOやその他のx86ブートローダーでもいくつかのコマンド機能を使用できますが、GRUBはそれよりはるかに多くの機能を提供します。

  • GRUBはLBA(Logical Block Addressing)モードをサポートしています。

    LBAは、ドライブ内のファイル検索に使用するアドレス指定変換をドライブのファームウェアに格納し、この機能は多くのIDEハードディスクとすべてのSCSIハードディスクで使用されます。ハードディスクはLBAが実行される前に1024シリンダリミットに達することがあります。そうするとBIOSは、ブートローダーファイルやカーネルファイルなどのファイルを検索できなくなります。BIOSがLBAモードをサポートしていれば(ほとんどの場合、サポートされています)、LBAのサポートにより、GRUBは1024シリンダリミットを超えるパーティションからOSをブートできます。

  • GRUBの設定ファイルはシステムのブート時に毎回ディスクから読み込まれるため、ブートオプションを変更するたびにMBRを上書きする必要はありません。

    ほとんどのブートローダーでは、設定ファイルを読み込み、その設定ファイルを使用してブートオプションをセットアップすることができません。ブートを実行するデフォルトのOSを変更するなど、LILOのブート設定を変更する場合は、LILOの設定ファイルを変更して、新しい設定データでシステムのMBRを上書きするコマンドを実行する必要があります。ただし、MBRの設定が不適切な場合はシステムをブートできなくなるため、この方法はGRUBの方法よりもリスクが大きくなります。その点、GRUBでは、設定ファイルの設定が不適切なままリブートした場合でも、コマンド行が表示されるのでOSを起動するコマンドを入力できます。ステージ1、ステージ2、メニュー設定ファイルの格納場所を更新する以外はMBRが変更されることはなく、これらの更新もめったに必要ありません。

    注意注意
     

    GRUB設定ファイルに変更が加えられた場合、GRUBをリスタートする必要はありません。すべての変更は自動的に検出されます。GRUBをリスタートすると、コマンド行のGRUBシェルに移動します。

GRUBのインストール

Red Hat LinuxのインストールプロセスでGRUBをインストールしなかった場合に、GRUBをインストールしてデフォルトのブートローダーに設定する方法について説明します。

注意注意
 

すでにLILOをブートローダーとして使用している場合は、GRUBを使用するためにLILOを消去する必要はありません。GRUBはインストールされると自動的にシステムのデフォルトブートローダーとなります。

まず、GRUBの最新パッケージを使用可能な状態にします。Red Hat Linuxのインストール用CD-ROMにあるGRUBパッケージを使用することもできます。

次に、シェルプロンプトのコマンド/sbin/grub-install <location>を実行します。<location>/dev/hda1などの、GRUBのインストール先を示します。

システムをリブートすると、GRUBブートローダーが表示されます。