この節には、Oracle Solaris OS で GRUB を管理するための追加の参照情報が記載されています。
GRUB の概念を十分に把握するには、次の用語を理解することが不可欠です。
このリストに記載されている用語の中には、GRUB ベースのブートだけに限定されないものもあります。
Oracle Solaris OS のブートに使用されるクリティカルなファイルの集まり。これらのファイルは、ルートファイルシステムがマウントされる前、システムの起動中に必要です。システムは、複数のブートアーカイブを維持管理しています。
「一次ブートアーカイブ」 は、x86 システムで Oracle Solaris OS をブートするために使用されます。
「フェイルセーフブートアーカイブ」は、一次ブートアーカイブが損傷を受けたとき、回復のために使用されます。このブートアーカイブは、ルートファイルシステムをマウントすることなくシステムを起動します。GRUB メニューでは、このブートアーカイブは「フェイルセーフ」と呼ばれます。このアーカイブの主な目的は一次ブートアーカイブを再生成することであり、通常は一次ブートアーカイブがシステムのブートに使用されます。
システムの電源を入れたあとに最初に実行されるソフトウェアプログラム。このプログラムがブートプロセスを開始します。
ブートアーカイブを参照してください。
GRUB (GNU GRand Unified Bootloader) は、メニューインタフェースを備えたオープンソースのブートローダーです。このメニューには、システムにインストールされているオペレーティングシステムの一覧が表示されます。GRUB を使用すると、Oracle Solaris OS、Linux、または Windows などのさまざまなオペレーティングシステムを、簡単にブートすることができます。
システムにインストールされているオペレーティングシステムがリストされたブートメニュー。このメニューから、BIOS または fdisk パーティションの設定を変更することなく、簡単にオペレーティングシステムをブートできます。
GRUB メインメニューのサブメニュー。このサブメニューには、GRUB コマンドが表示されます。これらのコマンドを編集して、ブート動作を変更できます。
システムにインストールされているすべてのオペレーティングシステムがリストされた構成ファイル。このファイルの内容は、GRUB メニューに表示されるオペレーティングシステムの一覧を記述したものです。GRUB のメニューから、BIOS または fdisk パーティションの設定を変更することなく、簡単にオペレーティングシステムをブートできます。
ブート可能な最小ルート (/) ファイルシステム。Solaris インストールメディアに収録されています。ミニルートは、システムのインストールおよびアップグレードに必要な Solaris ソフトウェアで構成されます。x86 システムでは、ミニルートはシステムにコピーされて、フェイルセーフブートアーカイブとして使用されます。フェイルセーフブートアーカイブの詳細は、ブートアーカイブを参照してください。
ブートアーカイブを参照してください。
GRUB は、次の機能コンポーネントで構成されています。
stage1 – fdisk パーティションの最初のセクターにインストールされるイメージです。installgrub コマンドに -m オプションを指定して、stage1 をマスターブートセクターにインストールすることもできます。詳細は、installgrub(1M) のマニュアルページと『Solaris のシステム管理 (デバイスとファイルシステム)』の「GRUB ブート環境でのディスク管理」を参照してください。
stage2 – fdisk パーティションの予約済み領域にインストールされるイメージです。stage2 イメージは GRUB のコアイメージです。
menu.lst ファイル – 通常は UFS ルートを含むシステムの /boot/grub ディレクトリおよび ZFS ルートを含むシステムの /pool-name/boot/grub ディレクトリにあります。このファイルは、GRUB stage2 ファイルによって読み取られます。詳細は、「x86: menu.lst ファイルを編集してブート動作を変更する」の節を参照してください。
dd コマンドを使用して、stage1 および stage2 のイメージをディスクに書き込むことはできません。stage1 イメージは、ディスク上にある stage2 イメージの場所に関する情報を受け取れる必要があります。installgrub コマンドを使用してください。このコマンドは、GRUB ブートブロックをインストールするためにサポートされている方法です。
GRUB が使用するデバイス命名規則は、以前の Solaris リリースの場合と多少異なっています。GRUB デバイス命名規則を理解すると、使用しているシステムで GRUB を構成するときに、ドライブとパーティションの情報を正しく指定できます。
次の表に、この Oracle Solaris リリースの GRUB デバイス命名規則を示します。
表 15–1 GRUB デバイスの規則
デバイス名 |
説明 |
---|---|
(fd0) |
最初のフロッピーディスク |
(fd1) |
2 番目のフロッピーディスク |
(nd) |
ネットワークデバイス |
(hd0,0) |
最初のハードディスク上の最初の fdisk パーティション |
(hd0,1) |
最初のハードディスク上の 2 番目の fdisk パーティション |
(hd0,0,a), |
最初のハードディスク上の最初の fdisk パーティションのスライス a |
(hd0,0,b) |
最初のハードディスク上の最初の fdisk パーティションのスライス b |
GRUB デバイス名はすべて括弧で囲む必要があります。
fdisk パーティションの詳細については、『Solaris のシステム管理 (デバイスとファイルシステム)』の「fdisk パーティションの作成上のガイドライン」を参照してください。
Solaris 10 10/08 リリース以降では、GRUB で以前使用されていた root コマンドが findroot コマンドに置き換わりました。findroot コマンドは、ブートデバイスに関係なく対象ディスクを見つけるための拡張機能を提供します。findroot コマンドは、ZFS ルートファイルシステムからのブートもサポートします。
次に、さまざまな GRUB 実装で findroot コマンドが使用するデバイス命名規則についての説明を示します。
Oracle Solaris Live Upgrade:
findroot (BE_x,0,a) |
x 変数はブート環境の名前です。
ZFS をサポートしているシステムの標準アップグレードおよび新規インストール:
findroot(pool_p,0,a) |
p 変数はルートプールの名前です。
UFS をサポートしているシステムの標準アップグレードおよび新規インストール:
findroot (rootfsN,0,a) |
N 変数は 0 から始まる整数です。
この節では、同じディスク上にある複数のオペレーティングシステムを GRUB でサポートする方法について説明します。次の例は、Solaris 10 10/08 OS、Solaris 9 OS、Linux、および Windows が同じディスク上にインストールされている x86 システムを示しています。
表 15–2 GRUB メニュー設定の例
オペレーティングシステム |
ディスク上の場所 |
---|---|
Windows |
fdisk パーティション 0 |
Linux |
fdisk パーティション 1 |
Oracle Solaris |
fdisk パーティション 2 |
Solaris 9 OS |
スライス 0 |
Solaris 10 10/08 OS |
スライス 3 |
この情報に基づいて、GRUB メニューが次のように表示されます。
title Oracle Solaris 10 findroot (pool_rpool,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris 9 OS (pre-GRUB) root (hd0,2,a) chainloader +1 makeactive title Linux root (hd0,1) kernel <from Linux GRUB menu...> initrd <from Linux GRUB menu...> title Windows root (hd0,0) chainloader +1 |
Oracle Solaris スライスをアクティブなパーティションにする必要があります。また、 Windows メニューの下に、makeactive を指定しないでください。そのようにすると、毎回 Windows がブートされることになります。Linux が GRUB をマスターブートブロック上にインストールした場合には、Oracle Solaris ブートオプションにアクセスできません。Solaris パーティションをアクティブなパーティションにしたかどうかにかかわらず、Solaris ブートオプションにアクセスできなくなります。
このような場合には、次のいずれかの操作を実行できます。
Linux 上でメニューを変更して、Linux GRUB からチェーンロードする。
「チェーンロード」は、別のブートローダーを使用して、サポートされていないオペレーティングシステムを読み込むためのメカニズムです。
m オプションを指定した -installgrub コマンドを実行して、マスターブートブロックを Solaris GRUB に置き換える。
# installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/root-slice |
詳細は、installgrub(1M) のマニュアルページを参照してください。
Oracle Solaris Live Upgrade ブート環境の詳細については、『Oracle Solaris 10 9/10 インストールガイド (Solaris Live Upgrade とアップグレードの計画)』を参照してください。
Oracle Solaris 10 では、GRUB はマルチブートを使用します。menu.lst ファイルの内容は、実行している Oracle Solaris リリース、使用するインストール方法、およびシステムを Oracle Solaris ZFS ルートまたは UFS ルートのどちらからブートしているかに応じて異なります。
GRUB での Oracle Solaris ZFS ブートのサポート
サポート対象の Oracle Solaris リリースを実行している場合、Oracle Solaris ZFS または UFS ファイルシステムからブートを選択できます。menu.lst ファイルと例については、「menu.lst ファイルの説明 (ZFS サポート)」を参照してください。
GRUB UFS ブートのサポート
menu.lst ファイルと例については、「menu.lst ファイルの説明 (UFS サポート)」を参照してください。
次に、ZFS ブートローダーを含むブート環境の menu.lst ファイルのさまざまな例を示します。
ミニルートは実際のルートファイルシステムとしてマウントされるため、フェイルセーフアーカイブが ZFS データセットから読み取られても、menu.lst ファイル内のフェイルセーフブート用のエントリが ZFS bootfs プロパティーに変わることはありません。ブートローダーがミニルートを読み取ったあとは、ZFS データセットはアクセスされません。
title Solaris 10 5/08 s10x_nbu6wos_nightly X86 findroot (pool_rpool,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris failsafe findroot (pool_rpool,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttyb module /boot/x86.miniroot-safe |
title be1 findroot (BE_be1,0,a) bootfs rpool/ROOT/szboot_0508 kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title be1 failsafe findroot (BE_be1,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttyb module /boot/x86.miniroot-safe |
次に、UFS からのブートをサポートするシステムの menu.lst ファイルの例を示します。
title Solaris 10 5/08 s10x_nbu6wos_nightly X86 findroot (pool_rpool,0,a) kernel /platform/i86pc/multiboot module /platform/i86pc/boot_archive title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console-ttyb module /boot/x86.miniroot-safe |
title be1 findroot (BE_be1,0,a) kernel /platform/i86pc/multiboot module /platform/i86pc/boot_archive title be1 failsafe findroot (BE_be1,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttyb module /boot/x86.miniroot-safe |