GRUBを使用する前に理解すべき重要な事の1つにハードディスクやパーティションなど、 プログラムで使用するデバイスの参照用語です。これらの用語は複数のオペレーティング システムからブートするようにGRUBを設定する時に特に、重要な情報になります。
ハードディスクが複数あるシステムを想定しましょう。 システムの1番目のハードドライブは、GRUBによって(hd0)と 区分されます。そのドライブの1番目のパーティションは、(hd0,0)と なり、2番目のハードドライブの5番目のパーティションは(hd1,4)となります。 一般的に、GRUBを使用する時の命名慣習は、以下のような仕組みになります:
(<type-of-devicegt><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番目のデバイス上のMBRを指し、(hd3)は4番目のデバイス上のMBRを指します。
複数のハードディスクドライブが存在する場合は、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から124まで、さらにブロック199を使用するファイルを使用するようにGRUBに指示します。
Microsoft Windowsなどのチェーンロードを使用するOSをGRUBでロードする場合は、ブロック一覧の書き方を知っていると役立ちます。ブロック0から開始する場合はブロックのオフセット番号を省略してもかまいません。例をあげると、1番目のハードディスクドライブの先頭パーティションにあるチェーンロードファイルは次の名前になります:
(hd0,0)+1 |
以下に、同じようなブロック一覧を指定する場合に、正しいデバイスとパーティションをルートで設定した後、GRUBのコマンド行で次のようにchainloaderコマンドを示します:
chainloader +1 |
GRUBで使用する「ルートファイルシステム」という用語に混乱するユーザーもいます。GRUBのルートファイルシステムはLinuxのルートファイルシステムとは無関係であると覚えてくことが重要です。
GRUBのルートファイルシステムは特定のデバイスに関するルートパーティションを意味します。GRUBはこの情報を使用してデバイスをマウントし、そのデバイスからファイルをロードします。
Red Hat Linuxでは、GRUBがルートパーティション(/bootパーティションに相当し、Linuxカーネルを格納する)をロードすると、カーネルファイルの格納場所をオプションとしてkernelコマンドが実行可能になります。Linuxカーネルがブートすると、Linuxユーザーに馴染みのルートファイルシステムを設定します。元のGRUBのルートファイルシステムとそのマウントは無視され、カーネルファイルをブートするためだけに存在します。
詳細については、項2.6のrootコマンドとkernelコマンドを参照してください。