日記ブログ、または雑多なメモ
2010年3月22日

OpenSolarisでkernelをビルド





 ぼちぼちとやっているうちに、作法がわかってきた。
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解除


 で、二発に戻った。


コメント欄
(投稿なし)

コメントなどありましたらこちらからどうぞ
名前
内容
 ※名前、内容ともに入力必須です
- C'sGallery Blogっぽく見えるシステム3.2 -
小武 (管理人) eta2@tim.hi-ho.ne.jp