この章では、Oracle Solaris ブートアーカイブを管理する方法を説明します。bootadm コマンドの詳細な使用手順も説明します。
この章の内容は次のとおりです。
ブートプロセスの概要については、第 9 章システムのシャットダウンとブート (概要)を参照してください。システムのブート手順については、第 12 章Oracle Solaris システムのブート (手順)を参照してください。
作業 |
説明 |
参照先 |
---|---|---|
boot-archive サービスを管理します。 |
boot-archive サービスは、サービス管理機能 (SMF) によって制御されます。サービスを有効/無効にするには、svcadm コマンドを使用します。boot-archive サービスが実行されているかどうかを確認するには、svcs コマンドを使用します。 | |
x86: auto-reboot-safe プロパティーを使ってブートアーカイブ更新障害を消去します。 |
auto-reboot-safe プロパティーが false に設定されているために、x86 システムでブートアーカイブ更新が失敗した場合に、この手順を使用します。 | |
bootadm コマンドを使用して、ブートアーカイブ更新障害を消去します。 |
auto-reboot-safe プロパティーが true に設定されている場合に、SPARC プラットフォームと x86 プロットフォームで、この手順を使用してブートアーカイブ更新障害を手動で消去します。 | |
bootadm コマンドを使ってブートアーカイブを手動で更新します。 |
ブートアーカイブを手動で更新する場合は、bootadm update-archive コマンドを使用します。 | |
Solaris ボリュームマネージャー (SVM) メタデバイスミラールートのあるシステム上で、ブートアーカイブを手動で更新します。 |
メタデバイスミラーを使用するシステム上で、bootadm コマンドを使用してデバイスを手動でマウントしてから、ブートアーカイブを更新する必要があります。 |
「Solaris ボリュームマネージャー RAID-1 (ミラー) ルートパーティション上のブートアーカイブを手動で更新する方法」 |
bootadm コマンドを使用してブートアーカイブの内容を一覧表示します。 |
ブートアーカイブの内容を一覧表示する場合は、bootadm list-archive コマンドを使用します。 | |
x86: bootadm コマンドを使用してアクティブな GRUB メニューを検出します。 |
アクティブな GRUB メニューの場所を調べる場合は、bootadm list-menu コマンドを使用します。 | |
x86: bootadm コマンドを使用して GRUB メニューのデフォルトブートエントリを設定します。 |
GRUB メニューのデフォルトのブートエントリを設定する場合は、bootadm set-menu コマンドを使用します。 |
Oracle Solaris OS をシステムにインストールすると、bootadm コマンドによって一次ブートアーカイブとフェイルセーフアーカイブが 1 つずつ作成されます。
「一次ブートアーカイブ」は、ルート (/) ファイルシステムのサブセットです。このブートアーカイブには、すべてのカーネルモジュール、driver.conf ファイル、およびいくつかの構成ファイルが含まれています。これらのファイルは、/etc ディレクトリにあります。ブートアーカイブ内のファイルは、ルート (/) ファイルシステムがマウントされる前に、カーネルによって読み取られます。ルート (/) ファイルシステムがマウントされると、ブートアーカイブはカーネルによってメモリーから破棄されます。次に、ファイル I/O がルートデバイスに実行されます。
SPARC ブートアーカイブを構成するファイルは、/platform ディレクトリにあります。
このディレクトリの内容は、3 つのグループのファイルに分けられます。
sun4u ブートアーカイブに必要なファイル
sun4v ブートアーカイブに必要なファイル
sun4us ブートアーカイブに必要なファイル
x86 ブートアーカイブを構成するファイルは、/platform/i86pc ディレクトリにあります。
ブートアーカイブに含まれるファイルとディレクトリを一覧表示するには、bootadm list-archive コマンドを使用します。
アーカイブ内のファイルが更新された場合は、ブートアーカイブを再構築する必要があります。変更を有効にするには、次にシステムがリブートする前にアーカイブを再構築する必要があります。
「フェイルセーフ」ブートアーカイブは、Solaris OS のインストール時に作成される 2 番目の種類のアーカイブです。
フェイルセーフブートアーカイブには、次のような利点と特徴があります。
独立したブートアーカイブである
ブートアーカイブ自体でブートできる
デフォルトでは OS のインストール中に作成される
保守の必要がない
フェイルセーフモードでのシステムのブートについて詳しくは、「SPARC システムをフェイルセーフモードでブートする」および「x86 システムをフェイルセーフモードでブートする」を参照してください。
boot-archive サービスは、サービス管理機能 (SMF) によって制御されます。boot-archive サービスインスタンスは、svc:/system/boot-archive:default です。サービスを有効/無効にするには、svcadm コマンドを使用します。
boot-archive サービスが実行されているかどうかを確認するには、svcs コマンドを使用します。
詳細は、svcadm(1M) および svcs(1) のマニュアルページを参照してください。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
boot-archive サービスを有効または無効にするには、次のように入力します。
# svcadm enable | disable system/boot-archive |
boot-archive サービスの状態を確認するには、次のように入力します。
% svcs boot-archive |
サービスが実行されている場合は、オンラインサービスの状態が表示されます。
STATE STIME FMRI online 9:02:38 svc:/system/boot-archive:default |
サービスが実行されていない場合は、サービスがオフラインになっていることが表示されます。
自動ブートアーカイブ更新障害の消去については、「ブートアーカイブの自動復旧」を参照してください。
Oracle Solaris 10 9/10 リリース以降、SPARC プラットフォームでのブートアーカイブ復旧が完全に自動化されました。x86 プラットフォームでは、ブートアーカイブの復旧は部分的に自動化されています。
x86 プラットフォームでブートアーカイブの自動復旧をサポートするために、新しい auto-reboot-safe プロパティーがブート構成 SMF サービス svc:/system/boot-config:default に追加されています。 このプロパティーの値は、デフォルトでは false に設定されています。これにより、システムが不明のブートデバイスで自動的にリブートすることが回避されます。ただし、Oracle Solaris OS のインストールされている BIOS ブートデバイスおよびデフォルト GRUB メニューエントリで自動的にリブートするようにシステムが構成されている場合は、このプロパティーの値を true に設定してブートアーカイブの自動復旧を有効にできます。次の手順は、x86 プラットフォームで自動ブートアーカイブ更新障害を消去する方法を示しています。
bootadm コマンドを使用して自動ブートアーカイブ更新障害を消去する方法については、「bootadm コマンドを使って自動ブートアーカイブ更新障害を消去する方法」を参照してください。
x86 システムで、システムのブートプロセス中に次のような警告が表示される場合、以降の手順で説明する操作を実行してください。
WARNING: Reboot required. The system has updated the cache of files (boot archive) that is used during the early boot sequence. To avoid booting and running the system with the previously out-of-sync version of these files, reboot the system from the same device that was previously booted. |
ここで、システムは保守モードに入ります。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
システムを再起動します。
# reboot |
このタイプの障害を防ぐため、アクティブな BIOS ブートデバイスおよび GRUB メニューエントリが現在のブートインスタンスを指し示している場合に、次の操作を実行してください。
次のように入力して、svc:/system/boot-config SMF サービスの auto-reboot-safe プロパティーを true に設定します。
# svccfg -s svc:/system/boot-config:default setprop config/auto-reboot-safe = true |
auto-reboot-safe プロパティーの設定が正しいことを確認します。
# svccfg -s svc:/system/boot-config:default listprop |grep config/auto-reboot-safe config/auto-reboot-safe boolean true |
システムのブートプロセス中に次のような警告メッセージが表示される場合は、適切な操作を実行します。
WARNING: Automatic update of the boot archive failed. Update the archives using 'bootadm update-archive' command and then reboot the system from the same device that was previously booted. |
次の手順は、bootadm コマンドを使用して期限切れのブートアーカイブを手動で更新する方法を示しています。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
ブートアーカイブを更新するには、次のように入力します。
# bootadm update-archive |
システム上のブートアーカイブを管理します。
必要に応じて、現在のブートアーカイブを更新します。SPARC と x86 の両方のシステムに適用されます。
システムを再起動します。
# reboot |
/sbin/bootadm コマンドを使用すると、次の作業を行えます。
システム上の現在のブートアーカイブを手動で更新する。
システム上のブートアーカイブに含まれるファイルとディレクトリを一覧表示する。
x86 のみ: GRUB メニューを保守する。
x86 のみ: アクティブな GRUB メニューと現在の GRUB メニューエントリを検出する。
このコマンドの構文は次のとおりです。
/sbin/bootadm [subcommand] [-option] [-R altroot] |
bootadm コマンドの詳細は、bootadm(1M) のマニュアルページを参照してください。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
ブートアーカイブを更新するには、次のように入力します。
# bootadm update-archive |
システム上のブートアーカイブを管理します。
必要に応じて、現在のブートアーカイブを更新します。SPARC と x86 の両方のシステムに適用されます。
代替ルートのブートアーカイブを更新するには、次のように入力します。
# bootadm update-archive -R /a |
update-archive サブコマンドに適用する代替ルートパスを指定します。
-R オプションを使用して非大域ゾーンのルート (/) ファイルシステムを参照してはいけません。そのようにすると、大域ゾーンのファイルシステムが損傷したり、大域ゾーンのセキュリティーが低下したり、非大域ゾーンのファイルシステムが損傷したりする場合があります。zones(5) のマニュアルページを参照してください。
システムを再起動します。
# reboot |
次の手順は、フェイルセーフブート時にミラーメタデバイスをマウントする方法を示しています。この手順で使用されるルート (/) ファイルシステムは、/dev/dsk/c0t0d0s0 です。
フェイルセーフアーカイブをブートします。
SPARC プラットフォーム: ok プロンプトで、次のコマンドを入力します。
ok boot -F failsafe |
システムがすでに動作している場合は、端末ウィンドウを開いてスーパーユーザーになり、次のコマンドを入力します。
# reboot -- "-F failsafe" |
詳細は、「SPARC システムをフェイルセーフモードでブートする方法」を参照してください。
x86 プラットフォーム: GRUB メニューでフェイルセーフブートエントリを選択して、システムをブートします。
詳細は、「x86 システムをフェイルセーフモードでブートする方法」を参照してください。
フェイルセーフモードでシステムをブートすると、次の出力が生成されます。
Starting shell. # |
フェイルセーフブート時に、システムによりマウントするデバイスの選択が求められたら、何もマウントしないことを意味する q を入力します。
Please select a device to be mounted (q for none)[?,??,q]: q |
ルート (/) ファイルシステムのサブミラーを、/a ディレクトリに読み取り専用で一時的にマウントします。
# mount -o ro /dev/dsk/c0t0d0s0 /a |
md.conf ファイルを /kernel/drv ディレクトリにコピーします。
# cp /a/kernel/drv/md.conf /kernel/drv/ |
/a ディレクトリのマウントを解除します。
# unmount /a |
devfsadm コマンドを使って、md ドライバを読み込みます。
# update_drv -f md |
このコマンドを実行すると、構成が読み込まれて必要なデバイスが作成されます。
次の手順に進む前に、数秒間待って md ドライバが確実に読み込まれるようにします。
metasync コマンドを使って、ルート (/) ファイルシステムを確実に同期します。次に例を示します。
# metasync d0 |
ルートミラーメタデバイスを /a ディレクトリにマウントします。
# mount /dev/md/dsk/d0 /a |
前の手順でマウントしたデバイスのブートアーカイブを更新します。
# bootadm update-archive -v -R /a |
ブートアーカイブの更新に失敗するか、エラーメッセージが表示されたら、次の手順を実行します。
/a ディレクトリの md.conf ファイルのタイムスタンプを更新します。これにより、ブートアーカイブが強制的に更新されます。
# touch /a/kernel/drv/md.conf |
bootadm コマンドを実行してブートアーカイブを更新します。
# bootadm update-archive -v -R /a |
ブートアーカイブの更新が完了するまで、数分かかります。ブートアーカイブの更新が成功したら、次のようなメッセージが表示されます。
changed /a/etc/system cannot find: /a/etc/cluster/nodeid: No such file or directory cannot find: /a/etc/devices/mdi_ib_cache: No such file or directory Creating ram disk on /a updating /a/platform/i86pc/boot_archive |
/a をマウント解除します。
# unmount /a |
システムを再起動します。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
ブートアーカイブに含まれるファイルとディレクトリを一覧表示するには、次のように入力します。
# bootadm list-archive |
ブートアーカイブに含まれるファイルとディレクトリを一覧表示します。SPARC と x86 の両方のシステムに適用されます。
次の手順に従って、アクティブな GRUB メニューの場所を調べ、現在の GRUB メニューエントリを一覧表示します。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
アクティブな GRUB メニューの場所と現在の GRUB メニューエントリを一覧表示するには、次のように入力します。
# bootadm list-menu |
アクティブな GRUB メニューの場所と現在の GRUB メニューエントリを一覧表示します。autoboot-timeout、デフォルトのエントリ番号、および各エントリのタイトルに関する情報がこのリストに表示されます。x86 システムだけに適用されます。
# bootadm list-menu The location for the active GRUB menu is: /stubboot/boot/grub/menu.lst default=0 timeout=10 (0) Solaris10 (1) Solaris10 Failsafe (2) Linux |
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
アクティブな GRUB メニューのデフォルトのブートエントリを設定するには、次のように入力します。
# bootadm set-menu menu-entry |
GRUB メニューを保守します。アクティブな GRUB メニューの場所は boot/grub/menu.lst です。x86 システムだけに適用されます。
デフォルトとして設定する GRUB メニューエントリを指定します。
デフォルトのメニューエントリが変更されていることを確認するには、次のように入力します。
# bootadm list-menu |
新しいデフォルトのメニューエントリが表示されるはずです。
次の例は、デフォルトの GRUB メニューを、前の例に表示されているメニューエントリのいずれかに切り替える方法を示しています。選択したメニューエントリは、Linux (メニューエントリ 2) です。
# bootadm set-menu default=2 |
各 GRUB 実装における menu.lst ファイルについては、「x86: サポートされる GRUB のバージョン」を参照してください。