このセクションでは SPARC プラットフォームと x86 プラットフォームの基本的なブートプロセスについて説明します。サービスプロセッサを持つシステムや、複数の物理ドメインを持つシステムなど、特定のハードウェアタイプ上のブートプロセスについての詳細は、http://www.oracle.com/products/oracle-a-z.html にある特定ハードウェアについての製品ドキュメントを参照してください。
スタンドアロンプログラムのロードと実行のプロセスをブートストラップと呼びます。通常、スタンドアロンプログラムはオペレーティングシステムカーネルです。ただし、カーネル以外の任意のスタンドアロンプログラムをブートできます。
SPARC プラットフォームでは、ブートストラッププロセスは次の基本フェーズで構成されます。
システムをオンに設定したあと、システムファームウェア (PROM) は電源投入時自己診断 (POST) を実行します。
診断テストが正常に完了したあと、システムのファームウェアが使用する不揮発性ストレージ領域に適切なフラグが設定されていれば、ファームウェアは自動ブートを試みます。
第 2 レベルのプログラムは、ディスクからブートする場合はファイルシステム固有のブートブロック、ネットワーク経由または自動インストーラ (AI) を使用してブートする場合は inetboot または wanboot です。
x86 ベースのシステムでは、ブートストラッププロセスは、カーネルのロードと、カーネルの初期化という概念的に異なる 2 つのフェーズからなります。カーネルのロードは、システムボード上のファームウェアおよび周辺ボード上の ROM のファームウェア拡張機能を使用して、GRUB によって実装されます。システムファームウェアは GRUB をロードします。ロードメカニズムは、システムボード上に標準装備されるシステムファームウェアのタイプにより異なります。
PC 互換システムの電源を投入すると、システムのファームウェアが電源投入時自己診断テスト (POST) を実行し、周辺ボードの ROM からファームウェア拡張機能を検出してインストールし、ファームウェア固有のメカニズムを使ってブートプロセスを開始します。
BIOS ファームウェアを搭載するシステムでは、ハードディスクの最初の物理セクター (ブートセクターと呼ばれる) がメモリーにロードされて、そのコードが実行されます。GPT (GUID Partition Table) を使用してパーティション化されるディスクには、別の場所からコードをロードする、動作の異なるブートセクターコードが必要です (GPT スキームは各パーティションの最初のセクターをブートセクターのコードストレージとして予約しないため)。GRUB が BIOS ファームウェア上で実行される場合、別の場所とは BIOS ブートパーティションと呼ばれる専用のパーティションです。GRUB のブートセクターコードが GRUB の残りをメモリーにロードすると、ブートプロセスが続行されます。
次に、ブートプログラムは次の段階 (Oracle Solaris の場合は GRUB 自体) をロードします。ネットワークからのブートでは、BIOS ファームウェアを搭載するシステムと異なるプロセスが含まれます。詳細は、システムのネットワークからのブートを参照してください。
UEFI ベースのファームウェアを搭載するシステムでは、ブートプロセスが大きく異なります。UEFI ファームウェアは、列挙されたディスク上の EFI システムパーティション (ESP) を検索し、UEFI 仕様で定義されたプロセスに従って、UEFI ブートプログラムをロードして実行するため、UEFI ブートアプリケーションがメモリーにロードされ、実行されます。Oracle Solaris では、その UEFI ブートアプリケーションは GRUB です。このリリースの GRUB のバージョンは、UEFI ブートアプリケーションとして実行するように構築されています。ブートプロセスは、BIOS ファームウェアを搭載したシステムの場合と同じ処理を続けます。
サービスプロセッサを持つシステムや、複数の物理ドメインを持つシステムなど、特定のハードウェアタイプ上のブートプロセスについての詳細は、http://www.oracle.com/technetwork/indexes/documentation/index.html にある特定のハードウェアの製品ドキュメントを参照してください。
GRUB 2 は GPT ラベル付きディスクに加えて、BIOS と UEFI の両方のファームウェアを搭載するシステムをブートできます。UEFI ファームウェアおよび BIOS ファームウェアのブートをサポートするために、GRUB 2 は、i386-pc (BIOS) と x86_64-efi (64 ビット UEFI 2.1+) の 2 つの異なるプラットフォームに対応するように構築されているため、2 つの個別のバイナリセットとして配布されています。
x86 ベースのシステムをブートする場合、UEFI 対応システムと BIOS 対応システムの次の違いに注意してください。
コマンドの違い – BIOS ブート方法で使われる特定のコマンドは UEFI ファームウェアで使用できません。同様に、BIOS ブート方法をサポートするシステムでは、特定の UEFI コマンドを使用できません。
PXE ネットワークブートの違い – ネットワークから、UEFI ファームウェアを搭載するシステムのブートをサポートするために、DHCP サーバー構成が変更されました。これらの変更には、新しい UEFI クライアントアーキテクチャー識別子値 (DHCP オプション 93) のサポートが含まれます。
新しい –B オプションが zpool create コマンドに追加されました。ディスク全体が zpool create 作成コマンドに渡されると、–B オプションにより、zpool コマンドは、指定されたデバイスを 2 つのパーティションで分割します。最初のパーティションはファームウェア固有のブートパーティション、2 つ目のパーティションは ZFS データパーティションです。このオプションは、必要に応じて、ディスク vdev 全体を既存の rpool に追加するか接続する場合に、必要なブートパーティションを作成するためにも使用できます。bootfs プロパティーを使用できる条件も変更されました。プールですべてのシステムおよびディスクのラベル付け要件が満たされている場合に、プールのブート可能データセットを識別するように bootfs プロパティーを設定できます。ラベル付けの要件の一部として、必要なブートパーティションも存在している必要があります。詳細は、Oracle Solaris 11.3 での ZFS ファイルシステムの管理 の ZFS ルートプールの管理を参照してください。