Contained WithinFind More DocumentationFeatured Support Resources | Download this book in PDF (3233 KB)
第 14 章 Solaris ブートアーカイブの管理 (手順)この章では、Solaris OS でのブートアーカイブの管理について説明します。bootadm コマンドの詳細な使用手順も説明します。 この章の内容は次のとおりです。 ブートプロセスの概要については、第 9 章システムのシャットダウンとブート (概要)を参照してください。システムのブート手順については、第 12 章Solaris システムのブート (手順)を参照してください。 Solaris ブートアーカイブの管理 (作業マップ)表 14–1 Solaris ブートアーカイブの管理: 作業マップ
Solaris ブートアーカイブの説明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) のマニュアルページを参照してください。
|
# svcadm enable | disable system/boot-archive |
boot-archive サービスの状態を確認するには、次のように入力します。
% svcs boot-archive |
サービスが実行されている場合は、オンラインサービスの状態が表示されます。
STATE STIME FMRI online 9:02:38 svc:/system/boot-archive:default |
サービスが実行されていない場合は、サービスがオフラインになっていることが表示されます。
boot-archive サービスをクリアーしてブートアーカイブを更新する方法については、「boot-archive サービスをクリアーして矛盾したブートアーカイブを更新する方法」を参照してください。
boot-archive サービス svc:/system/boot-archive は SMF によって管理されます。次の手順では、ブートプロセス中に矛盾したアーカイブが検出されたときにブートアーカイブを更新する方法を示します。このサービスをクリアーすることは、boot -F failsafe コマンドを実行するのと同じ効果があります。この方法でブートアーカイブを更新すると、フェイルセーフアーカイブをブートしたり、bootadm update-archive コマンドを実行したりする必要がありません。 このコマンドは、boot-archive サービスがクリアーされたあとで暗黙のうちに実行されます。
矛盾したブートアーカイブを修正する場合は、フェイルセーフモードでシステムをブートすることをお勧めします。フェイルセーフアーカイブをブートする方法については、次の情報を参照してください。
SPARC システムの場合は、「SPARC システムをネットワークからブートする」を参照してください。
x86 システムの場合は、「x86 システムでフェイルセーフアーカイブをブートする」を参照してください。
システムのブートプロセス中に、次のような警告が表示された場合は、その警告を無視します。
WARNING: The following files in / differ from the boot archive:
changed file-name
|
システムがシステム保守モードに入ります。
次のコマンドを入力して、boot-archive サービスをクリアーします。
# svcadm clear system/boot-archive |
このコマンドが実行されたあとで、bootadm update-archive コマンドが暗黙のうちに実行されます。ブートアーカイブが正常に更新されると、システムがリブートします。
サービスが実行されていることを確認します。
# svcs boot-archive STATE STIME FMRI online 9:02:38 svc:/system/boot-archive:default |
screen not found.
Can't open input device.
Keyboard not present. Using ttya for input and output.
Sun Enterprise 220R (2 X UltraSPARC-II 450MHz), No Keyboard
OpenBoot 3.23, 1024 MB memory installed, Serial #13116682.
Ethernet address 8:0:20:c8:25:a, Host ID: 80c8250a.
Rebooting with command: boot
Boot device: /pci@1f,4000/scsi@3/disk@1,0:a File and args:
SunOS Release 5.10 64-bit
Copyright 1983-2007 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
DEBUG enabled
misc/forthdebug (507204 bytes) loaded
Hostname: marnie
WARNING: The following files in / differ from the boot archive:
changed /kernel/drv/sd.conf
The recommended action is to reboot to the failsafe archive to correct
the above inconsistency. To accomplish this, on a GRUB-based platform,
reboot and select the "Solaris failsafe" option from the boot menu.
On an OBP-based platform, reboot then type "boot -F failsafe". Then
follow the prompts to update the boot archive. Alternately, to continue
booting at your own risk, you may clear the service by running:
"svcadm clear system/boot-archive"
Nov 21 15:47:20 svc.startd[100004]: svc:/system/boot-archive:default: Method
"/lib/svc/method/boot-archive" failed with exit status 95.
Nov 21 15:47:20 svc.startd[100004]: system/boot-archive:default failed fatally:
transitioned to maintenance (see 'svcs -xv' for details)
Requesting System Maintenance Mode
(See /lib/svc/share/README for more information.)
Console login service(s) cannot run
Root password for system maintenance (control-d to bypass):
single-user privilege assigned to /dev/console.
Entering System Maintenance Mode
Nov 21 15:48:36 su: 'su root' succeeded for root on /dev/console
Sun Microsystems Inc. SunOS 5.10,
2007
.
.
.#
#
# svcadm clear system/boot-archive
#
# NIS domain name is mpklab.sfbay.sun.com
/dev/rdsk/c0t1d0s5 is clean
Reading ZFS config: done.
#
# bootadm update-archive
# svcs boot-archive
STATE STIME FMRI
online 9:02:38 svc:/system/boot-archive:default
|
/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) のマニュアルページを参照してください。
ここで示す手順は、Solaris ボリュームマネージャー (SVM) を使用して作成および管理している RAID-1 (ミラー) ボリューム上での、ブートアーカイブの更新に適用されます。
ブートアーカイブとルート (/) ファイルシステムが矛盾した状態になると、システムのブート時にエラーメッセージが表示されます。通常は、システムをフェイルセーフモードでブートしてから、bootadm update-archive コマンドを実行して、ブートアーカイブを更新するという操作をお勧めします。ただし、ルート (/) ファイルシステムがミラー化メタデバイス (RAID-1 ボリューム) の場合は、この方法でブートアーカイブを正常に更新することはできません。
システムをフェイルセーフモードでブートすると、次のようなメッセージが表示されます。
Searching for installed OS instances... /dev/dsk/c0t0d0s0 is under md control, skipping. /dev/dsk/c1t3d0s0 is under md control, skipping. No installed OS instance found. |
このメッセージは、メタデバイスがスキップされたことを示します。ブートアーカイブを手動で更新するには、以下に説明している手順に従います。
矛盾するブートアーカイブのあるシステム上で、スーパーユーザーになるか、同等の役割を引き受けます。
フェイルセーフアーカイブをブートします。
SPARC システムでは、次のように入力します。
# reboot -- "-F failsafe" |
ok プロンプトからフェイルセーフアーカイブをブートするには、次のように入力します。
ok boot -F failsafe |
詳細については、「SPARC システムでフェイルセーフアーカイブをブートする方法」を参照してください。
x86 システムでは、システムをブートし、GRUB メニューでフェイルセーフブートエントリを選択します。
詳細は、「GRUB を使用して x86 システムでフェイルセーフアーカイブをブートする方法」を参照してください。
システムがフェイルセーフモードでブートし、インストールされている OS のインスタンスを検索したあと、前に説明した“No installed OS instance found”というメッセージが返されます。ブートシーケンスが完了すると、コマンドプロンプトが表示されます。
一次サブミラーをマウントします。
次に例を示します。
# mount /dev/dsk/c0t0d0s0 /a |
システムがフェイルセーフモードでブートされる場合は、metastat -p コマンドを使用して一次サブミラーを判断できません。どのスライスが一次サブミラーかについての情報は、フェイルセーフブートプロセス時にコンソールに出力されます。代わりにこの方法を使用して、一次サブミラーを判断できます。
単一のルート (/) パーティションを使用するように、/etc/vfstab ファイルを一時的に更新します。
元の vfstab ファイルのコピーを作成します。
# cp /a/etc/vfstab /a/etc/vfstab.orig |
テキストエディタを使用して、vfstab ファイルを次のように編集します。
ルート (/) ミラーメタデバイスの行をコメントアウトします。
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # . . . #/dev/md/dsk/d10 /dev/md/rdsk/d10 / ufs 1 no - |
前の例では、/dev/md/dsk/d10 の行がコメントアウトされました。
一次サブミラーのディスクデバイス用の新しい行を追加します。
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # . . . #/dev/md/dsk/d10 /dev/md/rdsk/d10 / ufs 1 no - /dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no - . . . |
前の例では、一次サブミラーのディスクデバイス用の新しい行として /dev/dsk/c0t0d0s0 が追加されました。
変更を保存します。
システムがメタデバイスからのブートを試行しないように、/etc/system ファイルを次のように一時的に更新します。
次のコマンドを実行して、ブートアーカイブを更新します。
# bootadm update-archive -R /a |
一次サブミラーのマウントを解除してから、システムをリブートします。
# umount /a |
システムのリブートに成功したら、メタデバイスを再構築します。
vfstab ファイルからルート (/) ミラーメタデバイスの名前を取得します。
メタデバイスの名前は、手順 5 でコメントアウトした行です。
metastat コマンドを使用して、ミラーのコンポーネントを表示します。
次に例を示します。
# metastat -p d10 -m d0 d1 1 d0 1 1 c0t0d0s0 d1 1 1 c1t3d0s0 |
障害の発生したサブミラーを切り離します。
# metadetach mirror submirror |
次に例を示します。
# metadetach d10 d1 |
既存の /etc/vfstab ファイルのコピーを元のファイルで置き換えます。
# cp /etc/vfstab.orig /etc/vfstab |
既存の /etc/system ファイルのコピーを元のファイルで置き換えます。
# cp /etc/system.orig /etc/system |
システムを再起動します。
# shutdown -i 6 |
システムのリブート後、ミラー化ルート (/) パーティションがメタデバイス上に復元されます。
前の手順で切り離したサブミラーを再接続します。
# metattach mirror submirror |
次に例を示します。
# metattach d10 d1 |
ミラーの再同期が始まります。
再同期処理の状態を確認するには、metastat コマンドを使用します。
# metastat | grep `Resync in progress' |
何の出力も返されない場合、プロセスは完了しています。
この例では、SVM ルート (/) のミラー化メタデバイスのあるシステム上のブートアーカイブを手動で更新する手順を示します。この例で使用したシステムは、Solaris 10 10/08 リリースが稼動している SPARC システムです。
SunOS Release 5.10 Version Generic_137137-09 64-bit
Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
WARNING: Unexpected EOF on line 14 of /kernel/drv/md.conf
Hostname: pilgrim1
WARNING: The following files in / differ from the boot archive:
changed /kernel/drv/md.conf
The recommended action is to reboot to the failsafe archive to correct
the above inconsistency. To accomplish this, on a GRUB-based platform,
reboot and select the "Solaris failsafe" option from the boot menu.
On an OBP-based platform, reboot then type "boot -F failsafe". Then
follow the prompts to update the boot archive. Alternately, to continue
booting at your own risk, you may clear the service by running:
"svcadm clear system/boot-archive"
Sep 18 15:22:06 svc.startd[7]: svc:/system/boot-archive:default:
Method "/lib/svc/method/boot-archive" failed with exit status 95.
Sep 18 15:22:06 svc.startd[7]: system/boot-archive:default
failed fatally: transitioned to maintenance (see 'svcs -xv' for details)
Requesting System Maintenance Mode
(See /lib/svc/share/README for more information.)
Console login service(s) cannot run
Root password for system maintenance (control-d to bypass):
single-user privilege assigned to /dev/console.
Entering System Maintenance Mode
Sep 18 15:22:18 su: 'su root' succeeded for root on /dev/console
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
# reboot -- "-F failsafe"
syncing file systems... done
rebooting...
Resetting ...
Rebooting with command: boot -F failsafe
Boot device: /pci@1f,4000/scsi@3/disk@0,0:a File and args: -F failsafe
SunOS Release 5.10 Version Generic_137137-08 64-bit
Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Configuring devices.
Searching for installed OS instances...
/dev/dsk/c0t0d0s0 is under md control, skipping.
/dev/dsk/c1t3d0s0 is under md control, skipping.
No installed OS instance found.
Starting shell.
# mount /dev/dsk/c0t0d0s0 /a
# cp /a/etc/vfstab /a/etc/vfstab.orig
# vi /a/etc/vfstab
<< input changes to vfstab file, then save changes >>
# cp /a/etc/system /a/etc/system.orig
# vi /a/etc/system
<< input changes to /etc/system file, then save changes >>
# bootadm update-archive -R /a
Creating boot_archive for /a
updating /a/platform/sun4u/boot_archive
15+0 records in
15+0 records out
# umount /a
# shutdown -i 6
<< reboot the system >>
Rebooting with command: boot
Boot device: /pci@1f,4000/scsi@3/disk@0,0:a File and args:
SunOS Release 5.10 Version Generic_137137-08 64-bit
Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
[...]
# metastat -p d10
# metadetach d10 d1
# cp /etc/vfstab.orig /etc/vfstab
# cp //etc/system.orig /etc/system
# shutdown -i 6
<< reboot the system >>
Rebooting with command: boot
Boot device: /pci@1f,4000/scsi@3/disk@0,0:a File and args:
SunOS Release 5.10 Version Generic_137137-08 64-bit
Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
[...]
# metattach d10 d1
# metastat | grep 'Resync in progress'
Resync in progress: 4 % done
# metastat | grep 'Resync in progress'
|
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『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 実装」を参照してください。