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

OpenSolaris b134からONビルド、onuでアップデートする





 公式イメージアップデートがb134で止まったままのOpenSolarisであるが、ONのリポジトリはすでに146まで上がっている。 ファイルサーバがまれにフリーズすることがあって、OpenSolarisの問題なのかハードウェアの問題(あるとしたらたぶんチップセットの熱暴走)なのかを切り分けたく、何はともあれアップデートしたい。 ということで、onuによる無理やりアップデートを行う。 144からは137以上の環境でないとビルドできないらしいので、とりあえずワンクッション置いてb142をnightlyなりbldenvで手動ビルドするなりしてパッケージを作成する方向で。

b134上でONビルドするにあたっての主な注意点
・PATHの設定
     デフォルトでは
     PATH=/usr/gnu/bin:/usr/bin:/usr/sbin:/sbin
    だが、以下のように変更
     PATH=/opt/SUNWspro/bin:/opt/onbld/bin:/opt/onbld/bin/i386:/usr/bin:/usr/sbin:/sbin:/usr/gnu/bin
・extraリポジトリを登録してosnetをインストール ここ参照
・sunstudio12.1(sunstudio12-patched-ii-2009Sep-sol-x86.tar.bz2)を/opt/SUNWsproに展開
・sunstudio12u1をpkgでインストール
・その他 gettext \
        system/zones/internal \
        FSWxorg-headers \
        developer/opensolaris/pkg5 \
        library/python-2/setuptools-26 \
        runtime/python-25、ss-dev
        もpkgでインストール
・perl-510も必要(?)
・pkg-gateをビルド、インストール この辺参照
        インストール後、/lib/svc/method/pkg-updateに実行権限がついているか確認

opensolaris.sh内の設定
・nightlyのオプション指定、今回はnon-DEBUG
     NIGHTLY_OPTIONS="-nlmprt";        export NIGHTLY_OPTIONS
・GATE名、またはバージョン名をちゃんと指定しておく。 virtualboxをインストールするときのバージョン認識に必要だったので
     #VERSION="$GATE";                        export VERSION
    VERSION="snv_142";                        export VERSION

・LINT絡みの環境変数、opensolaris.shの末尾に追加
     i386_LINT=/opt/sunstudio12.1/bin/lint; export i386_LINT
    amd64_LINT=/opt/sunstudio12.1/bin/lint; export amd64_LINT
    sparc_LINT=/opt/sunstudio12.1/bin/lint;    export sparc_LINT
    sparcv9_LINT=/opt/sunstudio12.1/bin/lint; export sparcv9_LINT

・ON_CRYPTO_BINSが正確に指定されていること
     # Location of signed cryptographic binaries.
    #ON_CRYPTO_BINS="$CODEMGR_WS/on-crypto.$MACH.tar.bz2"
    ON_CRYPTO_BINS="$CODEMGR_WS/on-crypto-nd.i386.tar.bz2"

・hgでon-gateを引っ張ってきたあとに、usr/src/pkgdefsの中身を消す


 といった辺りを整備。 sunstudio12u1はlintで必要なだけなのでPATHは通さない。 nightlyであれば自動でパッケージ化まで行われると思うが、bldenvを使うときはusr/src/pkgフォルダ内でmake installするとパッケージが作られる。 パッケージは直下の「packages/i386/nightly-nd」に出現。

※bldenvでパッケージをビルドする場合
# cd /tank/onnv/snv_142
# cd usr/src/pkg
# bldenv /tank/onnv/snv_142/opensolaris.sh "dmake install"

「validate_pkg」が無いとかエラーで止まる場合は、snv_142のonbldに含まれているものを使っちゃおうということでusr/src/tools/scriptsにPATHを一時的に通したりした。 ビルドツリー内のtoolを使う、とかいう設定があったりするっぽいのでそうすれば問題ないのかもしれないが、ワケ分からんのでいきあたりばったり。


onuでアップデート
pkg.depodとonuでアップデートインストール
# cd /tank/onnv/snv_142
# /usr/lib/pkg.depotd -d /path/to/package -p 13000&
# usr/src/tools/scripts/onu -Ot 新しいBE名 -u http://localhost:13000


または直接onuで
# usr/src/tools/scripts/onu -Ot 新しいBE名 -d /path/to/package

 onuに関する本家近辺からの 基本情報。 自動的に新しいBE名で現在の環境の スナップショットコピークローン(?)が作られ、その上にアップデートインストールされる。 コピー元には一切変更はかからないはずなのでアップデートにいくら失敗しても大丈夫なはずだが、まだしっかり仕組みを把握できていなかったりするので実際どうなのか不明。

 最初にアップデートにトライしたときは、システムドライブを変態的なパーティション切りをしていたせいでboot archive作成のところでこけた。 パーティションの切り方をもう少しマシなものでやり直して、b134をクリーンインストールしてからアップデートしてみるとうまくいった。 ちらほらとなんでかビルドが通らないところがあったが、適当に足りないファイルを拾ってきたり、Makefileをいじったりして回避。


 で。

 新しく作ったb142環境から起動して、さらに先端(現在b146)に向けてビルド、インストールする。 b134の時と比べて基本的にすんなり行くが、perlの5.10.0のビルドのところでどーーしても止まる。 よく観察してみると、setupがうまくいってないのか必要なファイルが足りず、どうやったってビルドできそうにない。 仕方がないので適当にperl-5.10.1をONと同じ設定で別にビルドして、足りない分を移植したりなんたりしてるうちに、いつのまにかビルドが通ってパッケージ化も完了。 perl関係で何か変更があったらしいのだが、よくわからず。

perl-5.10.1 ビルドの参考
b137以前でb144辺りをビルドする時の参考
b144 のビルドに関する本家近辺からの情報

 ここら辺をざあっと参考に。 ところで、pkg-gateがこれまたどーーしてもビルドが通らなかったのだが、PATHの/usr/gnu/binの位置が前すぎだったのがダメな原因らしく、一番後ろに持っていったらビルドが通った。


 尚、おおまかなインストール、アップデートの手順は、
1. DVDからb134インストール
2. b134上でビルド環境、生活環境構築(iscsitgt、sambaインストールとか)←ここ重要
3. b142のビルド、パッケージ作成、onuでb142新環境インストール
4. b142で起動して生活

さらにアップデートしたくなったときは、
5. b142でONの先端(b146等)をビルド、パッケージ作成
6. b134から起動、onuでb146新環境インストール
6. onuで基本BEをソースにしてb146新環境インストール
7. b146で起動して生活。 必要ないならb142環境は消す

 という感じでどんどんアップデートするにしても、あくまで最初のb134環境からアップデートインストールしないとダメくさい。 正式にはどうなのか調べてないので不明。


 というわけで、どうにかこうにかでアップデート完了。 これでもフリーズが起きるようならチップセットクーラーを買ってこないといけないが……どちらにせよ、あきらかにチップセットのヒートシンクが異常に熱いので関係無しに導入すべきかねぇ。 ケースのエアフローがややこしいことになってるので、できればこれ以上いじりたくないところではある。



コメント欄
(投稿なし)

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