ナレッジデザインのホームページ スタッフの紹介ページ
Site Navigation:

OpenSolaris (20061002リリース x86版) をソースコードからコンパイルする


OpenSolaris (20061002リリース x86版)のソースコードをダウンロードして、コンパイルする手順です。

ダウンロードするコンポーネントやコンパイル手順についてはsource tarball (on-src-DATE.tar.bz2) の中のREADME.opensolarisファイルに書かれていますが、ここではそれに実行例を加えて、多少具体的に 説明します。
  1. ソースコードは OpenSolarisのダウンロードセンター から辿って、最新のソースは http://dlc.sun.com/osol/on/downloads/current/ からダウンロードできます。
    なお、過去の最近4ヶ月位のソースは
    http://dlc.sun.com/osol/on/downloads/ からダウンロードできます。

    x86版の場合、ダウンロードするコンポーネントは以下の4つです。

    • on-src-DATE.tar.bz2 :
        OpenSolarisのソースコード
    • on-closed-bins-DATE.PLATFORM.tar.bz2 :
        ソースのみからはコンパイルできないライブラリ、カーネルモジュール、コマンド
    • Sun Studio 11 :
        コンパイラ、開発ツール(Build 45からはSun Studio 11を、Build 45より前はSun Studio 10を使用する。)
    • SUNWonbld-DATE.PLATFORM.tar.bz2 :
        OpenSolaris特有のBuildTool

    on-closed-bins-DATE.PLATFORM.tar.bz2 と SUNWonbld-DATE.PLATFORM.tar.bz2 は on-src-DATE.tar.bz2 と 同じウェブページからダウンロードできます。
    Sun Studio 11 は OpenSolarisのダウンロードセンター から辿って、 Sun Studio 11 for OpenSolarisをダウンロードします。

  2. コンパイルするための準備として、20061002リリースのx86版を解凍、展開し、環境設定を行う例です。
    上記の4つのコンポーネントはすべて/exportの下にダウンロードしたものとします。

    (1) on-src-20061002.tar.bz2とon-closed-bins-20061002.i386.tar.bz2を解凍、展開する。
    # mkdir /export/testws
    # cd /export/testws
    # bzcat ../on-src-20061002.tar.bz2 | tar xvf -
    # bzcat ../on-closed-bins-20061002.i386.tar.bz2 | tar xvf -
    この結果、ソースコードは/export/testws/usr/srcの下に、クローズドバイナリは/export/testws/closed/root_i386の下に インストールされます。

    注)上記の手順の、コンパイル作業をするディレクトリ/export/testwsは他のディレクトリでもできますが、 コンパイルのための環境設定ファイルopensolaris.sh(後述)が/export/testwsを使うように 設定されているので、作業が簡単になります。
    もし、空き領域が十分にない場合は、他のディレクトリにインストールすることにして、/export/testws はそこへのシンボリックリンクとすると良いです。例えば、私は空き領域のある/export/homeの下に opensolaris-src-20061002というディレクトリを作り、/export/testwsはそこへのシンボリック リンクとしました。
      # ln -s /export/home/opensolaris-src-20061002 /export/testws

    (2) Sun Studio 11 を/opt/SUNWsproの下にインストールする。
    # mkdir /opt/SUNWspro
    # cd /opt/SUNWspro
    # uncompress -c /export/sunstudio11-ii-20060829-sol-x86.tar.Z | tar xvf -

    (3) onbldツールをインストールする。
    # cd /var/tmp
    # bzip2 -dc /export/SUNWonbld-20061002.i386.tar.bz2 | tar xvf -
    # pkgadd -d onbld SUNWonbld

    SUNWonbldパッケージは/opt/onbldの下にインストールされます。

    (4) 環境変数PATHに/opt/SUNWspro/binと/opt/onbld/binを加え、/usr/ucbを最後尾に持ってきます。
    (例)
    PATH=/opt/SUNWspro/bin:/opt/onbld/bin:/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/ucb

    (5) nightlyコマンドとbldenvコマンドのための環境設定スクリプトopensolaris.shを適切に設定します。
    # cp /export/testws/usr/src/tools/env/opensolaris.sh /export/testws
    # vi /export/testws/opensolaris.sh
    (例)
    GATE=testws <= 作業環境が/export/testwsであれば変更の必要なし。
    CODEMGR_WS="/export/$GATE" <= 作業環境が/export/testwsであれば変更の必要なし。
    STAFFER=root <= 作業者のログイン名に変更する。

  3. コンパイルを開始する。

    # cd /export/testws
    # nightly ./opensolaris.sh &

    コンパイルされたバイナリは /export/testws/proto/root_i386 ディレクトリの下にインストール されます。

    ログについて:
    コンパイル実行中のログは /export/testws/log/nightly.log に取られます。
    コンパイルの進行状況をリアルタイムにモニタしたければ、
    # tail -f nightly.log
    とします。

    コンパイルが完了するとこのログは/export/testws/log/log.日付/nightly.logに置かれます。
    開始、終了時間もこのログで確認できます。
    (例)
    # head -2 nightly.log
    ==== Nightly distributed build started: Fri Oct 6 21:55:11 JST 2006 ====
    # tail -5 nightly.log
    ==== Nightly distributed build completed: Sat Oct 7 03:10:39 JST 2006 ====
    ==== Total build time ====
    real 5:15:28

    上記のログはIBM NotePc T42にUSBディスクを接続し、そこにインストールしたOpenSolaris b45で実行した時のものです。
    X Window systemを立ち上げて、ターミナルエミュレータを起動し、他に特別なアプリケーションは起動していない状態で、 約5時間15分かかりました。その時にハードウェアは次の通りです。
      IBM NotePc T42: CPU Intel Pentium M 1.6GHz, Memory 1.5GB
      USB-HDD: IO DATA HDP-U40S(40GB, 5400rpm)
    なお、コンパイル中はシステムに相当なロードがかかり重くなるので、他のアプリケーションは 実行しない方がよさそうです。高速なPCで実行するとか、業務で使用しているPCの場合は 夜中に実行させておくのが良いでしょう。

    コンパイルを途中で中断したような場合、それまでのコンパイル作業の後から継続して再開するときは、
      # nightly -i ./opensolaris.sh
    とします。(-i はincrementの意?)
    -iを付けないと、それまでコンパイルしたバイナリはすべて削除して、最初からコンパイルします。

(記 2006年 10月 7日)

  有限会社ナレッジデザイン
  住所: 〒182-0024 東京都調布市布田 4-6-1 調布丸善ビル 7F
  Phone: 0424-40-7912, Fax: 0424-40-7913, E-Mail: info@knowd.co.jp