差分表示


* 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>http://opensolaris.org/os/about/]]からの抜粋翻訳です。
* なにから始める?
kernel programmerになる必要も、たくさんの時間を費やす必要もなく、OpenSolaris projectに
参加する方法はいろいろあるそうです。
** Use It
まずはユーザとして使ってみる方向で。
- [[Solaris Express(SE)>http://www.sun.com/software/solaris/solaris-express/get.jsp]]を入手して動かす
-- SEはOpenSolaris projectに基づくs/w distributionのひとつです。
- [[最新のアーカイブ>http://opensolaris.org/os/downloads]]を入手して、
最新のOpenSolarisをビルド([SEE ALSO][[OpenSolaris Developer's Reference Guide>http://opensolaris.org/os/community/onnv/devref_toc/]])動かす
- なにか不具合があれば、[[報告>http://bugs.opensolaris.org/]]する
- OpenSolarisの[[コミュニティ>http://opensolaris.org/os/communities/]]や[[project>http://opensolaris.org/os/projects]]を見に行って、
他のユーザと[[話をしてみる>http://opensolaris.org/os/discussions]]。OpenSolaris.orgとしての[[Event>http://opensolaris.org/os/events]]もそのうちあるのかも。
** Improve It
何かあれば手を加える・・のかな。
- まずは[[OpenSolaris Develper's Reference Guide>http://opensolaris.org/os/community/onnv/devref_toc/]]を基点に。
- 勉強は[[CVS repository>http://cvs.opensolaris.org]]から。
- OpenSolarisの[[コミュニティ>http://opensolaris.org/os/communities/]]や[[project>http://opensolaris.org/os/projects]]に参加してると
そのうちコードに手を加えることも。詳細は[[この辺>http://opensolaris.org/os/community/onnv/os_dev_process/]]に。
まずは自分がいいとおもうものを[[project>http://opensolaris.org/os/projects]]として公開するところからだろう。
** Evangelize
周りに広める術はいろいろあるが、すぐにできることは[[ファンボタン>http://opensolaris.org/os/about/button/]]を
周りに広める術はいろいろあるが、すぐにできることは[[ファンボタン>http://opensolaris.org/os/about/buttons/]]を
貼ってみるだろう。(と思ったんだが、pyukiwikiの仕様上、貼り付けは改造しないと難しいっぽ。)
** 面白そうなプロジェクト(2006-06-08 update)
パッと見、onだけにOSかNetwork系だけかと思ったけど、こんなのも。
- [[OpenGrok>http://opensolaris.org/os/project/opengrok]]
-- ソースコードブラウザ。LXRやcscopeを使っているなら、考慮する価値大

----
以下は主に[[ON Downloads Center>http://www.opensolaris.org/os/downloads/on/]]から抜粋翻訳です。
最新版をbuildする方向で情報収集してます。
* How do I start?
** step1
まずは[[README>http://dlc.sun.com/osol/on/downloads/current/README.opensolaris]]を全部読めとのお達し。~
そりゃそうだなということで、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>http://opensolaris.org/os/community/onnv/known_issues/]]にあります。~
現時点の最小構成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)>http://www.opensolaris.org/os/community/onnv/devref_toc/devref_5/#5_3_using_bfu_to_install_on]]を使うときにエラーメッセージがでる
- 8. bfu使うならなので、無視
- 9. Zone未対応
- 10. Sun Java Web Consoleが初期起動時に有効に出来ないので、ZFS管理アプリが使えない。
workaroundとしては手で /usr/sbin/smcwebserver start の方向で。
詳細は[[この辺>http://blogs.sun.com/roller/page/talley?entry=runing_the_zfs_gui_on]]を。
- 11. 古いnVidiaドライバを使ってるとwarningが出る。出たら[[この辺>http://www.nvidia.com/object/solaris_display_1.0-8178.html]]を参照。
- 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の場合は[[別途参照>http://opensolaris.org/os/community/tools/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択です。
- http://dlc.sun.com/osol/on/downloads/current/
- http://dlc.sun.com/torrents/
- http://www.genunix.org/mirror/index.html
- http://svn.genunix.org/
* Now what?
READMEには最新のONのソース・バイナリの情報と、ビルド・インストールの手順の詳細が書いてあります。
この手順は多くの人が使えますが、全ての人が使えるわけではありません。
うまくいかなくてもあきらめないで、参照情報を探りましょう。
- gccを使うなら b24以降で。(現行最新は気にしないでいいです)
- SUNWspro謹製ccを使う場合の情報は[[ここに>http://opensolaris.org/os/community/tools/sun_studio_tools]]あります。
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の作業を行うことに難しいところがあるなら、
-- [[Develper's Reference>http://opensolaris.org/os/community/onnv/devref_toc/]]を読みましょう
-- [[フォーラム>http://opensolaris.org/jive/forum.jsp?forumID=31]]で聞いてみましょう
-- 実装に疑問があるなら、[[この>http://opensolaris.org/jive/forum.jsp?forumID=12]]フォーラムへ。
* DVD Assembly Instructions
DVDのISOイメージをdownloadした場合、
- ここの欠片を解凍して
- catでくっつけます
cat segment-a.iso segment-b.iso > sxcr.iso
- で、焼きます。Solarisなら[[lofi(7D)>http://mage.oops.jp/pyuki/wiki.cgi?Solaris%a5%cd%a5%bf#i1]]で、ファイルシステムとしてマウントできます。

* コンパイラ関連
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)
[[ここ>http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=8&PartDetailId=SS10-OSOL-SF-G-F&TransactionId=try]]
からダウンロードできます。拾ったら適当に /optに展開して終わりです。
*** Option 2(pkg)
[[ここ>http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=8&PartDetailId=SS10-OSOL-SPX86L-G-F&TransactionId=try]]
からダウンロードできます。拾ったら適当にアーカイブを展開して、suしたら、以下でokです。
 # ./installer
 # cd patches
 # patchadd -M . patchelist

* 参考
- OpenSolaris project
-- http://opensolaris.org/os
- Polaris Trac (OpenSolaris on PowerPC)
-- http://polaris.blastwave.org/ ~
OpenSolaris.orgで提供しているのは SPARCかx86(i386/amd64)の2択になってます。~
今(2006-06-09)のところ、communityのprojectとして、cross compileをしてportingをしているのは、
PowerPC向け(要はMac向け)だけです。

* 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