Solaris x86は、普通にインストールすると以下のようなスライス割になりますが
$Id: x86boot.html,v 1.2 2006/09/16 08:01:24 kabe Exp $
/boot の中身は現物と CDROMブート時くらいしかないので、 あらかじめどこかにバックアップしておく。 tar でよい。
# cd /boot; tar cf /var/tmp/boot.tar .
必要なら、まずMBRを復帰。
# fdisk -b /usr/lib/fs/ufs/mboot -n /dev/rdsk/c0t0d0p0
空のファイルシステムを作る。
# mkfs -F pcfs -o S,s,B=/boot/mdbootbp,b=SOLARISBOOT,i=/boot/strap.com /dev/rdsk/c0t0d0p0:boot
S
オプションと、ボリュームラベル名の SOLARISBOOT
が重要の模様。
これをやっておかないと、/boot/ の中身があっても起動時に
"Solaris boot Version 2" で止まってしまい、
青バックの Select partition to boot の画面までたどりつけない。
まずマウントして、
# mount -F pcfs /dev/dsk/c0t0d0p0:boot /mnt/bootバックアップがあれば書き戻す。
# (cd /mnt/boot; tar xvpf /var/tmp/boot.tar)なければ、CDROMブートしてCDROMの /boot/ からコピーする。
# cp -pr /boot/* /mnt/boot
/boot/solaris.map を作成。
# echo "/boot/[tab]/[tab]p" > /mnt/boot/solaris.map
/boot/solaris/bootenv.rc が存在するか確認。
# ls -lL /mnt/boot/solaris/bootenv.rcなかった場合は、CDROMブート時の/boot/solaris/bootenv.rcの実体をコピーしておく。 ないと、起動時にカーネルバナーが出た直後に再起動してしまう。
bootpathを確認。
# grep bootpath /mnt/boot/solaris/bootenv.rc復旧先の実デバイスパス (/pci@0,0/...) と一致しているか確認。 機械の型番は同じでも、ロットによって微妙にデバイスが違うことは よくある。ここで直すか、次の Device Configuration Assistant を使って修正する。
こればx86起動パーティションではないが、
元の機械とリストア先の機械が異なる場合は、
デバイスファイル再作成は絶対に必要。
やっておかないと boot -r までたどりつけないことがある。
(同一型番の機械でもロット違いでデバイスが違うことは普通にある)
# chroot /mnt /usr/sbin/devfsadm -C -v # chroot /mnt /usr/sbin/devfsadm -v
/proc があるか確認。無ければマウントポイントを作っておく。 ないと、起動時に getexecname() failed エラーが沢山出る。
# ls -ld /mnt/proc # # mkdir /mnt/proc #無かった場合、作成
/dev/fd があるか確認。
# ls -ld /mnt/dev/fd # # mkdir /mnt/dev/fd #無かった場合、作成
再起動して白バックのコンソールで
<<< timeout in 5 seconds >> Select (b)oot or (i)nterpreter: _にて、とりあえずスペースキーを打って止める。
まず、プロンプトの上の Boot path: を確認する。
Boot path: /pci@0,0/pci8086,2543@2/pci8086,1460@1f/pci15d9,9005@2/sd@0,0など、復旧前の設定と同じになっているかどうか確認。
確認したら、
Select (b)oot or (i)nterpreter: b -rsでデバイスファイル再構築、シングルユーザモードでカーネル起動。 まずシングルユーザで起動することを確認。 問題なければ exit とするとマルチユーザーで起動する。