目次

OpenSolarisとは

遠い昔、憧れた商用OSが遂にOpenSource?になる時代が着ちゃいましたね。 UNIXに衝撃を受けたのか、SVR4なのか・・なんなのかはわかりませんが、 その当時使ったのが Solaris(2.x系)だったことは間違いありません。

と過去を振り返るのはさておき・・OpenSolaris/Nevada(≒Solaris11)使えるようにしてみましょ。

OpenSolaris projectとは

OpenSolaris projectとはSun Microsystems, Incが支援するopen sourceプロジェクトです。 元々がSolaris OSのソースコードの一部であったもので、近年のOSS/Linuxの動向に合わせて このような形態を取るようになりました。今後、Sunが提供していくOS(2006-06だと、 Soalris 10)はOpenSolarisベースとなる(nevada/Solaris11以降)と思われます。

公開して結構経つのに、今のところそんなニュースは聞こえてきませんが、 RedHat?とかSuSE、その他いろいろなLinuxのディストリビュータみたいな Solarisのディストリビュータがそのうち登場しちゃうんでしょうか?

世の中の自分が知ってるUNIX OSはOSSなのが、

  • Linux
  • FreeBSD (include Mac OS X)
  • NetBSD
  • Solaris

そうでないものが、

  • AIX
  • HP-UX

とありますが、ある程度以上のシェア/品質/機能がある商用OSが、 ほぼそのまま公開されるのはこれが最初で、 きっと当分無いんじゃないかなと言う気がします。
存分に堪能しましょう。


以下は主にProject Overviewからの抜粋翻訳です。

なにから始める?

kernel programmerになる必要も、たくさんの時間を費やす必要もなく、OpenSolaris projectに 参加する方法はいろいろあるそうです。

Use It

まずはユーザとして使ってみる方向で。

Improve It

何かあれば手を加える・・のかな。

Evangelize

周りに広める術はいろいろあるが、すぐにできることはファンボタンを 貼ってみるだろう。(と思ったんだが、pyukiwikiの仕様上、貼り付けは改造しないと難しいっぽ。)

面白そうなプロジェクト(2006-06-08 update)

パッと見、onだけにOSかNetwork系だけかと思ったけど、こんなのも。
  • OpenGrok
    • ソースコードブラウザ。LXRやcscopeを使っているなら、考慮する価値大


以下は主にON Downloads Centerから抜粋翻訳です。 最新版をbuildする方向で情報収集してます。

How do I start?

step1

まずはREADMEを全部読めとのお達し。
そりゃそうだなということで、2006-07-07付けのものを読んでみたところを掻い摘んでみる。

README 前置き

  • まずはSolaris Express - Community Releaseの最小セットでbuild/installして、動いたらEntire Distribution metaclasterにいけと。
  • あと事前にSection B(known issues)を読むこと。
  • buildするためのリソースには6種類あります
    • 1. source tarball(on-src-DATE.tar.bz2)
    • 2. ダルいところのbinary(on-closed-bins-DATE.PLATFORM.tar.bz2) -> libs, kernel mods, cmds
    • その通りで暗号(PKCS11)関係からデバイスドライバ、/usr/binに入れるkshのスクリプトやら・・色々入ってます。;-) buildに利用するツールも入っています
    • 3. コンパイラ(SUNWspro謹製 ccか gcc)
    • 4. tool pkg(SUNWonbld-DATE.PLATFORM.tar.bz2)
    • 5. extra tools(opensolaris-build-extras-DATE.PLATFORM.tar.bz2)
    • 6. bfu向けコンパイル済のもの(on-bfu-DATE.PLATFORM.tar.bz2)

ソースからコンパイルする場合に必要なのは、1,3,4,5の4点。これらには暗号関係で輸出入禁止に抵触する 可能性もあるが、そこはちゃんと自分で考慮するように。

README Currently Known Issues

最新版はOpenSolaris.orgのNevada communityにあります。
現時点の最小構成SXCR(Solaris eXpress Community Release)はNevada b32以降で、
  • 1. これから作っても Solaris pkgにはなりません。
  • 2. makeターゲットの lint, checkは機能しません
  • 3. Non-DEBUGカーネルは未テスト。特に ataドライバはNon-DEBUG以外では動きません。
  • 4. Install -iが動かないplatformアリ(lw8は確定)
  • 5. SPARC/x86間のクロスコンパイルでのビルドは未対応。x86(amd64 or i386)システムはamd64と i386の両者をビルド可能。
  • makeターゲットのclobberってなんだろ
  • 6. /var/adm/messaagesに暗号化(PKCS11)ライブラリ絡みのmsg(sshdとKerberos)が出る。svcadm restart cryptosvc を起動後に打て。
  • 7. BFU(Blindingly Fast Upgrade)を使うときにエラーメッセージがでる
  • 8. bfu使うならなので、無視
  • 9. Zone未対応
  • 10. Sun Java Web Consoleが初期起動時に有効に出来ないので、ZFS管理アプリが使えない。
  • workaroundとしては手で /usr/sbin/smcwebserver start の方向で。 詳細はこの辺を。
  • 11. 古いnVidiaドライバを使ってるとwarningが出る。出たらこの辺を参照。
  • 12. FMA SNMP Agent関係だから無視
  • 13. snv34以降関係ない話なので、無視(今は41)
  • 14. snv36固有の話(nVidiaドライバとの関係でpanic)なので無視。(snv37で解消済)
  • 15. snv37の話なので無視。

README Installing from Source

READMEでは /export/testws をworkspaceとして、手順が書いてある。
  • 1. tarballをworkspaceで解凍。解凍すると、
  • usr/src 配下にはソース
    closed/root_PLATFORM 配下にはbinary
    が展開される。
  • 2. コンパイラの準備
  • SUNWsproの場合は、パッチをあてるだけだが、gccの場合は別途参照。 originalの参照先は爽やかにdead linkになっているので、注意。(2006-04-05の時点@b38でgccもokになりました)
  • 3a. 以前のonbld toolがあるなら、pkgrm(1M)すべし。
  • 3b. onbld tools(SUNWonbld)をpkgadd(1M)。
  • 3c. extras toolsを必要なら展開
  • 4. コンパイラとmakeのためにpathを設定(READMEにはucbとあるが、あるなら/usr/sfw/bin/gmakeでいいでしょう。)
  • 5. 環境ファイルを作成
    • 5.1. /export/testws/usr/src/tools/env/opensolaris.sh を /export/testws に copyする
    • 5.2. で、copyしたopensolaris.shに修正する
変数やること
GATEソースを展開したディレクトリ名を書く(この例の場合、testws)
CODEMGR_WSソースを展開したディレクトリのフルパスを書く(この場合、/export/testws)
STAFFER作業するaccound名にする
VERSION好きに変える。uname -v の際の出力になる。
    • 6. build。/export/testwsで % nightly ./opensolaris.sh &
    • nigthlyは作業が終わったら、$MAILTOにメールで終了を通知する。作業ログは /export/testws/log/log.<mmdd> に出力される。
    • 7. コンポーネント毎にbuildする場合は、こんな感じで。
 $ cd /export/testws
 $ bldenv -d ./opensolaris.sh 
   ここまで下準備。これ(bldenv)はビルド用環境変数を設定するだけのscriptです。
   で、取説には書いてないけど、$SRC/Makefileのtarget 'setup'を事前に行わないと
   その後の各コンポーネント毎のbuildは動かないので、注意。
 $ cd usr/src/cmd/vi
 $ dmake all 
    • Makefileは、GNU make(3.8.0では確定)で上手く動かないので、
    • SUNWsproのdmake or /usr/ccs/bin/makeを使うように。

その他(install kernelsやBFU)は、Developer's Referenceを参照。

step2

READMEを読み終えたら、 source tarballからのビルド(step3a)かpre-build archiveからインストール(step3b)のどちらかで必要なものを 取りそろえます。

step3b (install /w pre-build archives)

SXCRを用意して、BFUアーカイブ(on-bfu-DATE.PLATFORM.tar.bz2)と ビルドツール(SUNWonbld-DATE.PLATFORM.tar.bz2)を用意する。続きは上記のREADMEの通りでおk。

step3a (build and install)

step3bとの違いは、コンパイル済みのarchive(pkg相当品@BFU)をstep3bでは利用するのが、 ソース(on-src-DATE.tar.bz2)とclosed binary-ON components(on-closed-bins-DATE.PLATFORM.tar.bz2)に 変わること。後の手続きは上記のREADMEにあるとおり。

Where can I get the files?

4択です。

Now what?

READMEには最新のONのソース・バイナリの情報と、ビルド・インストールの手順の詳細が書いてあります。 この手順は多くの人が使えますが、全ての人が使えるわけではありません。 うまくいかなくてもあきらめないで、参照情報を探りましょう。
  • gccを使うなら b24以降で。(現行最新は気にしないでいいです)
  • SUNWspro謹製ccを使う場合の情報はここにあります。
  • Nevada上でupdate releaseにbuildする場合は、入れておいて損はない・・と言うか、必須だと思います。
    • 何となくSun Studio11入れちゃったひと ;-)
    • uninstall手順は下記2手順です。
      /var/sadm/prod/com.sun.studio_11配下にbatch_uninstall_allから起動されるjvmで利用する クラスファイルが置いてあるので、ここにcdして実行しないと(試してないですが、)動かないと思います。
      関連するpkgとしては大量にpkgaddされているので、手でpkgrmするのは考えない方がいいです。
 # cd /var/sadm/prod/com.sun.studio_11
 # ./batch_uninstall_all
  • 必要なファイルを全て手に入れて、その上でREADMEの作業を行うことに難しいところがあるなら、

DVD Assembly Instructions

DVDのISOイメージをdownloadした場合、
  • ここの欠片を解凍して
  • catでくっつけます
  • cat segment-a.iso segment-b.iso > sxcr.iso
  • で、焼きます。Solarisならlofi(7D)で、ファイルシステムとしてマウントできます。

コンパイラ関連

OpenSolarisのビルドに使えるコンパイラは、SUNWsproのccとGNUのgccです。 目的に応じてどっちにするか使い分けましょう。
情報源は http://opensolaris.org/os/community/tools/ です。

GNU gcc

[SEE ALSO] http://opensolaris.org/os/community/tools/gcc/

Sun Studio 10 Developer Tools(for OpenSolaris)

[SEE ALSO] http://opensolaris.org/os/community/tools/sun_studio_tools/

OpenSolaris向けのSUNWsproがreleaseされています。入手方法は2通り。

Option 1(install img)

ここ からダウンロードできます。拾ったら適当に /optに展開して終わりです。

Option 2(pkg)

ここ からダウンロードできます。拾ったら適当にアーカイブを展開して、suしたら、以下でokです。
 # ./installer
 # cd patches
 # patchadd -M . patchelist

参考

Polaris向け差分情報

Polaris向けに提供されている bldonの差分は /opt/bldon/bin/ppc/の下に入れる ctfmerge, ctfstabs, ctfconvertの3点で、全てダミーのkshスクリプトでした。
他にはcross compile用のGNU binutil 2.16(=as,ar,ldとか)と gccです。

onbldのツール類

bldenv

bldenvは基本的に環境変数を設定するだけ。やってることは
  • 1. (line 1 - 100) 引数のparse
  • 2. (line 101 - 120) ロケールをCにして、環境変数のclear
  • 一式unsetします。unset対象は
 unset LD_OPTIONS LD_LIBRARY_PATH LD_AUDIT LD_BIND_NOW LD_BREADTH LD_CONFIG
 unset LD_DEBUG LD_FLAGS LD_LIBRARY_PATH_64 LD_NOVERSION LD_ORIGIN
 unset LD_LOADFLTR LD_NOAUXFLTR LD_NOCONFIG LD_NODIRCONFIG LD_NOOBJALTER
 unset LD_PRELOAD LD_PROFILE
 unset CONFIG   
 unset GROUP    
 unset OWNER    
 unset REMOTE   
 unset ENV      
 unset ARCH     
 unset CLASSPATH
  • 3. (line 122 - 147) 第一引数($1)に対して、環境変数設定スクリプトを起動
  • 引数がファイルなら、そのまま実行。そうでない場合、/opt/onbld/env/$1 として実行
  • 4. (line 141 - 149) closed(on-closed-bins-DATE.PLATFORM.tar.bz2)の有無をチェック。
  • 無い場合、CLOSED_IS_PRESENT="no" と設定する。
  • 5. (line 150 - 177) nigthly.sh用引数チェック
  • 6. (line 179 - 215) Build type(debugか否か)をecho、環境変数に設定
  • 7. (line 218 - 231) VERSION環境変数を設定
  • 8. (line 233 - 266) ビルド用のコマンドサーチパスを設定
  • ハードコードで設定しているパスは
 /opt/onbld/bin
 /opt/onbld/bin/${MACH}
 /opt/SUNWspro/bin
 /opt/teamware/ParallelMake/bin
 /usr/ccs/bin
 /usr/bin
 /usr/sbin
 /usr/ucb
 /usr/etc
 /usr/openwin/bin
 /usr/sfw/bin
 /opt/sfw/bin
 .
    • TOOLS, TOOLS_PROTO環境変数を設定。
    • 引数に-tを指定した場合、TOOLS_PROTOの下のツールを環境変数に設定。
  • 9. (line 268 - 276) よくわからない環境変数(CH, POUND_SIGN, DEF_STRIPFLAG)設定。
  • 他に TMPDIRを /tmpとして設定。
  • 10. (line 278 - 297) ライブラリパス設定。どう効いてくるのかわからない環境変数設定。
  • この環境変数 ROOTは bldenvの引数になるスクリプトで指定している。
 ENVLDLIBS1="-L$ROOT/lib -L$ROOT/usr/lib"
 ENVCPPFLAGS1="-I$ROOT/usr/include"
  • 11. (line 299 - 302) 環境変数 RELEASE, VERSION, RELEASE_DATEの出力。
  • 12. (line 304 - 312) buildできそうか調べて、echo
    • $SRC/Makefileにターゲットsetupがあるなら echoアリ
    • t_FLAGがここまでに y になってるなら echoアリ
  • 13. (line 315 - 322) cshに変更

opensolaris.sh

bldenvに渡すスクリプト。これも環境変数を設定するだけ。

Last-modified: 2006-06-13 11:20:41