GRUB を使用する前に理解すべき重要な事の1つにハードディスクやパーティションなど、プログラムで使用するデバイスの参照用語です。これらの用語は複数のオペレーティングシステムからブートするように GRUB を設定する時に特に、重要な情報になります。
GRUB にて、ある特定のデバイスを参照する場合、次の形式を使用してください。(かっことコンマは構文的に大変重要ですので気をつけてください)
(<type-of-device><bios-device-number>,<partition-number>)
<type-of-device>にて GRUB が起動するデバイスの種類を指定します。ハードディスクに対する hd とフロッピーに対する fd の2つが最も一般的なオプションです。使用度の低いデバイスタイプでは、ネットワークディスクに対する nd があります。ネットワーク上で GRUB をブートする設定の説明はhttp://www.gnu.org/software/grub/manual/を参照ください。
<bios-device-number>は BIOSデバイス番号です。プライマリIDEハードドライブには0、セカンダリIDEハートドライブには 1 が番号付けされています。この構文はカーネルがデバイスに使用するものとほぼ同様です。例えば、カーネルに対するhdaのaは GRUB に対するhd0 の 0 に、hdb の b は hd1 の 1 に似ています。
<partition-number> はデバイスのパーティション数を指定します。<bios-device-number>と同様、パーティションのほとんどが0から番号付けされますが、 BSDパーティションは文字にて指定され、aが0に、b が 1 に匹敵します。
![]() | ヒント |
---|---|
GRUBのデバイスに対するナンバリングシステムが1ではなく0から開始することに注意してください。これは初めてGRUBを使用するユーザーによる間違えやすい点です。 |
例えば、システムに複数のハードドライブがある場合、 GRUBは一番目のハードドライブとして(hd0)を、 二番目のハードドライブをして(hd1)を参照します。 同様に、GRUBは一番目のドライブにある一番目のパーティションとして (hd0,0)を、二番目のハードドライブにある 3番目のパーティションとして(hd1,2)を参照します。
通常では次の規則に従って、GRUBのデバイスとパーティションに名前をつけてください。
ハードディスクドライブがIDEかSCSIかに関係なく、すべてのハードディスクドライブはhdで始まります。fdはフロッピーを意味します。
パーティションに関わらずデバイス全体を指定する場合は、カンマとパーティション番号を除いてください。これは、GRUBに特定のディスクのMBRを設定させる場合に重要です。たとえば、(hd0)は1番目のデバイスにあるMBRを指し、(hd3)は4番目のデバイスにあるMBRを指します。
複数のドライブデバイスが存在する場合は、BIOS に設定されたドライブブートの順番を知ることが重要となります。システムに IDE ドライブか SCSI ドライブのどちらかしか存在しない場合は簡単ですが、その両方が混在している時は最初にアクセスするブート パーティションのあるドライブの種類を確認することが重要となります。
メニューリストなどのファイルを参照するコマンドをGRUBに入力する場合、デバイスとパーティション番号のすぐ後に絶対的なファイルパスを 指定してください。
このようなコマンドの構造は次の通りです。
(<device-type><device-number>,<partition-number>)</path/to/file>
この例では、<device-type>をhd、fd、nd のいずれかに置き換えてください。<device-number>は整数に置き換えてください。そして、</path/to/file>をデバイスの最上位に対する絶対的なパスに置き換えてください。
パーティションの先頭ブロックに表示されるチェーンローダーなど実際はファイルシステムに表示されないファイルを GRUB に指定することもできます。これらのファイルをロードするには、パーティションのどこにファイルがあるかをブロックごとに指定するブロック一覧を提供してください。1つのファイルがいくつもの異なるブロックのセットで構成される場合もあるため、ブロック一覧には特別な構文が使用されます。ファイルを持つブロックはブロックのオフセット番号と その後に続くオフセットポイントからのブロック数によって指定されます。ブロックの オフセットはコンマ区切りリストに順次記載されます。
次にブロック一覧の例を示します:
0+50,100+25,200+1 |
このブロック一覧の例では、パーティションの先頭ブロックから始まるファイルを指定し、 ブロック0からブロック49、ブロック99からブロック124、そしてブロック199を使用します。
チェーンロードを使用するオペレーティングシステムをGRUBでロードする場合は、 ブロック一覧の書き方を知っていると便利です。ブロック0から開始する場合はブロック のオフセット番号を省略してもかまいません。 例として、1番目のハードディスクドライブの先頭パーティションにある チェーンロードファイルの名前は次のようになります。
(hd0,0)+1 |
以下に、同じようなブロック一覧を指定する場合に、正しいデバイスとパーティションをルートで設定した後、GRUB のコマンド行で次のように chainloader コマンドを示します:
chainloader +1 |
GRUB で言うルートファイルシステムは違う意味の用語になります。GRUB のルートファイルシステムは Linux のルートファイルシステムとは無関係であると覚えておいてください。
GRUB ルートファイルシステムは指定デバイスの最上位部です。例えば、イメージファイル (hd0,0)/grub/splash.xpm.gz は、(hd0,0)パーティション (実際はシステムの/boot/パーティション) の最上位(又はroot)にある /grub/ ディレクトリに格納されます。
次ぎに、オプションとしてカーネルファイルの場所を持ったkernel コマンドが実行されます。Linux カーネルがブートすると、Linux ユーザーに馴染みのルートファイルシステムを設定します。オリジナルの GRUB ルートファイルシステムとそのマウントは無視されます。これらはカーネルファルをブートするためだけに存在します。
詳細については、項2.6のrootコマンドとkernelコマンドを参照してください。