ぼちぼちとやっているうちに、作法がわかってきた。
Linuxのkernelのビルドと比べると非常にややこしい。
そんなにビルドして欲しくないのか?という感じである。
いえ、させてください。
まず現在、osol_b134で起動しているOpenSolarisで確実にkernelをビルドするには、
・ONのレポジトリからLatestのソースツリーを引っ張る
# cd /export
# hg clone ssh://anon@hg.opensolaris.org/hg/onnv/onnv-gate testws
・内容をb134に戻す
# cd testws
# hg update -r onnv_134
・ONの
ダウンロードページからb134のclosedバイナリとcryptgraphicバイナリを落として、上記のツリーの中に展開
・デバグ版とノンデバグ版があるが、デバグビルドするならデバグ版、ノンデバグでビルドするならノンデバグ版を落とす
・ビルドするのにosnetパッケージが必要なのだが、別途extraレポジトリにアクセスできるようにしないと入手できないようなので、
・
ここの説明を参考に、sunのページでアカウント登録後「SSL key」と「certificate」ファイルを入手、所定の位置に置く
・extraレポジトリの追加をする
# pkg set-authority -k /var/pkg/ssl/*.key.pem -c /var/pkg/ssl/*.certificate.pem \
-O https://pkg.sun.com/opensolaris/extra/ extra
・guiのパッケージ管理から「osnet」「Sun Studio 12」「onbld」「gcc3」をインストール
・
ここを参考に必要な環境変数を設定。
~/.profileに放り込むとよし。
「/opt/onbld/bin」にもPATHを通しておく
・念のために以下のリンクを作っておく
# ln -s /opt/sunstudio12.1 /opt/SUNWspro
・あとは適当に。
#
cp usr/src/tools/env/opensolaris.sh .
# cd usr/src
# bldenv -d /export/testws/opensolaris.sh "make setup"
# cd uts
# bldenv -d /export/testws/opensolaris.sh "make install"
#kernel とdrvをビルド
# cd /export/testws/proto/root*/kernel
# find ./ -name "*zfs*"|cpio -pdmu /kernel
#zfsのモジュールをインストール
# cp amd64/* /kernel/amd64
#カーネルをインストール
・まるごと一気に全部インストールするにはbfuというのを使うらしいのだが、zfs rootなシステムでのやり方は
ここの「Testing ON on OpenSolaris」を参考にすべし
そんなこんなでkernelソースをあちこちいじってはみたものの、いまだimportできる気配なし。
「guid sum」チェックは外せたのか「top-level missing device」は出なくなった替わりに「corrupted」になったり。
「8000-EY」のままだから根本的には何も変わってないのかもではある。
# zpool import
pool: tank
id: 7176844548823255674
state: FAULTED
status: The pool was last accessed by another system.
action: The pool cannot be imported due to damaged devices or data.
The pool may be active on another system, but can be imported using
the '-f' flag.
see: http://www.sun.com/msg/ZFS-8000-EY
config:
tank FAULTED corrupted data
raidz2-0 ONLINE
c5t0d0p0 ONLINE
c5t1d0p0 ONLINE
c5t2d0p0 ONLINE
c5t3d0p0 ONLINE
c5t4d0p0 ONLINE |
たぶん、まだ壊滅的にはヘッダを壊してしまったりはしてないと思うので、もう少しねばってみよう。
ところで、試しにb135をbfuインストールしたときにrootシステムを部分的にぶっ壊したらしく、起動後にcpu1がfaultedになって片肺運転するようになってしまった。
ログにはon-lineになった状態が記録されているだけで、faultedになった記録がない。
謎。
# kstat cpu_info
(省略)
name: cpu_info1 class: misc
brand Intel(r) Core(tm)2 CPU 6300 @ 1.86GHz
cache_id 1
chip_id 0
clock_MHz 1867
clog_id 1
core_id 0
cpu_type i386
crtime 13578.766961717
current_clock_Hz 1600000000
current_cstate 1
family 6
fpu_type i387 compatible
implementation x86 (chipid 0x0 GenuineIntel 6F2 family 6 model 15 step 2 clock 1867 MHz)
model 15
ncore_per_chip 1
ncpu_per_chip 2
pg_id 3
pkg_core_id 0
snaptime 13857.412686221
socket_type Unknown
state faulted
state_begin 1269253954
stepping 2
supported_frequencies_Hz 1600000000:1867000000
supported_max_cstates 1
vendor_id GenuineIntel |
こんな感じ。
最初は本当にcore2が片肺壊れたのかと思ったが、ライブCDで起動するとちゃんと動いている。
どこかにオンラインにできる機構があるはずと調べてみたら、ちゃんとあった。
# psradm -fF 1 #cpu1 off-line
# psradm -n 1 #cpu1 off-line解除
で、二発に戻った。