SPARC システムと x86 システムの両方で、ブートアーカイブによる新しい形式の起動方法が使用されます。ブートアーカイブは、起動に必要なファイルを含んだファイルシステムイメージです。ZFS ルートファイルシステムからシステムが起動される際には、ブートアーカイブとカーネルファイルのパス名が、起動用に選択されたルートファイルシステム内で解決されます。
インストールのためにシステムを起動する場合は、インストール処理の全体にわたって RAM ディスクがルートファイルシステムとして使用されます。
ZFS では、単一のルートファイルシステムではなくストレージプールが起動デバイス指定子で指定されるため、ZFS ファイルシステムからの起動は UFS ファイルシステムからの起動とは異なります。ストレージプールには、複数の「ブート可能なデータセット」または ZFS ルートファイルシステムが含まれている場合があります。ZFS から起動する場合は、起動デバイスと、起動デバイスによって指定されたプール内のルートファイルシステムを指定する必要があります。
デフォルトでは、プールの bootfs プロパティーで指定されているデータセットが、起動用に選択されます。別のブート可能データセットを boot -Z コマンドに指定することで、このデフォルトの選択を無効にできます。
ミラー化された ZFS ルートプールは、システムのインストール時に作成するか、インストール後にディスクを接続することによって作成することができます。詳細については、次のトピックを参照してください。
ミラー化された ZFS ルートプールに関して、次に示す既知の問題を確認してください。
CR 6668666 – ミラー内のほかのディスクで起動できるようにするには、追加で接続したディスクにブート情報を installboot コマンドまたは installgrub コマンドでインストールする必要があります。ミラー化された ZFS ルートプールを初期インストールで作成した場合は、この手順は不要です。たとえば、ミラーに追加した 2 番目のディスクが c0t1d0s0 であった場合、installboot コマンドまたは installgrub コマンドの構文は次のようになります。
SPARC:
sparc# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c0t1d0s0 |
x86:
x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t1d0s0 |
ミラー化された ZFS ルートプールのさまざまなデバイスから起動することができます。ハードウェア構成によっては、別の起動デバイスを指定するには、PROM または BIOS の更新が必要になる場合があります。
たとえば、次のプール内のどちらかのディスク (c1t0d0s0 または c1t1d0s0) から起動できます。
# zpool status pool: rpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0s0 ONLINE 0 0 0 c1t1d0s0 ONLINE 0 0 0 |
SPARC: ok プロンプトで代替ディスクを入力します。
ok boot /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0 |
システムが再起動したら、アクティブな起動デバイスを確認します。次に例を示します。
SPARC# prtconf -vp | grep bootpath bootpath: '/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0,0:a' |
x86: ミラー化された ZFS ルートプールの代替ディスクを、適切な BIOS メニューで選択します。
続いて、次のような構文を使って、代替ディスクから起動されていることを確認します。
x86# prtconf -v|sed -n '/bootpath/,/value/p' name='bootpath' type=string items=1 value='/pci@0,0/pci8086,25f8@4/pci108e,286@0/disk@0,0:a' |
複数の ZFS BE が存在する SPARC システムでは、luactivate コマンドを使用することによって、任意の BE から起動できます。
Solaris OS インストールおよび Oracle Solaris Live Upgrade の処理中に、ZFS ルートファイルシステムが bootfs プロパティーで自動的に指定されます。
ブート可能なデータセットがプール内に複数存在する場合があります。デフォルトでは、/pool-name/boot/menu.lst ファイルのブート可能データセットのエントリは、プールの bootfs プロパティーで指定されます。ただし、menu.lst のエントリに bootfs コマンドを含めて、プールの代替データセットを指定することもできます。このように、menu.lst ファイルには、プール内の複数のルートファイルシステムに対応するエントリが含まれている場合があります。
システムを ZFS ルートファイルシステムでインストールするか、ZFS ルートファイルシステムに移行すると、次のようなエントリが menu.lst ファイルに追加されます。
title zfsBE bootfs rpool/ROOT/zfsBE title zfs2BE bootfs rpool/ROOT/zfs2BE |
新しい BE を作成すると、menu.lst ファイルが自動的に更新されます。
SPARC システムでは、2 つの新しい起動オプションを使用できます。
その BE がアクティブになったあと、boot -L コマンドを使用して ZFS プール内のブート可能なデータセットのリストを表示できます。その後、ブート可能なデータセットの 1 つをリストで選択できます。そのデータセットを起動するための詳細な手順が表示されます。手順に従って、選択したデータセットを起動できます。
boot -Z dataset コマンドを使用して、特定の ZFS データセットを起動できます。
システムの起動デバイス上の ZFS ストレージプールに複数の ZFS BE が存在する場合は、luactivate コマンドを使用してデフォルトの BE を指定できます。
たとえば、次の ZFS BE が lustatus の出力のとおり使用可能であるとします。
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- zfsBE yes no no yes - zfs2BE yes yes yes no - |
SPARC システム上に ZFS BE が複数存在している場合、boot -L コマンドを使用すれば、デフォルト BE とは異なる BE から起動することができます。ただし、boot -L セッションから起動された BE がデフォルト BE としてリセットされることはなく、bootfs プロパティーも更新されません。boot -L セッションから起動された BE をデフォルト BE にするには、その BE を luactivate コマンドでアクティブにする必要があります。
次に例を示します。
ok boot -L Rebooting with command: boot -L Boot device: /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0 File and args: -L 1 zfsBE 2 zfs2BE Select environment to boot: [ 1 - 2 ]: 1 To boot the selected entry, invoke: boot [<root-device>] -Z rpool/ROOT/zfsBE Program terminated ok boot -Z rpool/ROOT/zfsBE |
SPARC システムでは、/platform/`uname -i`/failsafe にあるフェイルセーフアーカイブから、次のように起動できます。
ok boot -F failsafe |
特定の ZFS ブート可能データセットのフェイルセーフアーカイブを起動するには、次のような構文を使用します。
ok boot -Z rpool/ROOT/zfsBE -F failsafe |
Solaris OS インストール処理中または Oracle Solaris Live Upgrade 操作中に、ZFS を自動的に起動するための次のようなエントリが /pool-name/boot/grub/menu.lst ファイルに追加されます。
title Solaris 10 9/10 X86 findroot (rootfs0,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttya module /boot/x86.miniroot-safe |
GRUB によって起動デバイスとして識別されたデバイスに ZFS ストレージプールが含まれている場合、menu.lst ファイルを使用して GRUB メニューが作成されます。
複数の ZFS BE が存在する x86 システムでは、BE を GRUB メニューから選択できます。このメニューエントリに対応するルートファイルシステムが ZFS データセットである場合は、次のオプションが追加されます。
-B $ZFS-BOOTFS |
ZFS ファイルシステムからシステムを起動する場合は、boot -B $ZFS-BOOTFS パラメータを GRUB メニューエントリの kernel 行または module 行に記述して、ルートデバイスを指定します。このパラメータ値は、-B オプションで指定されるすべてのパラメータと同様に、GRUB によってカーネルに渡されます。次に例を示します。
title Solaris 10 9/10 X86 findroot (rootfs0,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttya module /boot/x86.miniroot-safe |
x86 のフェイルセーフアーカイブは /boot/x86.miniroot-safe です。GRUB メニューで Solaris フェイルセーフエントリを選択することによって起動できます。次に例を示します。
title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttya module /boot/x86.miniroot-safe |
アクティブなブート環境を変更するための最適な方法は、luactivate コマンドを使用することです。不適切なパッチや構成エラーが原因でアクティブな環境の起動に失敗する場合、別の環境から起動する唯一の方法は、起動時にその環境を選択することです。x86 システムでは GRUB メニューから代替 BE を選択でき、SPARC システムでは PROM から明示的に代替 BE を起動できます。
Solaris 10 10/08 リリースの Oracle Solaris Live Upgrade のバグのため、アクティブでないブート環境は起動に失敗する場合があります。これは、ブート環境の ZFS データセットまたはゾーンの ZFS データセットに無効なマウントポイントが含まれているためです。同じバグのため、BE に別の /var データセットがある場合は、BE をマウントすることもできなくなります。
ゾーンのデータセットに無効なマウントポイントが含まれている場合は、次の手順を実行してマウントポイントを修正することができます。
フェイルセーフアーカイブからシステムを起動します。
プールをインポートします。
次に例を示します。
# zpool import rpool |
正しくない一時的なマウントポイントを探します。
次に例を示します。
# zfs list -r -o name,mountpoint rpool/ROOT/s10u6 NAME MOUNTPOINT rpool/ROOT/s10u6 /.alt.tmp.b-VP.mnt/ rpool/ROOT/s10u6/zones /.alt.tmp.b-VP.mnt//zones rpool/ROOT/s10u6/zones/zonerootA /.alt.tmp.b-VP.mnt/zones/zonerootA |
ルート BE (rpool/ROOT/s10u6) のマウントポイントは / となるべきです。
/var のマウントの問題が原因で起動に失敗する場合は、/var データセットについて同様に、正しくない一時的なマウントポイントを探します。
ZFS BE とそのデータセットのマウントポイントを設定しなおします。
次に例を示します。
# zfs inherit -r mountpoint rpool/ROOT/s10u6 # zfs set mountpoint=/ rpool/ROOT/s10u6 |
システムを再起動します。
GRUB メニューまたは OpenBoot PROM プロンプトで、特定のブート環境を起動するオプションが表示されたら、前の手順でマウントポイントを修正したブート環境を選択します。
失われたルートパスワードやそれに似た問題から回復する目的でシステムを起動する必要がある場合は、次の手順を使用します。
エラーの深刻度に応じてフェイルセーフモードの起動、代替メディアからの起動のいずれかを行う必要があります。一般に、フェイルセーフモードを起動すれば、失われたルートパスワードや未知のルートパスワードを回復することができます。
ルートプールまたはルートプールのスナップショットを回復する必要がある場合は、「ZFS ルートプールまたはルートプールのスナップショットを回復する」を参照してください。
フェイルセーフモードを起動します。
SPARC システムの場合:
ok boot -F failsafe |
x86 システムの場合、GRUB プロンプトからフェイルセーフモードを選択します。
プロンプトが表示されたら、ZFS BE を /a にマウントします。
. . . ROOT/zfsBE was found on rpool. Do you wish to have it mounted read-write on /a? [y,n,?] y mounting rpool on /a Starting shell. |
/a/etc ディレクトリに移動します。
# cd /a/etc |
必要であれば、TERM タイプを設定します。
# TERM=vt100 # export TERM |
passwd または shadow ファイルを修正します。
# vi shadow |
システムを再起動します。
# init 6 |
システムの正常な起動を妨げる問題やその他の何らかの深刻な問題が発生した場合には、ネットワークインストールサーバーまたは Solaris インストール CD から起動し、ルートプールをインポートし、ZFS BE をマウントし、問題の解決を試みる必要があります。
インストール CD またはネットワークから起動します。
SPARC:
ok boot cdrom -s ok boot net -s |
-s オプションを使用しない場合は、インストールプログラムを終了する必要があります。
x86: ネットワーク起動、ローカル CD からの起動、のいずれかのオプションを選択します。
ルートプールをインポートし、代替マウントポイントを指定します。次に例を示します。
# zpool import -R /a rpool |
ZFS BE をマウントします。次に例を示します。
# zfs mount rpool/ROOT/zfsBE |
/a ディレクトリから ZFS BE の内容にアクセスします。
# cd /a |
システムを再起動します。
# init 6 |