このセクションでは SPARC プラットフォームと x86 プラットフォームの基本的なブートプロセスについて説明します。サービスプロセッサを持つシステムや、複数の物理ドメインを持つシステムなど、特定のハードウェアタイプ上のブートプロセスについての詳細は、http://www.oracle.com/technetwork/indexes/documentation/index.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 ファームウェアを搭載するシステムと異なるプロセスが含まれます。Chapter 5, システムのネットワークからのブート (タスク)を参照してください。
UEFI ベースのファームウェアを搭載するシステムでは、ブートプロセスが大きく異なります。UEFI ファームウェアは、列挙されたディスク上の EFI システムパーティション (ESP) を検索し、UEFI 仕様で定義されたプロセスに従って、UEFI ブートプログラムをロードして実行するため、UEFI ブートアプリケーションがメモリーにロードされ、実行されます。Oracle Solaris では、その UEFI ブートアプリケーションは GRUB です。このリリースの GRUB のバージョンは、UEFI ブートアプリケーションとして実行するように構築されています。ブートプロセスは、BIOS ファームウェアを搭載したシステムの場合と同じ処理を続けます。
サービスプロセッサを持つシステムや、複数の物理ドメインを持つシステムなど、特定のハードウェアタイプ上のブートプロセスについての詳細は、http://www.oracle.com/technetwork/indexes/documentation/index.html にある特定のハードウェアの製品ドキュメントを参照してください。