GRUBを使用する前に理解しておかなければならない最も重要なことは、ハードディスクドライブやパーティションなどの、プログラムで使用しているデバイスの名前です。これらの名前は、GRUBを設定して複数のOSをブートする場合にきわめて重要な情報です。
システムの最初のハードディスクドライブをGRUBでは(hd0)と呼びます。このドライブの先頭のパーティションを(hd0,0)と呼び、2番目のハードディスクドライブ上の5番目のパーティションは(hd1,4)となりす。一般的に、GRUBを使用するファイルシステムの命名規則は次のように理解することができます。
(<type-of-device><bios-device-number>,<partition-number>) |
名前の中のかっことカンマはデバイス名を認識する上で、重要な意味を持っています。<type-of-device>はハードディスク(hd)か、フロッピーディスク(fd)のどちらが指定されているかを示します。
<bios-device-number>は、システムのBIOSにより指定されるデバイスの数を示し、0から始まります。プライマリIDEハードディスクドライブの番号は0、セカンダリIDEハードディスクドライブの番号は1となります。この順序づけは、Linuxカーネルが文字によりデバイスを配列する方法とほぼ一致します。たとえば、hdaのaは0、hdbのbは1に当たります。
![]() | 注意 |
|---|---|
GRUBのデバイスに対するナンバリングシステムが1ではなく0から開始することに注意してください。これは初めてGRUBを使用するユーザーが最も間違えやすい点です。 |
<partition-number>はディスクデバイスにある特定のパーティション数を表します。<bios-device-number>と同じように、パーティションのナンバリングも0から開始します。ほとんどのパーティションは番号で指定されますが、システムがBSDパーティションを使用している場合は、aやcなどの文字が与えられます。
GRUBでは次の規則に従って、デバイスとパーティションを命名します。
ハードディスクドライブがIDEかSCSIかに関係なく、すべてのハードディスクドライブはhdで始まります。フロッピーディスクはfdで始まります。
パーティションに関わらずデバイス全体を指定する場合は、単純にカンマとパーティション番号を除きます。これは、GRUBに特定のデバイスに関するMBRを設定させる場合に重要です。たとえば、(hd0)は1番目のデバイスを指し、(hd3)は4番目のデバイスを指します。
複数のハードディスクドライブが存在する場合は、BIOSで設定された順序を知ることが非常に重要です。IDEドライブかSCSIドライブしかない場合は簡単ですが、その両方が混在していると複雑になります。
複数のOSのブートを可能にするためのメニュー一覧などのファイルに関するコマンドをGRUBに入力する場合、デバイスとパーティションを指定したすぐ後にファイル名を入力する必要があります。ファイルの絶対名に対するファイル指定は次のように構成されます。
(<type-of-device><bios-device-number>,<partition-number>)/path/to/file |
ほとんどの場合、パーティションでのディレクトリパスとファイル名を入力してファイルを指定します。これは直接的なやり方です。
実際はファイルシステムに表示されないファイルをGRUBに指定することもできます。たとえばパーティションの先頭ブロックのいくつかに表示されるチェーンローダーなどです。これらのファイルを指定するには、パーティションのどこにファイルがあるかをブロックごとにGRUBに教えるblocklistを与える必要があります。1つのファイルがいくつもの異なるブロックのセットで構成される場合もあるため、決まったブロック一覧の書き方があります。それぞれのファイルのセクションの場所をブロックのオフセット番号で示した後に、そのオフセットポイントからのブロック数、そしてセクションを順番にカンマで区切って表示します。
次のブロック一覧を見てみましょう。
0+50,100+25,200+1 |
このブロック一覧は、パーティションの先頭のブロックから始まってブロック0から49まで、ブロック99から125まで、さらにブロック199を使用するファイルを使用するようにGRUBに指示します。
Microsoft Windowsなどのチェーンロードを使用するOSをGRUBでロードする場合は、ブロック一覧の書き方を知っていると役立ちます。ブロック0から開始する場合はブロックのオフセット番号を省略してもかまいません。例をあげると、1番目のハードディスクドライブの先頭パーティションにあるチェーンロードファイルは次の名前になります。
(hd0,0)+1 |
以下に、同じようなブロック一覧を指定する場合に、正しいデバイスとパーティションをルートに設定した後、GRUBのコマンド行で次のようにchainloaderコマンドを示します。
chainloader +1 |
GRUBで使用する「ルートファイルシステム」という用語に混乱するユーザーもいます。GRUBのルートファイルシステムはLinuxのルートファイルシステムとは無関係であると覚えてくことが重要です。
GRUBのルートファイルシステムは特定のデバイスに関するルートパーティションを意味します。GRUBはこの情報を使用して主にデバイスをマウントし、そのデバイスからファイルをロードします。
Red Hat Linuxでは、GRUBがLinuxカーネルを格納するルートパーティションをロードすると、カーネルファイルの格納場所とともにkernelコマンドがオプションとして実行可能になります。Linuxカーネルがブートすると、独自のルートファイルシステムを設定します。これがよく知られているLinuxの特徴です。元のGRUBのルートファイルシステムとそれに基づいてマウントされるデバイスは無視され、カーネルファイルをブートするためだけに存在します。
詳細については、コマンド項のrootコマンドとkernelコマンドを参照してください。