Solaris のシステム管理 (基本編)

第 13 章 Oracle Solaris ブートアーカイブの管理 (手順)

この章では、Oracle Solaris ブートアーカイブを管理する方法を説明します。bootadm コマンドの詳細な使用手順も説明します。

この章の内容は次のとおりです。

ブートプロセスの概要については、第 9 章システムのシャットダウンとブート (概要)を参照してください。システムのブート手順については、第 12 章Oracle Solaris システムのブート (手順)を参照してください。

Oracle Solaris ブートアーカイブの管理 (作業マップ)

表 13–1 ブートアーカイブの管理 (作業マップ)

作業 

説明 

参照先 

boot-archive サービスを管理します。

boot-archive サービスは、サービス管理機能 (SMF) によって制御されます。サービスを有効/無効にするには、svcadm コマンドを使用します。boot-archive サービスが実行されているかどうかを確認するには、svcs コマンドを使用します。

boot-archive サービスの管理」

x86: auto-reboot-safe プロパティーを使ってブートアーカイブ更新障害を消去します。

auto-reboot-safe プロパティーが false に設定されているために、x86 システムでブートアーカイブ更新が失敗した場合に、この手順を使用します。

「x86: auto-reboot-safe プロパティーを使用して自動ブートアーカイブ更新障害を消去する方法」

bootadm コマンドを使用して、ブートアーカイブ更新障害を消去します。

auto-reboot-safe プロパティーが true に設定されている場合に、SPARC プラットフォームと x86 プロットフォームで、この手順を使用してブートアーカイブ更新障害を手動で消去します。

bootadm コマンドを使って自動ブートアーカイブ更新障害を消去する方法」

bootadm コマンドを使ってブートアーカイブを手動で更新します。

ブートアーカイブを手動で更新する場合は、bootadm update-archive コマンドを使用します。

bootadm コマンドを使ってブートアーカイブを手動で更新する方法」

Solaris ボリュームマネージャー (SVM) メタデバイスミラールートのあるシステム上で、ブートアーカイブを手動で更新します。 

メタデバイスミラーを使用するシステム上で、bootadm コマンドを使用してデバイスを手動でマウントしてから、ブートアーカイブを更新する必要があります。

「Solaris ボリュームマネージャー RAID-1 (ミラー) ルートパーティション上のブートアーカイブを手動で更新する方法」

bootadm コマンドを使用してブートアーカイブの内容を一覧表示します。

ブートアーカイブの内容を一覧表示する場合は、bootadm list-archive コマンドを使用します。

「ブートアーカイブの内容を一覧表示する方法」

x86: bootadm コマンドを使用してアクティブな GRUB メニューを検出します。

アクティブな GRUB メニューの場所を調べる場合は、bootadm list-menu コマンドを使用します。

「x86: アクティブな GRUB メニューを検出し、現在のメニューエントリを一覧表示する方法」

x86: bootadm コマンドを使用して GRUB メニューのデフォルトブートエントリを設定します。

GRUB メニューのデフォルトのブートエントリを設定する場合は、bootadm set-menu コマンドを使用します。

「x86: アクティブな GRUB メニューのデフォルトのブートエントリを設定する方法」

Oracle Solaris ブートアーカイブの説明

Oracle Solaris OS をシステムにインストールすると、bootadm コマンドによって一次ブートアーカイブとフェイルセーフアーカイブが 1 つずつ作成されます。

「一次ブートアーカイブ」は、ルート (/) ファイルシステムのサブセットです。このブートアーカイブには、すべてのカーネルモジュール、driver.conf ファイル、およびいくつかの構成ファイルが含まれています。これらのファイルは、/etc ディレクトリにあります。ブートアーカイブ内のファイルは、ルート (/) ファイルシステムがマウントされる前に、カーネルによって読み取られます。ルート (/) ファイルシステムがマウントされると、ブートアーカイブはカーネルによってメモリーから破棄されます。次に、ファイル I/O がルートデバイスに実行されます。

SPARC ブートアーカイブを構成するファイルは、/platform ディレクトリにあります。

このディレクトリの内容は、3 つのグループのファイルに分けられます。

x86 ブートアーカイブを構成するファイルは、/platform/i86pc ディレクトリにあります。

ブートアーカイブに含まれるファイルとディレクトリを一覧表示するには、bootadm list-archive コマンドを使用します。

アーカイブ内のファイルが更新された場合は、ブートアーカイブを再構築する必要があります。変更を有効にするには、次にシステムがリブートする前にアーカイブを再構築する必要があります。

「フェイルセーフ」ブートアーカイブは、Solaris OS のインストール時に作成される 2 番目の種類のアーカイブです。

フェイルセーフブートアーカイブには、次のような利点と特徴があります。

フェイルセーフモードでのシステムのブートについて詳しくは、「SPARC システムをフェイルセーフモードでブートする」および「x86 システムをフェイルセーフモードでブートする」を参照してください。

boot-archive サービスの管理

boot-archive サービスは、サービス管理機能 (SMF) によって制御されます。boot-archive サービスインスタンスは、svc:/system/boot-archive:default です。サービスを有効/無効にするには、svcadm コマンドを使用します。

boot-archive サービスが実行されているかどうかを確認するには、svcs コマンドを使用します。

詳細は、svcadm(1M) および svcs(1) のマニュアルページを参照してください。

Procedureboot-archive サービスを有効または無効にする方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. boot-archive サービスを有効または無効にするには、次のように入力します。


    # svcadm enable | disable system/boot-archive
    
  3. 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 コマンドを使って自動ブートアーカイブ更新障害を消去する方法」を参照してください。

Procedurex86: auto-reboot-safe プロパティーを使用して自動ブートアーカイブ更新障害を消去する方法

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.

ここで、システムは保守モードに入ります。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. システムを再起動します。


    # reboot
    

    このタイプの障害を防ぐため、アクティブな BIOS ブートデバイスおよび GRUB メニューエントリが現在のブートインスタンスを指し示している場合に、次の操作を実行してください。

  3. 次のように入力して、svc:/system/boot-config SMF サービスの auto-reboot-safe プロパティーを true に設定します。


    # svccfg -s svc:/system/boot-config:default setprop config/auto-reboot-safe = true
    
  4. auto-reboot-safe プロパティーの設定が正しいことを確認します。


    # svccfg -s svc:/system/boot-config:default listprop |grep config/auto-reboot-safe
    config/auto-reboot-safe            boolean  true

Procedurebootadm コマンドを使って自動ブートアーカイブ更新障害を消去する方法

システムのブートプロセス中に次のような警告メッセージが表示される場合は、適切な操作を実行します。


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 コマンドを使用して期限切れのブートアーカイブを手動で更新する方法を示しています。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. ブートアーカイブを更新するには、次のように入力します。


    # bootadm update-archive
    
    bootadm

    システム上のブートアーカイブを管理します。

    update-archive

    必要に応じて、現在のブートアーカイブを更新します。SPARC と x86 の両方のシステムに適用されます。

  3. システムを再起動します。


    # reboot
    

bootadm コマンドを使用してブートアーカイブを管理する

/sbin/bootadm コマンドを使用すると、次の作業を行えます。

このコマンドの構文は次のとおりです。


/sbin/bootadm [subcommand] [-option] [-R altroot]

bootadm コマンドの詳細は、bootadm(1M) のマニュアルページを参照してください。

Procedurebootadm コマンドを使ってブートアーカイブを手動で更新する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. ブートアーカイブを更新するには、次のように入力します。


    # bootadm update-archive
    
    bootadm

    システム上のブートアーカイブを管理します。

    update-archive

    必要に応じて、現在のブートアーカイブを更新します。SPARC と x86 の両方のシステムに適用されます。

    • 代替ルートのブートアーカイブを更新するには、次のように入力します。


      # bootadm update-archive -R /a
      
      -R altroot

      update-archive サブコマンドに適用する代替ルートパスを指定します。


      注 –

      -R オプションを使用して非大域ゾーンのルート (/) ファイルシステムを参照してはいけません。そのようにすると、大域ゾーンのファイルシステムが損傷したり、大域ゾーンのセキュリティーが低下したり、非大域ゾーンのファイルシステムが損傷したりする場合があります。zones(5) のマニュアルページを参照してください。


  3. システムを再起動します。


    # reboot
    

ProcedureSolaris ボリュームマネージャー RAID-1 (ミラー) ルートパーティション上のブートアーカイブを手動で更新する方法

次の手順は、フェイルセーフブート時にミラーメタデバイスをマウントする方法を示しています。この手順で使用されるルート (/) ファイルシステムは、/dev/dsk/c0t0d0s0 です。

  1. フェイルセーフアーカイブをブートします。

    フェイルセーフモードでシステムをブートすると、次の出力が生成されます。


    Starting shell.
    #
  2. フェイルセーフブート時に、システムによりマウントするデバイスの選択が求められたら、何もマウントしないことを意味する q を入力します。


    Please select a device to be mounted (q for none)[?,??,q]: q
    
  3. ルート (/) ファイルシステムのサブミラーを、/a ディレクトリに読み取り専用で一時的にマウントします。


    # mount -o ro /dev/dsk/c0t0d0s0 /a
    
  4. md.conf ファイルを /kernel/drv ディレクトリにコピーします。


    # cp /a/kernel/drv/md.conf /kernel/drv/
    
  5. /a ディレクトリのマウントを解除します。


    # unmount /a
    
  6. devfsadm コマンドを使って、md ドライバを読み込みます。


    # update_drv -f md
    

    このコマンドを実行すると、構成が読み込まれて必要なデバイスが作成されます。


    注 –

    次の手順に進む前に、数秒間待って md ドライバが確実に読み込まれるようにします。


  7. metasync コマンドを使って、ルート (/) ファイルシステムを確実に同期します。次に例を示します。


    # metasync d0
    
  8. ルートミラーメタデバイスを /a ディレクトリにマウントします。


    # mount /dev/md/dsk/d0 /a
    
  9. 前の手順でマウントしたデバイスのブートアーカイブを更新します。


    # bootadm update-archive -v -R /a
    

    ブートアーカイブの更新に失敗するか、エラーメッセージが表示されたら、次の手順を実行します。

    1. /a ディレクトリの md.conf ファイルのタイムスタンプを更新します。これにより、ブートアーカイブが強制的に更新されます。


      # touch /a/kernel/drv/md.conf
      
    2. 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
  10. /a をマウント解除します。


    # unmount /a
    
  11. システムを再起動します。

Procedureブートアーカイブの内容を一覧表示する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. ブートアーカイブに含まれるファイルとディレクトリを一覧表示するには、次のように入力します。


    # bootadm list-archive
    
    list-archive

    ブートアーカイブに含まれるファイルとディレクトリを一覧表示します。SPARC と x86 の両方のシステムに適用されます。

Procedurex86: アクティブな GRUB メニューを検出し、現在のメニューエントリを一覧表示する方法

次の手順に従って、アクティブな GRUB メニューの場所を調べ、現在の GRUB メニューエントリを一覧表示します。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. アクティブな GRUB メニューの場所と現在の GRUB メニューエントリを一覧表示するには、次のように入力します。


    # bootadm list-menu
    
    list-menu

    アクティブな GRUB メニューの場所と現在の GRUB メニューエントリを一覧表示します。autoboot-timeout、デフォルトのエントリ番号、および各エントリのタイトルに関する情報がこのリストに表示されます。x86 システムだけに適用されます。


例 13–1 アクティブな GRUB メニューの場所と現在の GRUB メニューエントリを一覧表示する


# 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

Procedurex86: アクティブな GRUB メニューのデフォルトのブートエントリを設定する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. アクティブな GRUB メニューのデフォルトのブートエントリを設定するには、次のように入力します。


    # bootadm set-menu menu-entry
    
    set-menu

    GRUB メニューを保守します。アクティブな GRUB メニューの場所は boot/grub/menu.lst です。x86 システムだけに適用されます。

    menu-entry

    デフォルトとして設定する GRUB メニューエントリを指定します。

  3. デフォルトのメニューエントリが変更されていることを確認するには、次のように入力します。


    # bootadm list-menu
    

    新しいデフォルトのメニューエントリが表示されるはずです。


例 13–2 GRUB のデフォルトのメニューエントリを切り替える

次の例は、デフォルトの GRUB メニューを、前の例に表示されているメニューエントリのいずれかに切り替える方法を示しています。選択したメニューエントリは、Linux (メニューエントリ 2) です。


# bootadm set-menu default=2

参照

各 GRUB 実装における menu.lst ファイルについては、「x86: サポートされる GRUB のバージョン」を参照してください。