この章では、システムのブートについての概要を説明します。Oracle Solaris ブートデザイン、ブートプロセス、および Oracle Solaris OS でシステムをブートする各種方法について説明します。
この章の内容は次のとおりです。
Oracle Solaris システムのブート手順については、第 12 章Oracle Solaris システムのブート (手順)を参照してください。
GRUB を実装していない Solaris システムのブート手順については、第 16 章x86: GRUB を実装しないシステムのブート (手順)を参照してください。
システムのシャットダウンとブートに関する新機能については、「システムのシャットダウンとブートに関する新機能」を参照してください。
ブートローダーの管理と ブート動作の変更に関する概要と手順については、第 11 章Oracle Solaris ブート動作の変更 (手順)を参照してください。
サービス管理機能 (SMF) によるブートサービスの管理については、「SMF とブート」を参照してください。
この節の情報は、SPARC と x86 の両方のプラットフォームに適用されます。
Oracle Solaris の基本ブート設計には、次の特徴があります。
ブートアーカイブの使用
ブートアーカイブとは、システムのブートに必要なすべてのファイルが含まれている RAM ディスクイメージのことです。Solaris OS をインストールすると、一次アーカイブとフェイルセーフアーカイブの 2 つのブートアーカイブが作成されます。詳細については、「SPARC でのブートアーカイブの実装」を参照してください。
bootadm コマンドも、SPARC プラットフォームで使用できるように変更されました。このコマンドは、x86 プラットフォームの場合と同じように機能します。bootadm コマンドは、アーカイブの更新と検証を細部にわたって自動的に処理します。インストールまたはシステムのアップグレード中に、bootadm コマンドによって初期ブートアーカイブが作成されます。正常なシステムシャットダウンの処理中に、シャットダウンプロセスで、ブートアーカイブの内容がルートファイルシステムと突き合わせてチェックされます。何らかの不一致が検出されると、システムはブートアーカイブを再構築して、リブート時に必ずブートアーカイブとルート (/) ファイルシステムの同期がとれるようにします。bootadm コマンドを使用してブートアーカイブを手動で更新することもできます。「bootadm コマンドを使用してブートアーカイブを管理する」を参照してください。
SPARC システムでは、bootadm コマンドの一部のオプションを使用できません。
詳細は、bootadm(1M) および boot(1M) のマニュアルページを参照してください。
インストールおよびフェイルセーフ処理中に RAM ディスクイメージをルートファイルシステムとして使用
このプロセスは、SPARC および x86 の両方のプラットフォームで同じになりました。RAM ディスクイメージは、ブートアーカイブから生成されたあと、ブートデバイスからシステムに転送されます。
SPARC プラットフォームでは、OpenBoot PROM を引き続き使用して、ブートデバイスにアクセスし、ブートアーカイブをシステムのメモリーに転送します。 反対に、x86 プラットフォームでは、システムは最初に BIOS によって制御されます。BIOS を使用して、ネットワークデバイスからのブートアーカイブの転送を開始するか、ブートローダーを実行します。Oracle Solaris OS では、ディスクからのブートアーカイブの転送に使用する x86 ブートローダーは GRUB です。「x86: ブートプロセス」を参照してください。
ソフトウェアをインストールする場合、RAM ディスクイメージは、インストールプロセス全体に使用されるルートファイルシステムになります。この目的で RAM ディスクイメージを使用すると、リムーバブルメディアからシステムをブートする必要がなくなります。RAM ディスクファイルシステムのタイプには、HSFS (High Sierra File System) または UFS を指定できます。
SPARC プラットフォームのブートプロセスは、x86 ブート動作との共通性を高めるために再設計および改善されました。新しい SPARC ブートデザインでは、ブートチェーンの複数の部分に変更を加えなくても、新しいファイルシステムタイプなどの新機能を追加できます。変更には、ブートフェーズの独立性の実装も含まれます。
これらの改善の重要点は、次のとおりです。
SPARC および x86 プラットフォームでのブートプロセスの共通性
ネットワークブート動作の共通性
さまざまなファイルシステムタイプからシステムをより簡単にブートできるようにする、ブートアーキテクチャーの柔軟性
次の 4 つのブートフェーズは、互いに独立しています。
OBP (Open Boot PROM) フェーズ
SPARC プラットフォームでのブートプロセスの OBP フェーズは変わっていません。
ディスクデバイスの場合、ファームウェアドライバは通常 OBP ラベルパッケージの「読み込み」メソッドを使用します。このメソッドは、ディスクの先頭にある VTOC ラベルを解析して、指定されたパーティションを見つけます。 そして、パーティションのセクター 1 - 15 がシステムのメモリーに読み込まれます。この領域は一般にブートブロックと呼ばれ、通常はファイルシステムリーダーが格納されています。
ブーターフェーズ
このフェーズの間に、ブートアーカイブが読み取られ、実行されます。ブートファイルシステムの形式を認識しておく必要があるのは、ブートプロセスのこのフェーズだけです。場合によっては、ブートアーカイブがインストールミニルートでもあることがあります。ブートローダーとブートアーカイブの転送に使用されるプロトコルには、ローカルディスクアクセス、NFS、および HTTP があります。
RAM ディスクフェーズ
RAM ディスクは、Oracle Solaris OS のインスタンスのブートに必要なカーネルモジュールおよびその他のコンポーネント、またはインストールミニルートで構成されるブートアーカイブです。
SPARC ブートアーカイブは、x86 ブートアーカイブと同じです。ブートアーカイブのファイルシステム形式は非公開です。そのため、システムのブート時に使用されるファイルシステムタイプ (HSFS または UFS ファイルシステムなど) の情報は、ブーターやカーネルには必要ありません。RAM ディスクはブートアーカイブからカーネルイメージを抽出して、それを実行します。RAM ディスク、特にシステムのメモリーに常駐するインストールミニルートのサイズを最小化するため、ミニルートの内容が圧縮されます。この圧縮はファイルレベルごとに行われ、個々のファイルシステム内で実装されます。ファイルを圧縮して、ファイルに圧縮済みのマークを付けるには、/usr/sbin/fiocompress ユーティリティーが使用されます。
このユーティリティーには、ファイル圧縮ファイルシステム dcfs との非公開インタフェースが備わっています。
カーネルフェーズ
カーネルフェーズは、ブートプロセスの最終段階です。このフェーズの間に、Oracle Solaris OS が初期化され、ブートアーカイブから構築された RAM ディスク上に最小ルートファイルシステムがマウントされます。ブートアーカイブがインストールミニルートである場合、OS は引き続きインストールプロセスを実行します。それ以外の場合は、指定されたルートデバイス上にルートファイルシステムをマウントするために十分な 1 組のカーネルファイルおよびドライバが RAM ディスクに格納されます。
そして、カーネルはブートアーカイブから主モジュールの残りを抽出し、それ自体を初期化し、実際のルートファイルシステムをマウントして、ブートアーカイブを破棄します。
RAM ディスクベースのミニルートは、root_archive コマンドによって圧縮および展開されます。 新しいブートアーキテクチャーをサポートする SPARC システムだけがミニルートの圧縮版を圧縮および展開できます。
Oracle Solaris 10 バージョンの root_archive ツールは、ほかの Oracle Solaris リリースに含まれているツールのバージョンと互換性がありません。そのため、RAM ディスクの操作はアーカイブと同じ リリースが動作するシステムでのみ行うようにしてください。
ミニルートの圧縮および展開の詳細については、root_archive(1M)のマニュアルページを参照してください。
Oracle Solaris OS をインストールまたはアップグレードするには、CD/DVD またはネットワークからブートする必要があります。どちらの場合も、ミニルートのルートファイルシステムは RAM ディスクです。このプロセスを使用すると、システムをリブートしなくても Solaris ブート CD または DVD を取り出すことができます。ブートアーカイブにはミニルート全体が含まれています。インストール DVD の構築は、HSFS ブートブロックを使用するように変更されました。ミニルートは、RAM ディスクとして読み込まれる単一の UFS ファイルに圧縮されます。ミニルートはすべての OS インストールタイプに使用されます。
Oracle Solaris 10 9/10 では、SPARC システムをインストールするための最小メモリー要件は 384M バイトです。このメモリー容量では、テキストベースのインストールだけが可能になります。x86 システムの場合、最小メモリー要件は 768M バイトです。また、インストール GUI プログラムを実行するには、768M バイト以上のメモリーが必要です。
ネットワークブートサーバーの設定プロセスが変更されました。ブートサーバーは、ブートストラッププログラムだけでなく、RAM ディスクにも対応するようになりました。RAM ディスクは、CD/DVD からブートしようと、NFS または HTTP を使ってネットワークインストールを実行しようと、すべてのインストールの単一のミニルートとしてダウンロードされ、ブートされます。NFS または wanboot プログラム (HTTP) によるネットワークブート用のネットワークブートサーバーの管理は何も変わりません。 ただし、ネットワークブートプロセスの内部実装は、次のように変更されました。
ブートサーバーはブートアーカイブの形でブートストラップをターゲットシステムに転送する。
ターゲットシステムはブートアーカイブを RAM ディスクに展開する。
ブートアーカイブは読み取り専用の初期ルートデバイスとしてマウントされる。
SPARC システムのブートについては、「SPARC システムのブート (作業マップ)」を参照してください。
SPARC システムでは、ok プロンプトからシステムをブートすると、デフォルトのブートデバイスが自動的に選択されます。代替ブートデバイスを指定するには、boot-device の NVRAM 変数を変更します。ブート時にコマンド行から代替ブートデバイスまたは代替カーネル (ブートファイル) を指定することもできます。「SPARC: デフォルトのカーネル以外のカーネルをブートする方法」を参照してください。
以前は x86 プラットフォームでしか使用できなかった ブートアーカイブが SPARC ブートアーキテクチャーに不可欠な要素となりました。
bootadm コマンドは、SPARC プラットフォームでも使用できるように変更されました。このコマンドは、x86 プラットフォームの場合と同じように機能します。bootadm コマンドは、アーカイブの更新と検証を細部にわたって処理します。x86 プラットフォームでは、インストールまたはシステムのアップグレード中に、bootadm コマンドによって GRUB メニューが更新されます。ブートアーカイブを手動で管理する場合にも、bootadm コマンドを使用できます。
boot-archive サービスは、サービス管理機能 (SMF) によって管理されます。ブートアーカイブのサービスインスタンスは svc:/system/boot-archive:default です。このサービスを有効、無効、または更新するには、svcadm コマンドを使用します。SMF を使用したサービスの管理については、第 18 章サービスの管理 (概要)を参照してください。
サポートされている Solaris リリースでは、SPARC と x86 の両方のシステムに 2 種類のブートアーカイブが用意されています。
一次ブートアーカイブ
フェイルセーフブートアーカイブ
SPARC ブートアーカイブに含まれるファイルは、/platform ディレクトリにあります。
/platform ディレクトリの内容は 2 つのグループのファイルに分けられます。
sun4u ブートアーカイブに必要なファイル
sun4v ブートアーカイブに必要なファイル
ブートアーカイブの管理については、「Oracle Solaris ブートアーカイブの管理 (作業マップ)」を参照してください。
オープンソースの GRUB (GRand Unified Bootloader) は、x86 システムのデフォルトのブートローダーです。GRUB は、ブートアーカイブをシステムのメモリーに読み込むソフトウェアです。ブートアーカイブは、システムの起動中にルートファイルシステムがマウントされる前に必要な、重要なファイルの集まりです。ブートアーカイブとは、Oracle Solaris OS のブートに使用されるインタフェースのことです。GRUB の詳細は、http://www.gnu.org/software/grub/grub.html を参照してください。grub(5) のマニュアルページも参照してください。
x86 システムの電源を入れると、BIOS (Basic Input/Output System) により、CPU、メモリー、およびプラットフォームハードウェアが初期化されます。初期化フェーズが完了すると、BIOS が構成済みブートデバイスからブートローダーをロードし、システムの制御をブートローダーに移します。「ブートローダー」は、システムの電源を投入したあとに最初に動作するソフトウェアプログラムです。このプログラムによってブートプロセスが開始されます。
GRUB は、menu.lst ファイルと呼ばれる構成ファイルに定義済みのブートオプションが含まれているメニューインタフェースを実装します。また、デフォルトのブート動作の変更など、さまざまなブート機能の実行に使用できる GUI メニューインタフェースからアクセス可能なコマンド行インタフェースも備えています。Solaris OS では、GRUB の実装はマルチブート仕様に準拠しています。マルチブート仕様の詳細は、http://www.gnu.org/software/grub/grub.html を参照してください。
Oracle Solaris カーネルはマルチブート仕様に完全に準拠しているため、GRUB を使用して x86 システムをブートできます。GRUB を使用すると、単一の x86 システムにインストールされている各種オペレーティングシステムをブートできます。たとえば、ブート時に GRUB メニューでブートエントリを選択するか、デフォルトで特定の OS をブートするように menu.lst ファイルを設定することで、Oracle Solaris、Linux、または Windows を個別にブートできます。
GRUB では、ファイルシステムとカーネル実行可能ファイルの形式が認識されるため、ディスク上のカーネルの物理的な位置を記録しておかなくても、オペレーティングシステムを読み込むことができます。GRUB ベースのブートでは、カーネルは、カーネルのファイル名、およびカーネルが存在するドライブとパーティションを指定することでロードされます。 詳細は、「GRUB の構成に使用される命名規則」を参照してください。
GRUB を使ってシステムをブートする手順については、「GRUB を使用して x86 システムをブートする (作業マップ)」を参照してください。
また、次のマニュアルページも参照してください。
findroot コマンドは、以前に GRUB が使用していた root コマンドと同様に機能しますが、ブートデバイスに関係なく、目的のディスクを発見する機能が強化されました。findroot コマンドは、Oracle Solaris ZFS ルートファイルシステムからのブートもサポートします。
このコマンドの menu.lst エントリのもっとも一般的な形式は次のとおりです。
findroot (rootfs0,0,a) kernel$ /platform/i86pc/kernel/$ISADIR/unix module$ /platform/i86pc/$ISADIR/boot_archive |
一部の Oracle Solaris リリースでは、このエントリは次のようになります。
title Solaris 10 10/08 s10x_u6wos_03 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 |
詳細は、「x86: findroot コマンドの実装」を参照してください。
GRUB の参照情報については、第 15 章x86: GRUB ベースのブート (参照情報)を参照してください。
Oracle Solaris ZFS ルートファイルシステムからのブートが、Oracle Solaris でサポートされるようになりました。インストールソフトウェアには、ZFS ルートを含むシステムのアップグレードやパッチ適用のサポートも含まれています。ブート方法、システム操作、およびインストール手順は、この変更をサポートするように修正されました。ブートに関する変更には、SPARC プラットフォームでの新しいブートアーキテクチャーの実装があります。新しい SPARC ブート設計では、Solaris x86 ブートアーキテクチャーとの共通性を高める機能強化が行われています。
この機能を使用する前に、『Oracle Solaris 10 9/10 ご使用にあたって』で既知の問題に関する情報を確認してください。
用語の完全なリストなど、Oracle Solaris ZFS の詳細は、『Oracle Solaris ZFS 管理ガイド』の「ZFS の用語」を参照してください。
Oracle Solaris の新規インストールを実行する前、または Oracle Solaris Live Upgrade を使って UFS ルートファイルシステムを Oracle Solaris ZFS ルートファイルシステムに移行する前に、次の要件が満たされていることを確認してください。
Solaris リリース情報
Oracle Solaris ZFS·ルートファイルシステムからインストールやブートを行う機能は、Solaris 10 10/09 リリースから使用できます。Oracle Solaris Live Upgrade の操作を実行して ZFS ルートファイルシステムに移行するには、Solaris 10 10/09 リリースをインストールしておくか、そのリリースにアップグレードしておく必要があります。
Oracle Solaris ZFS ストレージプールの容量要件:
スワップデバイスとダンプデバイスは ZFS ルート環境で共有されないため、ブート可能な ZFS ルートファイルシステムに必要なプールの最小容量は、ブート可能な UFS ルートファイルシステムの場合よりも大きくなります。
スワップボリュームのサイズは物理メモリーのサイズの 1/2 (ただし 2G バイト以下かつ 512M バイト以上) として計算されます。ダンプボリュームのサイズは、dumpadm の情報と物理メモリーのサイズに基づいて、カーネルによって計算されます。新しいサイズがシステムの運用をサポートする限り、Oracle Solaris JumpStart プロファイルで、または最初のインストール時に、スワップボリュームとダンプボリュームのサイズを好きなサイズに調整できます詳細は、『Oracle Solaris ZFS 管理ガイド』の「スワップデバイスおよびダンプデバイスの ZFS サポート」を参照してください。
Oracle Solaris ZFS ルートファイルシステムからのブート動作は、UFS ファイルシステムからブートする場合とは異なります。ZFS はインストールやブートに新しい概念をいくつか適用するため、システムのブートに関する基本的な管理業務がいくつか変更されました。ZFS ルートファイルシステムからのブートと UFS ルートファイルシステムからのブートのもっとも重要な違いは、ZFS からのブートでは、デバイス識別子がルートファイルシステムを一意に特定しないことです。これはつまり、ブート環境 (BE) であると言えます。ZFS を使用した場合は、デバイス識別子によって「ストレージプール」が一意に識別されます。ストレージプールには、複数のブート可能データセット (ルートファイルシステム) が含まれていることがあります。そのため、ブートデバイスを指定するほかに、ブートデバイスによって識別されるプール内のルートファイルシステムも指定する必要があります。
x86 システムでは、GRUB によって識別されるブートデバイスに ZFS ストレージプールが含まれている場合、GRUB メニューの作成に使われる menu.lst ファイルがそのプールのデータセット階層のルートにあるデータセットに格納されています。このデータセットには、プールと同じ名前が付いています。各プールにそのようなデータセットが 1 つあります。
「デフォルトのブート可能データセット」は、ブート時にマウントされ、ルートプールの bootfs プロパティーによって定義される、プールのブート可能データセットです。ルートプール内のデバイスがブートすると、このプロパティーによって指定されるデータセットがルートファイルシステムとしてマウントされます。
新しい bootfs プールプロパティーは、指定されたプールのデフォルトのブート可能データセットを指定するためにシステムが使用するメカニズムです。ルートプール内のデバイスが起動すると、デフォルトでルートファイルシステムとしてマウントされるデータセットは bootfs プールプロパティーによって識別されるデータセットになります。
SPARC システムでは、boot コマンドの新しい -Z dataset オプションを使用することで、デフォルトの bootfs プールプロパティーが上書きされます。
x86 システムでは、ブート時に GRUB メニューで代替ブート環境を選択することで、デフォルトの bootfs プールプロパティーが上書きされます。
SPARC プラットフォームでは、次の 2 つのブートオプションが新たに追加されました。
-L オプション。システム上の使用可能なすべての BE のリストを表示します。
ok boot -L |
-L オプションは、ok プロンプトから実行されます。このオプションは、システム上の使用可能な BE のリストを表示するだけです。システムをブートするには、- Z ブートオプションを使用します。
-Z オプション。boot コマンドでこのオプションを使用すると、bootfs プールプロパティーによって指定されるデフォルトのデータセット以外のブート可能データセットを指定できます。
ok boot -Z dataset |
ZFS ブートローダーを備えたデバイスで -L オプションを使用したときに表示される BE のリストは、当該システムで使用可能な menu.lst エントリを反映しています。使用可能な BE のリストのほかに、BE を選択する方法や -Z オプションを使ってシステムをブートする方法も表示されます。メニュー項目の bootfs 値によって指定されたデータセットは、ブーターによって読み込まれる後続のすべてのファイル (/etc ディレクトリに格納されているブートアーカイブや各種の構成ファイルなど) に使用されます。その後、このデータセットはルートファイルシステムとしてマウントされます。
手順については、「SPARC システムで指定した ZFS ルートファイルシステムからブートする」を参照してください。
x86 プラットフォームでは、新しい GRUB キーワード $ZFS-BOOTFS が導入されました。x86 システムのブート時に、GRUB メニューエントリに対応するルートファイルシステムが ZFS データセットである場合は、GRUB メニューエントリに、デフォルトで -$ZFS-BOOTFS トークンを持つ B オプションが含まれます。ZFS ブートローダーをサポートするリリースをインストールする場合は、GRUB menu.lst ファイルがこの情報で自動的に更新されます。デフォルトのブート可能データセットは、bootfs プロパティーによって識別されます。
ZFS ブートローダーをサポートするリリースが稼働する x86 システムでは、この情報は GRUB menu.lst ファイルに組み込まれます。
ZFS からシステムをブートする手順については、「x86: x86 システムで指定した ZFS ルートファイルシステムからブートする」を参照してください。