▼Solaris x86 のブートパーティションを復旧する▼

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 .

▼fdiskパーティション

必要なら、まずMBRを復帰。

	# fdisk -b /usr/lib/fs/ufs/mboot -n /dev/rdsk/c0t0d0p0 

▼newfs

空のファイルシステムを作る。

# 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 の画面までたどりつけない。

▼/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:	_
にて、とりあえずスペースキーを打って止める。
※タイムアウトは5秒。逃さないように!

まず、プロンプトの上の Boot path: を確認する。

Boot path: /pci@0,0/pci8086,2543@2/pci8086,1460@1f/pci15d9,9005@2/sd@0,0
など、復旧前の設定と同じになっているかどうか確認。
なっていなかった場合は、再起動して 白バックの "Press ESCape ...." で [ESC]キーを押して Device Configuration Assistantからデフォルト起動デバイスを設定する。

確認したら、

Select (b)oot or (i)nterpreter: b -rs
でデバイスファイル再構築、シングルユーザモードでカーネル起動。 まずシングルユーザで起動することを確認。 問題なければ exit とするとマルチユーザーで起動する。


かべ@sra-tohoku.co.jp