Solaris 10 x86に関するページ

準備

Solaris 10 11/06ダウンロード版の入手

$ cat sol-10-u3-ga-x86-dvd-iso-a sol-10-u3-ga-x86-dvd-iso-b sol-10-u3-ga-x86-dvd-iso-c
sol-10-u3-ga-x86-dvd-iso-d sol-10-u3-ga-x86-dvd-iso-e > sol-10-u3-ga-x86-dvd.iso
$

事前情報収集

VMware上にSolaris 10を入れる

インストールマシン

次の構成のPCにインストールしました。

1台目

パーツ
CPU Pentium III(Katmai) 500MHz
M/B ASUS P3B-F
Intel 440BX
Award PCI BIOS
Memory 640MB PC-100
Video Eontronics Picasso (Permedia 2)
LAN Planex FW-110TX-PK (Realtek 8139)

2台目

パーツ
CPU Athlon XP 2500+ (1.8GHz)
M/B MSI 746F-Ultra2L
SiS 746FX + SiS 963L
Award PCI BIOS
Memory 1024MB PC-2700
Video Gigabyte GeForce6600
LAN SiS963L + Realtek 8201BL(物理層)

3台目

Windows XP上のVMware仮想マシン環境にインストール

パーツ
CPU Athlon 64 x2 4200+ (2.2GHz)
M/B ASUS M2N-SLI Deluxe
NVIDIA nForce 570 SLI MCP
Award BIOS
Memory 2048MB DDR2-800
Video Leadtek WinFast PX7600GS
LAN nForce 570

4台目

Windows Vista (64bit版)上のVMware仮想マシン環境にインストール

パーツ
CPU Phenom X4 9750 (2.4GHz)
M/B ASUS M2N-SLI Deluxe
NVIDIA nForce 570 SLI MCP
Award BIOS
Memory 6144MB DDR2-800
Video ATI RADEON HD3650
LAN nForce 570

インストール

経過

CD版11/06インストール

Solaris 10 Software CD1のCD-RをCDドライブにセットしてマシンをブートします。

GNU GRUB version 0.95 が立ち上がり、インストール方法を選択する画面が現れます。

Solaris
Solaris Serial Console ttya
Solaris Serial Console ttyb (for lx50, v60x and v65x)

とりあえずデフォルトの"Solaris"を選択しました。

SunOS Release 5.10 Version Generic_118855-33 32bit
Copyright 1983-2006 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Configuring devices.
/
    1 Solaris Interactive (default)
    2 Custom JampStart
    3 Solaris Interactive Text (Desktop Session)
    4 Solaris Interactive Text (Console Session)
    5 Apply driver updates
    6 Single user shell
Enter the number of your choise.
select: 1

Solaris Interactive

Using install cd in /dev/dsk/c1t1d0p0
Using RPC Bootparams for network configuration information.
Setting up Java. Please wait...
Extracting windowing system. Please wait...
Beginning system identification...
Searching for configuration file(s)...
Search complete.
Proposed Window System Configuration For Installation:
    Video Device:       NVidia Corporation GeForce 6600
    Video Driver:       XF86-NV
    Resolution/Colors:  1024x768 - 256 colors @ 70Hz
    Screen Size:        17-inch (43cm)
    Monitor Type:       MultiFrequency 56kHz (up to 1280x1024 interlaced)
    Keyboard Type:      Generic US-English
    Pointing Device:    Generic Mouse (3 Button)
Press <ENTER> to accept proposed configuration
or    <ESC>   to change proposed configuration
or    <SPACE> to pause
            <<< timeout in 30 seconds >>>

インストール種類を聞いてくるので、1を選択しました。

このあと結構時間がかかります。LANの認識、ビデオカードの認識で問題があることもあります。

大分待つと、Window Systemが起動し、その中のコンソールに言語選択メニューが表示されます。

Select a Language: で4を入力(Japanese)します。

【ようこそ】 ダイアログが表示されるので、[次へ]をクリックします。

【ネットワーク接続性】 ダイアログが表示されるので、●する にチェックを入れて[次へ]をクリックします。

【rtls0用のDHCP】 ダイアログが表示されるので、●はい にチェックを入れて[次へ]をクリックします。

【rtls0用のIPv6】 ダイアログが表示されるので、●はい にチェックを入れて[次へ]をクリックします。

【Kerberos】 ダイアログが表示されるので、●いいえ にチェックを入れて[次へ]をクリックします。

【ネームサービス】 ダイアログが表示されるので、●なし にチェックを入れて[次へ]をクリックします。

【時間帯】 ダイアログが表示されるので、●大陸/国/地域 にチェックを入れて[次へ]をクリックします。

【大陸と国】 ダイアログが表示されるので、アジア→日本をドリルダウンして選択し、[次へ]をクリックします。

【日付と時刻】 ダイアログが表示されるので、設定を確認し[次へ]をクリックします。

【rootパスワード】 ダイアログが表示されるので、rootユーザのパスワードを2回入力し、[次へ]をクリックします。

【リモートサービスの有効化】 ダイアログが表示されるので、セキュアな環境を作りたい場合は●いいえ にチェックを入れて[次へ]をクリックします。
 ※この場合、利用したいネットワークサービス(ftp/telnet/ssh/...)を後で有効に設定する作業が必要となります。

【情報の確認】 ダイアログが表示されるので、内容を確認し、[確認]をクリックします。

【ようこそ】 ダイアログに戻るので、[次へ]をクリックします。

【インストーラ・オプション】ダイアログが表示されるので、インストール後に自動リブートするようにしますか?には、●はい にチェックを入れ、インストール後に追加のCD/DVDを自動的に取り出すようにしますか?には、●はい にチェックを入れて、[次へ]をクリックします。

【媒体の指定】 ダイアログが表示されるので、●CD/DVD にチェックを入れて、[次へ]をクリックします。

初期化中の表示がでるのでしばし待つ

【ライセンス】 ダイアログが表示されるので、∨同意する にチェックを入れて、[次へ]をクリックします。

【アップグレードまたは初期インストールの選択】 ダイアログが表示されるので、●初期インストール にチェックを入れて、[次へ]をクリックします。
※HDDに、Solarisがインストールされている場合だけこのダイアログが表われるかもしれない

【インストール形式の選択】 ダイアログが表示されるので、●カスタムインストール にチェックを入れて、[次へ]をクリックします。
※デフォルトインストールだと、ディスクスライスの指定ができない

【ソフトウェアのロケール選択】 ダイアログが表示されるので、アジア-日本語(ja)と日本語(日本.PCK)と日本語(日本.UTF-8)そして北アメリカ-英語(アメリカ合衆国)(en_US)にチェックを入れて、[次へ]をクリックします。

【システムのロケール選択】 ダイアログが表示されるので、日本語(ja)が選ばれているのを確認し、[次へ]をクリックします。

【製品の選択】 ダイアログが表示されるので、なにもチェックを入れないまま、[次へ]をクリックします。

【追加製品の指定】 ダイアログが表示されるので、●なし にチェックを入れて、[次へ]をクリックします。

【Solaris ソフトウェアグループの選択】 ダイアログが表示されるので、全体ディストリビューションをチェックを入れて、[次へ]をクリックします。

【ディスクの選択】 ダイアログが表示されるので、[次へ]をクリックします。

【fdiskパーティションをカスタマイズするディスクの選択】 ダイアログが表示されるので、ディスクパーティションを設定する必要があればc0d0 にチェックを入れて、[次へ]をクリックします。

【fdiskパーティションのカスタマイズ - ディスク c0d0】 ダイアログが表示されるので、パーティションを設定し、[次へ]をクリックします。

【データの保存】 ダイアログが表示されるので、●いいえ にチェックを入れて、[次へ]をクリックします。

【ファイルシステムの配置】 ダイアログが表示されるので、ディスクc0d0を選択して、[変更]をクリックします。

【ディスクc0d0】ダイアログが表示されるので、ファイルシステムの割付をします。Solaris10 6/06からZFSファイルシステムが導入されたので、後ほどZFSで使用する領域を/exportとして多めに確保しています。割付設定後、[次へ]をクリックします。

ファイルシステム サイズ 備考
/ 12GB
swap 1GB
/export 104GB ZFS用

【インストールの準備完了】ダイアログが表示されるので、[インストール開始]をクリックします。
相当時間が経過した後、システムが再起動します。CD-ROMは抜いておきます。GRUBが立ち上がり、タイムアウトでSolarisが起動します。

起動後、NFSのドメイン名を変更するか聞いてくるので、[NO](デフォルト)を選択します。

Do you need to override the system's default NFS version 4 
domain name (yes/no) ? [no] : 

CDEが立ち上がります。

【媒体の指定】ダイアログが表示されるので、●CD/DVDにチェックを入れて、Solaris 10 6/06 CD2をCD-ROMドライブにセットして、[次へ]をクリックします。

【ディスクを挿入】ダイアログが表示されるので、ダイアログに指定されたCDを入れて、[了解]をクリックします。

【インストールの準備完了】ダイアログが表示されるので、[インストール開始]をクリックします。

CD2〜CD5、Language CDについて、上記【媒体の指定】〜【インストールの準備完了】を繰り返します。

Language CDのインストール完了後はシステムが再起動し、ログイン画面が表示されます。rootユーザでパスワードを入力するとログインできます。最初にログインすると、デスクトップの選択画面が表示されます。

◆共通デスクトップ環境(CDE)
◇Java Desktop System Release 3

Java Desktop Systemは、GNOMEベースのデスクトップ環境で、重い・障害があると不安定になる(ログインできなくなる)ことがあるので、rootとしてはCDEを選択して[了解]をクリックしておきます。

ディスプレイの設定は、EIZO FlexScan T565の場合、仕様では1280x1024/85Hz(1600x1200/75Hz)となっているので、それに合わせたモニタを指定します。

3代目PCのVMware PlayerへのDVD版11/06インストール

VMware Player 1.0.3をインストールします。

QEMU-0.8.2をダウンロードし展開します。

QEMUのコマンドqemu-imgを使ってVMwareのイメージ領域を作成します。作成時にディスクサイズを指定します。Solaris 10にCompanion CDやSunStudioなど入れると結構容量が必要になります。

C:\> qemu-img create -f vmdk C:\vmware\solaris10_11_06\solaris10.vmdk 16G
C:\>

Solaris10用のVMware設定ファイルを作成します。上で作成したイメージ領域と同じディレクトリにSolaris10.vmxというファイル名で以下の記述を行います。

config.version = "8"
virtualHW.version = "4"
memsize = "768"
displayName = "Solaris 10"
guestOS = "solaris10-64"
nvram = "Solaris10.nvram"
ide0:0.present = "TRUE"
ide0:0.fileName = "solaris10.vmdk"
ide0:0.deviceType = "disk"
ide0:0.redo = ""
ide1:0.present = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.deviceType = "cdrom-raw"
ide1:0.autodetect = "TRUE"
floppy0.fileName = "/dev/fd0"
floppy0.startConnected = "FALSE"
ethernet0.present = "TRUE"
ethernet0.connectionType = "bridged"
ethernet0.virtualDev = "e1000"
sound.present = "TRUE"
sound.virtualDev = "es1371"
pciSound.enableVolumeControl = "FALSE"
usb.present = "FALSE"
log.fileName = solaris.log
paevm = "TRUE"

memsize はSolaris OS側が使用できる物理メモリサイズ(MB)です。このPCには物理メモリ2GB搭載しているので、少々大きめに768MBをSolaris用に割いています。

guestOSでは、Solaris 10 x86 64bitモードを指定する識別子"solaris10-64"を指定しています。CPUが64bit対応のAthlon 64X2だと、ホストOS(VMwareが動くOS)が32bit版Windowsでも64bit版Solarisを動かすことができます。

作成したsolaris10.vmdkをダブルクリックで実行します。VMwareが起動します。Solaris 10のインストールメディアをドライブに入れていると起動します。以降はCD/DVDから普通にSolarisをインストールする手順と一緒になります。

4台目PCのVMware PlayerへのDVD版10/09インストール

VMware Player 3.0.1をインストールします。

VMware Playerを起動し、[新規仮想マシンの作成(N)]を選択します。「新しい仮想マシン ウィザード」ダイアログの「新規仮想マシン作成ウィザードへようこそ」画面が表示されるので、インストール元:の項で[インストーラ ディスク イメージ ファイル]にチェックを付け、右側の[参照(R)]ボタンを押します。

「ISOイメージの参照」ダイアログが表示されるので、ダウンロードしたSolarisのDVDイメージファイルを指定し、[次へ(N)]ボタンを押します。

「新しい仮想マシンウィザード」ダイアログの「仮想マシンの名前」画面が表示されるので、仮想マシン名欄と格納場所欄に適切な記述をし、[次へ(N)]ボタンを押します。

「新しい仮想マシンウィザード」ダイアログの「ディスク容量の指定」画面が表示されるので、ディスク最大サイズを適切な値(仮に16.0GB)、[仮想ディスクを複数のファイルに分割]にチェックを付け、[次へ(N)]ボタンを押します。

「新しい仮想マシンウィザード」ダイアログの「仮想マシンを作成する準備完了」画面が表示されるので、[ハードウェアをカスタマイズ]ボタンを押し、「ハードウェア」ダイアログが表示されます。
左側ペインで[メモリ]を選択、右側ペインの[この仮想マシンのメモリ]欄を適切な値(例:1536MB)に指定します。同様に、左側ペインで[プロセッサ]を選択、右側ペインの[プロセッサコアの数]欄に適切な値(実コア数以下、例:4)を入れます。仮想化エンジン項の優先モード欄は、デフォルトでは自動になっています。CPUが対応していればVT-xやAMD-Vにしてみると面白そうですが・・・。
左側ペインで[ネットワークアダプタ]を選択し、右側ペインのネットワーク接続項で、ブリッジをチェックします(これは使用する環境によって適切なものを選びます)。
左側ペインで[ディスプレイ]を選択し、右側ペインのモニタ項で、[モニタ設定を指定]にチェックを付け、モニタの解像度には、VMwareで起動時のウィンドウサイズを指定します。(例:1024x768) なお、ユニティモード使用はせず、ゲストOSのデスクトップをホストOSのデスクトップ上の一つのウィンドウとして表示するため、あまり大きな画面では邪魔になるからです。

設定完了後、VMware Playerが再起動し、Solarisのインストールが開始されます。以降はCD/DVDから普通にSolarisをインストールする手順と一緒になります。

Solarisインストール後、VMtools(Solaris用)をインストールします。

インストール時の問題解決

Realtek 8139 LANの認識

 LANコントローラがRealtek 8139のマシンにおいてネットワークの認識で以下のメッセージが表示されます。

Configuring devices.
NOTICE: rtls0 -- link down
NOTICE: rtls0 -- link up 100Mbps Full_Duplex
Using install cd in /dev/dsk/c1t0d0p0
Using RPC Bootparams for network configuration information.
Attempting to configure interface rtls0...
Skipped interface rtls0

 が、このまま気にせず続行すればOKです。

GeForce 6600のビデオ表示

 VGAカードGeForce6600の場合は、デフォルトで選択されるXF86-NV Nvidia Corporation GeForce 6600ではXの表示が崩れます。インストール時はXF86-VESA Nvidia Corporation GeForce6600に変更します。なお、インストール後はこのVESAドライバでは駄目なので、別途NVIDIAからドライバーを入手します。

"Proposed Window System Configuration For Installation:"で、

起動後のコンソール/ログへの警告メッセージ

syslogd: WARNING: loghost could not be resolved

/etc/hosts ファイルに、loghostを追加します。以下にスタンドアロン・マシンでの例を記述します。

127.0.0.1       localhost loghost
192.168.1.12    sol10 # Added by DHCP
sendmail: My unqualified host name (unknown) unknown; sleeping for retry
sendmail: unable to qualify my own domain name (unknown) -- using short name

上記2つは、sendmainを停止することにします。

# svcadm disable sendmail

Companionのインストール

Software CompanionはDVDイメージしか入手できないので、いったんDVD-Rを作成し、そこからSolaris_i386ディレクトリ以下をSolarisマシンにコピーし、インストールします。

まずDVDのトップディレクトリにあるREADMEを読むと、個別に1つずつpkgaddコマンドで指定してインストールするか、まとめて一気にインストールするか2つの方法が記述されています。ここでは、まとめて全てインストールします。

Companionのパッケージをまとめてインストール

まず、/var/tmp/adminファイルを作成せよとREADMEにあります。

mail=
conflict=nocheck
setuid=nocheck
action=nocheck
partial=nocheck
instance=overwrite
idepend=nocheck
rdepend=nocheck
space=check

次に、Solaris_i386/Packageへカレントディレクトリを移動し、pkgaddコマンドで全てのパッケージをインストールします。

# cd Solaris_i386/Packages
# pkgadd -a /var/tmp/admin -d `pwd`

以下のパッケージについてはエラーが発生しました。

OSパッチの適用

GUI

Sun Update ManagerというGUIツールでパッチの適用が実施できます。

SunStudio 11関連パッチ

SunStudio 11をインストールしていると、SunStudio11のパッチもSun Update Managerで管理されますが、なぜかSunStudio11のパッチのインストールに失敗します。

そこで、一旦失敗した後、手動でパッチを適用します。パッチのインストールに失敗した場合、/var/sadm/spoolの下にパッチが残っていますので、これを手動で適用します。

# patchadd -G /var/sadm/spool/121018-08.jar.dir/121018-08

コマンドライン

smpatchコマンドでパッチの調査・ダウンロード・適用が可能です。

smpatch get
動作環境の表示。設定項目と現在の設定内容一覧が表示されます。
smpatch set 項目名=設定値
動作環境の設定。smpatch getで一覧表示される設定項目を変更することができます。よく設定する項目は、patchpro.proxy.hostとpatchpro.proxy.portでしょう(ファイヤーウォール内からのアクセス時に設定)。
smpatch analyze
現在適用可能なパッチ情報が表示されます。少々時間がかかります。
smpatch downlaod
パッチをダウンロードします。
smpatch update
パッチを適用します。

カーネルパッチ

Sun Update Managerやsmpatchでは適用できないパッチがあります。それがカーネルパッチです。Sun Update Managerで適用するパッチのリストに登場するのですが、実行(パッチを適用)すると、以下のダイアログが表示されました。

ダウンロードのみ。手動インストールが必要:
一部のアップデートは、手動でインストールする必要があります。これらのアップデートは、インストールする
まで「有効なアップデート」に表示されます。アップデートのダウンロード先は /var/sadm/spool です。

下記掲示板にパッチ適用について議論があります。(smpatch add -i <patch-id> でいけるらしい)

118855-36カーネルパッチ適用の試行錯誤記録

Sun Update Managerでこのパッチが「手動インストールが必要」と出たので、シングルユーザモードに移行しコマンドラインでパッチを当てることにしました。

コンソールでrootでログインし、init S コマンドでシングルユーザモードへ移行し、smpatch add -i 118855-36 でパッチを適用します。

パッチ適用後、boot -rでデバイス再構成ブートをさせるとのことですが、x86の場合、SPARCのようなokプロンプトがないのでどうすればよいか?でしたが、以下URLにreboot -- -r でいけることが記載されていました。

Solaris 10 の内容

アプリケーション

StarOffice 7

初回起動すると、ライセンス確認後、インストール方法を聞いてきます。ローカルインストールとワークステーションインストールの2つから選択します。ワークステーションインストールを選びます。

Mozilla 1.7

フリー・ツール類

MySQL

/usr/sfw/binに入っています。

GIMP

/usr/sfw/binに入っています。

Apache httpd

1.3.33と2.0.55の2種類のバージョンが入っています。

設定ファイル

Apache 1.3.33用は、/etc/apacheの下に、Apache 2.0.55用は、/etc/apache2の下に入っています。

サービスの起動設定

Apache 1.3は、従来どおりrcスクリプトによる設定で制御します。Apache 2.0は、Solaris10のSMFで制御します。

Emacs

/opt/sfw/binの下に、emacs 21.3.1が入っています。

ソフトウェア開発環境

ライブラリ

MediaLib

/opt/SUNWmlib に、グラフィックス処理ライブラリ mediaLibが入っています。

Javaプログラム開発

J2SE, SDK

J2SE SDK 1.4.2_11 および J2SE SDK, 5.0 Update6がインストールされます。デフォルトではJ2SE 5.0が使用されるよう設定されています。

/usr/binの中に、java, javac, javap, javadoc,‥‥などのコマンドがあり、これらはいずれも/usr/java/binの中の同名コマンドへのシンボリックリンクとなっています。/usr/javaは、/usr/jdk/jdk1.5.0_07へのシンボリックリンクとなっています。

Solaris OSのパッチとしてJ2SE SDK, 5.0のUpdateが用意されているので、自力でバージョンアップする必要はないです。

Solarisとは別にJ2SE SDK 5.0をアップデートしようとすると、依存関係で少々やっかいです。J2SE 5.0 SDKのパッケージ名一覧と、それぞれに依存するパッケージを示します。

パッケージ名 内容 依存パッケージ
SUNWj5rt
Java実行環境
SUNWocf, SUNWjmf, SUNWapbas, SUNWjhrt, SUNWj5cfg,
SUNWjai, SUNWjavaapps, SUNWjdic, SUNWjds-registration,
SUNWjmfmp3, SUNWmozilla, SUNWjre-config, SUNWjre-config-plugin,
SUNWpool, SUNWglow, SUNWslpu, SUNWj5dev, SUNWj5dmo
SUNWj5dev
Java開発環境
SUNWj5cfg
SUNWj5man
マニュアル
SUNWj5dmo
デモ

依存パッケージを一旦アンインストールして、というのはあまりにも非現実的なので、ここでは上書きインストールを行います。

64bit版をインストールしたときは、環境変数PATHを/usr/jdk/jdk1.5.0_09/bin/amd64 に通すようにします。binまでだと32bit版を実行してしまいます。

ant

/usr/sfw/binの下に、antが入っています。バージョンは1.5.4です。

JMF: Java Media Framework

標準でインストールされています。J2SE SDK 1.4.2_11およびJ2SE SDK 5.0 Update7どちらにもインストールド・エクステンション下にJMFのライブラリが置かれています。

C/C++プログラム開発

GCC

/usr/sfw/binの下に、GCC 3.4.3が入っています。

GNU make

/usr/sfw/binの下に、GNUmake 3.80が入っています。

Perl

/usr/perl5に入っています。perlコマンドは/usr/bin/perlにシンボリックリンクがあります。

バージョンは、5.6.1、5.8.3、5.8.4が入っています。デフォルトでは5.8.4が標準として使用されます。

Python

Ruby

設定

ビデオ設定

画面解像度の変更(kdmconfig)

インストール直後に起動すると、なぜかVGA画面(640x480)となってしまいました。そこで、コンソールログインして、kdmconfigを実行して設定変更します。

# kdmconfig

【kdmconfig - Introduction and X Server Selection】画面が表示されるので、Xorg ServerかXsun Serverのどちらかを選択します。ここではXsun Serverを選択しました。

ビデオデバイスの選択

デフォルトでは、XF86-GLINT 3DLabs Permedia II 2D+3D が選択されています。
一度、3Dlabs Permedia2(8MB)を指定してみたら、Testで何も表示されずハングアップしていたようになりましたので、XF86の方を使用します。

モニタータイプの選択

MultiFrequency 95kHz (up to 1600x1200 @ 75Hz)にしてみました。

解像度は、1152x900 75Hz を選択しました。しかし、起動すると、1280x1024になってしまっています。
1152x864 **Hzを選択すると、1152x864になりました。

グラフィックス・ドライバーのインストール

グラフィックス・カード(チップ)のメーカーが専用のドライバをリリースしている場合があります。これをインストールすると、カード(チップ)のハードウェア・アクセラレーションを利用し描画が高速化します。

NVIDIA GeForce 6600

NVIDIAのサイトからSolaris x86/x64用ドライバーを入手します。

2006年12月3日現在、Version 1.0-9629が最新です。

# sh NVIDIA-Solaris-x86-1.0-9629.run
Copyright 2005 by NVIDIA Corporation.  All rights reserved.
Use is subject to license terms.
Reboot client to install driver.

<NVDAgraphicsr> のインストールに成功しました。
Copyright 2005 by NVIDIA Corporation.  All rights reserved.
Use is subject to license terms.

<NVDAgraphics> のインストールに成功しました。
# 

リブートします。再構成を行う -r オプションを指定します。

# reboot -- -r

ネットワーク設定

インストール後にネットワーク構成を変更

インストール時に設定したネットワーク構成を、その後変更する場合は、sys-unconfigコマンドを実行します。

# /usr/sbin/sys-unconfig
    :
Do you want to continue (y/n) ? y
    :

システムがリブートし、起動する途中で設定情報を問い合わせてきます。ネットワーク設定以外にもXサーバの設定やロケールなどを全て一から設定することになってやや面倒です。

手動設定のための情報

DHCPの有効・無効は、起動時に/etc/dhcp.[インタフェース名]ファイル(例:/etc/dhcp.rtls0)があるかないかで判断されます。

DHCPクライアント設定

問題:ホスト名がunknownになってしまう

DHCPでIPアドレスを取得する場合、ホスト名がunknownとなることがあります。DHCPサーバ側で、DHCPクライアントにホスト名を割り当てるように設定されていない場合です。

この場合、DHCPでIPアドレスを取得すると、毎回/etc/hostsにIPアドレスとホスト名が追記されます。この際、ホスト名がunknownとなっているのが問題点です。

対策1) /etc/nodenameにホスト名を記述する

DHCPサーバからホスト名が送られてこない場合、/etc/nodenameにホスト名を記述しておけばその名前が使用されます。

対策2) DHCPサーバへの要求にホスト名を指定する

/etc/default/dhcpagentファイルを編集し、REQUEST_HOSTNAMEをyesに設定する

REQUEST_HOSTNAME=yes

/etc/hostname.[インタフェース名]を編集し、要求するホスト名を設定する

inet hogehoge
参考

Sun製品文書

固定IP設定(IPv4)

ゲートウェイの設定

/etc/defaultrouterにゲートウェイのIPアドレスを記述します。再起動後有効になります。

192.168.0.1

オンラインで設定する場合は、routeコマンドを使用します。

# route add default 192.168.0.1
# netstat -rn

Routing Table: IPv4
  Destination    Gateway      Flags  Ref Use  Interface
--------------- ------------- ----- ---- ---- ---------
192.168.0.0     192.168.0.2   U        1    3    rtls0
224.0.0.0       192.168.0.2   U        1    0    rtls0
default         192.168.0.1   UG       1    0
127.0.0.1       127.0.0.1     UH      16  103    lo0
#
DNSの設定

DNSを利用するには、/etc/nsswitch.confをDNS用に切り替えます。

# cd /etc
# cp nsswitch.dns nsswitch.conf

次にDNSサーバのアドレスを/etc/resolv.confに記述します。

nameserver xxx.xxx.xxx.xxx

固定IP設定(IPv6)

IPv6の場合、標準的なグローバルIPアドレスは、リンクローカル上のルータから送信されるRouterAdvertisement(RA)に指定されるアドレスプレフィックス情報と自分のMACアドレスから生成するEUI-64データとを合成して付与します。

RAを使わない場合、/etc/hostname6.xxxxファイルにアドレスを記述します。なおxxxxには実際にはそのマシンのインタフェース名を指定します。

addif 2001:0db8::1/64 up

SSH環境

SSHが標準で利用可能です。特に設定することなくSSHクライアントからアクセスすることができます。

NTP(Network Time Protocol)設定

xntpdデーモンが標準でインストールされています。

NTPサーバの選択
NTPクライアント設定

/etc/inet/ntp.confファイルを作成します。

server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp

xntpdデーモンを起動します。

# svcadm enable network/ntp
# 

動作状況の確認には、ntpqコマンドが利用できます。

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset    disp
==============================================================================
*ntp3.jst.mfeed. ote-ntp1.jpnap.  2 u   58   64   37    10.71   -8.950  877.82
$ 

xntpdデーモンのログは/var/adm/messagesに出されます。

ポーリング間隔はここでは64秒ですが、xntpを起動し続けていると次第に間隔が広がっていきます。

NTPサーバ設定

公共のNTPサーバをお行儀よく利用するために、自宅マシン群のうち1台だけを公共のNTPサーバを参照するようにして、残りはこの1台に対してNTPで時刻を調整するようにします。そこで、1台を公共のNTPサーバに対するNTPクライアント兼自宅マシン用NTPサーバとして設定します。

/etc/inet/ntp.confファイルを作成します。雛形が/etc/inet/ntp.serverにあるので、それをベースに修正していきました。

server ntp.jst.mfeed.ad.jp
server 127.127.1.0
fudge 127.127.1.0 stratum 10

broadcast 224.0.1.1 ttl 4

enable auth monitor
driftfile /var/ntp/ntp.drift
statsdir /var/ntp/ntpstats/
filegen peerstats file peerstats type day enable
filegen loopstats file loopstats type day enable
filegen clockstats file clockstats type day enable

keys /etc/inet/ntp.keys
trustedkey 0
requestkey 0
controlkey 0

インターネット上のntpサーバ(ntp.jst.mfeed.ad.jp)が見つからないときはホスト上のクロック(ローカルクロック)を基準として使うように、serverに127.127.1.0を追加しています。もしホストにGPS時刻計等の基準クロックが接続されているときは、それを指定します。(ピリオド表記の3番目がクロックの種類を示しており、1はローカルのシステムクロックを意味します)

fudgeでは、ローカルのクロックはstratum 10として指定しています。

/var/ntp/ntp.driftファイルはデフォルトでは存在しないので、touchで空ファイルを作成しておきます。

Apache2の設定

Solaris 10では標準でApache 2がインストールされています。

プログラム、ライブラリ類
/usr/apache2
設定ファイル類
/etc/apache2
設定ファイルの準備

/etc/apache2/httpd.conf-example/etc/apache2/httpd.confにコピーし、内容を修正します。

# cd /etc/apache2
# cp httpd.conf-example httpd.conf
# svcadm enable apache2
# svcs apache2
STATE    STIME    FMRI
online    1:23:45 svc:/network/http:apache2

apache起動ユーザ名/グループ名

デフォルトでは、webservdというユーザ名/グループ名で実行されます。Solarisのユーザ・グループとしてデフォルトで存在しています。

NFS設定

NFSクライアント
# mount -F nfs nfsserver:/path/to/dir /mnt
# 

マウントタイプnfsを-F オプションで指定します。

デフォルトでは、NFSバージョン4を使用するので、NFSバージョン3以下のNFSサーバに接続するとエラーが発生します。

# mount -F nfs nfsserver:/path/to/dir /mnt
nfs mount: マウント: /mnt: 所有者ではありません。

その際は、-oオプションでバージョンを例えば3に指定します。

# mount -F nfs -o vers=3 nfsserver:/path/to/dir /mnt
#

ユーザー設定

新規ユーザの設定

ユーザID、グループIDを指定する

まず、グループを作成していなければ、グループをgroupaddコマンドで作成。その際グループIDを指定可能。

続いて、ユーザをuseraddコマンドで作成。その際、ユーザID、所属グループ名、ホームディレクトリのパス、使用するシェル、ホームディレクトリを作成するかを指定可能です。

# groupadd -g 3200 javanese
# useradd -u 3201 -g javanese -d /export/home/javas -s /bin/bash -m javes
# 
注記1
ホームディレクトリの指定は、本来/home/javasのように指定するのですが、ユーザ作成時はホームディレクトリの実体である/export/home/javasを作成し、その後usermodコマンドで仮想の/home/javasに変更する手順を踏みます。

usermodコマンドでユーザのホームディレクトリを仮想に変更します。

# usermod -d /home/javas javes
# 

passwdコマンドで、ユーザのパスワード(初期値)を設定します。

# passwd javas
新しいパスワード:
新しいパスワードを再入力してください:
passwd: javasのパスワードが変更されました
#
オートマウントにユーザのホームディレクトリを設定(最初に1回だけ)

Solarisでは、通常/homeはオートマウンタの管理下にあります。/export/homeの下にあるディレクトリをすべて/homeの下にオートマウントする設定を/etc/auto_homeに追記します。

+auto_home
*    localhost:/export/home/&
別マシンのディレクトリをホームディレクトリとして設定する

ネットワーク環境でどのマシンにログインしても同じホームディレクトリを使用したいことがあります。そのような場合、NFSを使いますが、オートマウントを使うと以下のように設定します。その場合、/etc/auto_homeに追記します。

+auto_home
*    localhost:/export/home/&
torutk  nfsserver:/export/home/torutk

NFSサーバとしてホームディレクトリを公開するマシンでは、公開ディレクトリを/etc/dfs/dfstabに記述しておく必要があります。変更後はshareallコマンドを実行すればOKです。

ユーザ環境設定

なにも設定していないときのデフォルト(抜粋)

IFS=$' \t\n'
LANG=ja
PATH=/usr/bin:
PS1='\s-\v\$ '
SHELL=/bin/bash
bash環境

ログインするときに適用される環境設定ファイル.bash_profileの設定を行います。

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

PATH=$PATH:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/opt/sfw/bin

bash起動時の設定は、.bashrcをそのまま利用します。
Solaris10の場合、/binは/usr/binへのシンボリック・リンクとなっています。

bashシェルが起動される度に設定される環境設定ファイル.bashrcの設定を行います。

PS1="\W$ "

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

エイリアス設定は.bashrcが煩雑になるのを嫌って別なファイルに記述しているので、その内容を取り込んでいます。

シェル環境でのエイリアス設定を.bash_aliasesに行います。

alias tar='/usr/sfw/bin/gtar'

Solaris標準のtarは、長いパスを正常に扱えない、gzip/bzip2形式をサポートしていない等で使いづらいので、GNU tarを標準で使用します。

bashのコマンド補完を使用すると、複数候補があるとき等にビープ音がピーピー鳴り響きます。これを抑制する方法を探したところ、~/.inputrcに以下を記述することで可能でした。

set bell-style none

環境設定

X font serverに日本語フォントを追加する

リモートからXDMCP経由で接続するときに、日本語フォントが表示されないことがあります。

Solaris10では、デフォルトでFont serverが稼動しています。ただし設定ファイルに日本語フォントへのパスが含まれていないので、これを追加します。設定ファイルは以下です。

/usr/openwin/lib/X11/fontserver.cfg

インストール直後の状態では以下のようにフォントパスが設定されています。(分かりやすいように改行しています)

catalogue = 
/usr/openwin/lib/X11/fonts/Type1/,
/usr/openwin/lib/X11/fonts/Type1/sun/,
/usr/openwin/lib/X11/fonts/F3bitmaps/,
/usr/openwin/lib/X11/fonts/Speedo/,
/usr/openwin/lib/X11/fonts/misc/,
/usr/openwin/lib/X11/fonts/75dpi/,
/usr/openwin/lib/X11/fonts/100dpi/,
/usr/openwin/lib/X11/fonts/TrueType

ここに、日本語フォントのパスを追記します。

/usr/openwin/lib/locale/ja/X11/fonts/75dpi/,
/usr/openwin/lib/locale/ja/X11/fonts/TT/,
/usr/openwin/lib/locale/ja/X11/fonts/TTbitmaps/

設定を変更したら、X font serverを再起動する必要があります。X font serverはデーモンとして稼動します。Solaris10では各種デーモン(サービス)を管理する新しい仕組みSMF(Service Management Facility)が導入されて、従来とは少し手順・操作方法が変わっています。

管理対象サービス一覧からX font serverを探す

# svcs -a|grep xfs
online         12:42:45 svc:/application/x11/xfs:default
#

X font serverのサービス情報詳細を見る

# svcs -l xfs
fmri         svc:/application/x11/xfs:default
name         X Window System font server
有効         true
状態         online
next_state   none
state_time   2005年03月20日 (日) 12時42分45秒
リスタータ   svc:/network/inetd:default
contract_id  87
#

注)ここではコマンドラインオプションにxfsとだけ指定しましたが、svc:/application/x11/xfs:defaultとフルに記述する方が正しいようです。

X font serverの設定を再度読み込み直す

# svcadm refresh xfs
#

デスクトップ環境をきびきびと

ロースペックなマシンでは、Solaris 10のJava Desktop Systemは重過ぎて使用に耐えられません。これはGnomeが重いということなのですが、これを設定で少しでも軽減させるようにします。

詳細は、ドキュメント「Solaris 10 Java Desktop System Release 3 Solaris 10 Collection - Japanese システム管理 8.パフォーマンスの改善」にあります。

Solarisコンテナ(zone)設定

一つの物理マシン上で複数の仮想サーバを立てるときに便利な機能です。

参考

zone状況の表示

現在のコンテナ状況を表示します。

Global zoneのみ(初期状態)
# zoneadm list -vc
  ID NAME        STATUS     PATH
   0 global      running    /
#

zoneの作成

仮想サーバごとにコンテナ(zone)を作成します。

zone名の作成とzoneの/(ルート)パスを指定
# zonecfg -z pluto
pluto: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:pluto> create
zonecfg:pluto> set zonepath=/export/home/pluto
zonecfg:pluto>
ネットワークインタフェースの設定

それぞれの非グローバルzoneは物理インタフェースを共有します。個々のzoneは論理インタフェースを割り付けます。論理インタフェースに対してIPアドレスを割り振ります。しかしながら、zone間の通信はループバックインタフェースを利用した通信となります。

zonecfg:pluto> add net
zonecfg:pluto:net> set address=192.168.0.3
zonecfg:pluto:net> set physical=rtls0
zonecfg:pluto:net> end
zonecfg:pluto>
zone設定内容の確認

設定された内容を表示します。デフォルトの設定内容も見れます。

zonecfg:pluto> export
create -b
set zonepath=/export/home/pluto
set autoboot=false
add inherit-pkg-dir
set dir=/lib
end
add inherit-pkg-dir
set dir=/platform
end
add inherit-pkg-dir
set dir=/sbin
end
add inherit-pkg-dir
set dir=/usr
end
add net
set address=192.168.0.3
set physical=rtls0
end
zonecfg:pluto>
autoboot
falseの場合、マシンの起動時にこのzoneは自動的には起動しません。trueにすると自動で起動します。
inherit-pkg-dir
非グローバルゾーンではこのファイルシステムを変更できなくなります。もし、/usr/local等を非グローバルゾーン独自に変更する場合、inherit-pkg-dirで/usrの指定を解除しておく必要があります。
zonecfg:pluto> remove inherit-pkg-dir dir=/usr 
zonecfg:pluto>
設定内容の検証
zonecfg:pluto> verify
zonecfg:pluto>
設定内容のコミット
zonecfg:pluto> commit
zonecfg:pluto>

/etc/zones/pluto.xmlに設定内容が出力されます。

zoneの設定完了状態を確認

インストールするzoneが設定済み(configured)になっているのを確認します。

# zoneadm list -vc
ID NAME       STATUS        PATH
 0 global     running       /
 - pluto      configured    /export/home/pluto
#
インストール実施
# zoneadm -z pluto install
Preparing to install zone <pluto>.
Creating list of files to copy from the global zone.
Coping <77189> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1129> packages on the zone.
Initializing package <XXX> of <1129>: percent complete: XX%
Zone <pluto> is initialized.
Installation of these packages generated warning: <SUNWxwfs>
The file </export/home/pluto/root/var/sadm/system/logs/install_log> contains a
log of the zone installation.
#
インストール確認

インストールするzoneがインストール済み(installed)になっているのを確認します。

# zoneadm list -vc
ID NAME       STATUS        PATH
 0 global     running       /
 - pluto      intalled      /export/home/pluto
#
zoneの初回インストール(初期設定)

まず非グローバルゾーンのコンソールに接続します。

# zlogin -C pluto
[ゾーン 'pluto'コンソールに接続しました]

まだplutoゾーンはブートしていないので、プロンプトは出ません。

コンソールの終了は、~を入力しCtrl+D

ここで、別なターミナルでzoneをブートします。

# zoneadm -z pluto boot

すると、非グローバルゾーンに接続したコンソールにメッセージが表示されます。

# zlogin -C pluto
[ゾーン 'pluto'コンソールに接続しました]

[NOTICE: Zone booting up]

SunOS Release 5.10 Version Generic 32-bit
Copyright 1983-2005 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: pluto
Loading smf(5) service descriptions: 57/99

最後の行のLoadingが99/99になると、言語の選択を聞いてきます。

Select a Language

  0. English
  1. Japanese
  2. es
  3. fr

Please make a choice (0 - 3), or press h or ? for help: 

1を入力しました。
次は、ロケールの選択を聞いてきます。

Select a Locale

  0. Japanese EUC (ja)
  1. Japanese EUC (ja_JP.eucJP)
  2. Japanese PC Kanji (ja_JP.PCK)
  3. Japanese UTF-8 (ja_JP.UTF-8)
  4. Go Back to Previous Screen

Please make a choice (0 - 4), or press h or ? for help: 

0を入力しました。
次は、端末種類を聞いてきます。

どのタイプの端末を使用していますか?
 1) ANSI 標準 CRT
 2) DEC VT52
 3) DEC VT100
 4) Heathkit 19
 5) Lear Siegler ADM31
 6) PC コンソール
 7) Sun コマンドツール
 8) Sun ワークステーション
 9) Televideo 910
 10) Televideo 925
 11) Wyse Model 50
 12) X 端末エミュレータ (xterms)
 13) CDE 端末エミュレータ (dtterm)
 14) その他
選択する番号を入力して、Return キーを押してください。

環境にもよりますが、今回は12を入力しました。

以降、ホスト名、ネームサービス、時刻帯、などを設定すると、非グローバルゾーンのコンソール上でOSの起動が確認できます。

# zoneadm list -vc
ID NAME       STATUS        PATH
 0 global     running       /
 2 pluto      running       /export/home/pluto
#
新規zoneの初期状態

グローバルゾーンで作成したユーザ情報はまったく引き継がれておりません。/etc/passwd、/etc/groupはSolaris OSの初期状態です。/exportもそうです。

zoneにリモートからログインするには

zloginは、ローカルのグローバルゾーンからの非グローバルゾーンへのログイン専用です。まず、zloginでローカルから非グローバルゾーンへログインし、一般ユーザを作成します。

zoneを自動起動するように設定する

グローバルゾーンにログインし、root権限で

# zonecfg -z pluto
zonecfg:pluto> set autoboot=true
zonecfg:pluto> verify
zonecfg:pluto> commit
zonecfg:pluto> exit
#

zoneの削除

zoneの状況を確認
# zoneadm list -vc
ID NAME       STATUS        PATH
 0 global     running       /
 2 pluto      running       /export/home/pluto
削除対象zoneの停止
# zoneadm -z pluto halt
# zoneadm list -vc
ID NAME       STATUS        PATH
 0 global     running       /
 - pluto      installed     /export/pluto
#
zoneのアンインストール
# zoneadm -z pluto uninstall
ゾーン pluto を uninstall してよろしいですか (y/[n])? y
# zoneadm list -vc
ID NAME       STATUS        PATH
 0 global     running       /
 - pluto      configured    /export/pluto
#
zonoの構成情報削除
# zonecfg -z pluto delete
Are you sure you want to delete zone pluto(y/[n])? y
# zoneadm list -vc
ID NAME       STATUS        PATH
 0 global     running       /

ZFSファイルシステム

Solaris 10 6/06からZFSファイルシステム機能が追加されています。これを使用してファイルシステムを作成します。

ZFS:Zettabyte File System

128bitファイルシステムで、物理ディスク構成にとらわれずファイルシステムを構成することができます。また、ミラーリング、RAID-5相当の機能を持っています。
また、圧縮処理、ダンプ&リストアなどの機能を持っています。

参考文献

初回(インストール後)設定

インストール時にはZFSでのファイルシステムを作成できないので、いったん普通のUFSでスライスを確保しておきました(/exportに割り当てたc0d0s7)。今回、このスライスをZFSに設定します。

まず、/exportをアンマウントします。

# umount /export
#

/etc/vfstabから、/exportの設定を削除します。

ZFSファイルシステムのプールを作成します。プール名にzfspool、プールするディスクパーティションをc0d0s7と指定します。-fオプションは、既にc0d0s7がUFSでファイルシステムが作られているため、強制的にZFSでファイルシステムを上書きするための指定です。

# zpool create -f zfspool c0d0s7
#

プール名と同じディレクトリ(/zfspool)に、指定したパーティションの容量がマウントされている形になります。

# df -k
:
zfspool   104251392   24  104251317  1%  /zfspool
#

ZFSのプールからファイルシステムの割り当て(/export/home)

ユーザーのホームディレクトリとして、/export/homeをZFSファイルシステムとして割り当てます。

まず、ZFSのプールから/export/home用に割り当てるZFSファイルシステムをzfsコマンドで作成(create)します。次に、このファイルシステムをマウントするポイントを指定します。この領域は、別マシンからNFSとしてアクセス可能な設定にします。圧縮機能を有効に設定しています。最大使用容量を48GBに設定しています。

# zfs create zfspool/home
# zfs set mountpoint=/export/home zfspool/home
# zfs set sharenfs=on zfspool/home
# zfs set compression=on zfspool/home
# zfs set quota=48G zfspool/home
#

設定内容を確認します。

# zfs list
NAME            USED   AVAIL  REFER  MOUNTPOINT
zfspool         110K   99.4G  24.5K  /zfspool
zfspool/home    24.5K  48.0G  24.5K  /export/home
#

応用)ZFSのファイルシステムは階層的に付け加えることができるので、このあと/export/homeの下にまたzfs createで作成したユーザ個別のファイルシステムを付けていくこともできます。ユーザごとにquotaを設定する場合などに応用できます。

ZFSのプールからファイルシステムの割り当て(/opt)

/optは、オプションソフトウェアをインストールするディレクトリとして使用されるので、運用中にどんどん消費される傾向があります。追加のHDDを足したときにマウントポイントを分けずに追加できるZFSを使うことで大いに恩恵を受けることができます。

/usrなどのOSシステムが使用する領域をZFSで設定するときは、mountpointをlegacyとし、/etc/vfstabでマウントするように設定するのがよいようです。今回、/optを例にlegacy設定を行います。

まず、現状の/optをディレクトリ名を変更します。

# mv /opt /opt_orig
#

つづいて、ZFSで/opt用ファイルシステムを作成します。

# zfs create zfspool/opt
# zfs set mountpoint=legacy zfspool/opt
# zfs set sharenfs=on zfspool/opt
# zfs set quota=32G zfspool/opt
#

マウントポイントを作成し、ZFSのマウントを実行します。

# mkdir /opt
# mount -F zfs zfspool/opt /opt
#

もともと/optにあった(現在/opt_origにある)ディレクトリ以下を、ZFSで新たに作成した/optの下へそっくりそのまま移します。

# cp -pr /opt_orig/* /opt
#

または

# cd /opt_orig
# find . -print -depth | cpio -pdm /opt
#

mv

/etc/vfstabを編集します。zfspool/opt/optにマウントする設定を追加します。

zfspool/opt  -   /opt   zfs   -   yes   -

ZFSのプロパティ

SMFで起動するサービスがZFS領域を利用するとき

zfs領域におかれたファイルを使用するサービスをSMFで設定する場合、デフォルトではSMF起動時にzfs領域のマウントが完了されていないためエラーとなることがありす。

zfs領域にアクセスするSMFのマニフェスト設定ファイルへ依存関係を追加します。

<dependency name='filesystem'
            grouping='require_all'
            restart_on='none'
            type='service'>
            <service_fmri value='svc:/system/filesystem/local' />
</dependency>

管理

管理ツール

管理コンソール(smc)

GUIの管理コンソールがSolarisにも用意されています。/var/sadm/bin/smcを管理権限を持った状態で起動します。(権限を持ったとまどろっこしい言い方をしているのは、Solaris10ではrootユーザにならなくてもある管理権限をあるユーザに付与できるからです)

GUI画面を見ると、管理コンソールはJavaアプリケーションのようです。

管理メニューは以下の構成になっています。

Solaris用オープンソース・バイナリの入手

Solaris上でオープンソース・ソフトウェアを活用するには、自力でソースコードを入手してビルドする方法もありますが、世の中ではいくつかのサイトにおいてSolaris用バイナリを構築して公開しているサイトがあります。

バイナリ・パッケージ配布サイト

  1. Sunfreeware.com(国内ミラー sunsite.tus.ac.jp
  2. Blastwave.org
  3. NSUGバイナリダウンロードサイト

ソフトウェア開発環境の構築

Sun Studio 11のインストール

SunのC/C++/Fortran開発環境です。無償化されました。

2006年1月23日現在、国際化版がダウンロード可能です。

詳細は、Sun Studio 11のインストールと使用ページ

SunStudio 10のインストール

Sunの開発環境です。60日間評価版ライセンスでインストールしてみました。

詳細は、Sun Studio 10のインストールと使用ページ

Java開発

NetBeans 4.0

バージョン管理

Subversion

入手

Solaris用バイナリ・パッケージを入手します。バイナリパッケージ公開サイトのいずれかより入手します。2007年1月8日現在、各サイトで公開されているSubversionバイナリパッケージのバージョンは、

となっています。

SunFreeware.com からSubversion 1.3.2を入手してインストールする場合

ただし、依存するライブラリが多数あります。Solaris 10(+Software Companion)には含まれないパッケージを合わせて入手します。

以下に標準で検索できないライブラリを示します。

依存ライブラリ名 Solaris 10標準 備考
libgdbm.so.3
なし Sunfreewareよりgdbm-1.8.3を入手しインストール
libdb-4.2.so
/opt/sfw/lib
LD_LIBRARY_PATHにパス設定追加
libexpat.so.0
/usr/sfw/lib
LD_LIBRARY_PATHにパス設定追加
libiconv.so.2
なし Sunfreewareよりlibiconv-1.8を入手しインストール
libgcc_s.so.1
/usr/sfw/lib
LD_LIBRARY_PATHにパス設定追加

libxml2とlibzは、Solaris10では標準パス(/usr/lib)にインストールされています。

以下の手順でインストールします。

# pkgadd -d subversion-1.3.2-sol10-x86-local
    :
# pkgadd -d gdbm-1.8.3-sol10-intel-local
    :
# pkgadd -d libiconv-1.8-sol10-intel-local
    :
#

subversionのコマンドは、/usr/local/binにインストールされます。

インストール完了後、svnsrv(Subversionサーバ)の設定を行います。subvresionのサーバー機能は、inetd経由で実行する方法、デーモンで実行する方法があります。

inetd経由

Solaris 10からinetdの管理方法が変わっています。まだ成功していないので現在調査中。

Solaris 10 inetd設定調査メモ

1. /etc/serviceにsvnserveポート番号設定を追記

svn    3690/tcp           # Subversion server
svn    3690/udp           # Subversion server

2. inetd.confスタイルのサービス起動記述ファイルを作成

inetd.conf_svnserveを作成

svnserve  stream  tcp  nowait  svn  /usr/bin/env env LD_LIBRARY_PATH=/usr/sfw/lib:/opt/sfw/lib \
/usr/local/bin/svnserve  svnserve -i -r /export/home/svn/repositories

3. inetconvコマンドでSMF管理ファイルを生成

# inetconv -i ./inetd.conf_svnserve
svnserve -> /var/src/manifest/network/svnserve-tcp.xml
svnserve-tcp.xml をインポートしています ...完了
#

/var/src/manifest/network/svnserve-tcp.xmlが生成されます。

# inetadm | grep svn
enabled  online   svc:/network/svnserve/tcp:default
#

4. SMF管理ファイルの修正

一度SMF管理ファイル生成後、サービスが起動した後は、inetconvで設定を上書きする場合-fオプションを追加します。

# inetconv -i ./inetd.conf_svnserve
inetconvd: 注意: svnserve のサービスマニフェストはすでに /var/src/manifest/networ
k/svnserve-tcp.xml として生成されています。スキップします
# inetconv -f -i ./inetd.conf_svnserve
svnserve -> /var/src/manifest/network/svnserve-tcp.xml
svnserve-tcp.xml をインポートしています ...完了
#

-fオプションで上書きします。

5. アクセス

現在、リモートからsvnでアクセスすると、

$ svn list svn://myhost/helloagain
svn: Malformed network data
$

でエラーが発生します。パケットをキャプチャすると、メッセージの中に文字列"Type /usr/local/bin/svnserve --help for usage"が含まれています。

6.(番外) SMF管理下のサービス削除

inetd管理下のものは、まずinetadm -dコマンドでdisableにします。

デーモン起動

Solaris 10デーモン起動設定のメモ

1. SMF(Service Management Facility)のマニフェストファイル作成

まず、Subversionサーバのサービス名(FMRI)を、svc:/network/subversionとしておきます。applicationかnetworkか悩みますが、apache httpdがnetworkに分類されていたので、これに準じてみました。すると、マニフェストファイルは、/var/svc/manifest/network/subversion.xmlとなります。記述方法がよく分からなかったので、標準で入っているhttp-apache2.xmlやssh.xmlなどを流用して適当にいじって記述しただけなので、これでいいか分かりません(とりあえず動いている)。

<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
    subversion daemon
-->

<service_bundle type='manifest' name='SMCsubv:subversion'>

<service
    name='network/subversion'
    type='service'
    version='1'>

    <dependency name='loopback'
        grouping='require_all'
        restart_on='error'
        type='service'>
            <service_fmri value='svc:/network/loopback:default'/>
    </dependency>

    <dependency name='physical'
        grouping='optional_all'
        restart_on='error'
        type='service'>
            <service_fmri value='svc:/network/physical:default'/>
    </dependency> 

    <dependency name='filesystem'
        grouping='require_all'
        restart_on='none'
        type='service'>
            <service_fmri value='svc:/system/filesystem/local'/>
    </dependency>                 

    <exec_method
        type='method'
        name='start'
        exec='/lib/svc/method/subversion start'
        timeout_seconds='60' />
                      
    <exec_method  
        type='method'
        name='stop'
        exec='/lib/svc/method/subversion stop'
        timeout_seconds='60' />
                      
    <property_group name='startd' type='framework'>
        <!-- sub-process core dumps shouldn't restart
            session -->
        <propval name='ignore_error' type='astring'
            value='core,signal' />
    </property_group>
                       
    <instance name='default' enabled='false' />

    <stability value='Unstable' />
                      
    <template>    
        <common_name>
            <loctext xml:lang='C'>
                    Subversion server
            </loctext>
        </common_name>
        <documentation>
            <manpage title='svnserve' section='5' manpath='/usr/local/man' />
                <doc_link name='Tigris.org'
                    uri='http://subversion.tigris.org' />
        </documentation>
    </template>    
</service>            
                  
</service_bundle>

2. 起動・終了処理の記述

マニフェストファイルからは、起動時・終了時にあるスクリプトを呼び出すようになっています。/lib/svc/method/subversionファイルを作成します。本来こんな書き方ではいけないと思われますが、ここでは安直にhttpd-apache2に倣って書いています。

#!/sbin/sh

. /lib/svc/share/smf_include.sh

LD_LIBRARY_PATH=/usr/sfw/lib:/opt/sfw/lib
export LD_LIBRARY_PATH

case "$1" in
start)
        /usr/local/bin/svnserve --daemon --root /export/home/svn/repositories
        ;;
stop)
        /usr/bin/pkill svnserve
        ;;
*)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;
esac
注記1
svnserveは/usr/sfw/lib/opt/sfw/libにあるライブラリに依存しています。デフォルトではこれらのパスは検索対象とならないので起動時にエラーが発生します。エラーは、/var/svc/log/network-subversion:default.log に吐き出されます。
注記2
subversionを非グローバルzoneで起動するようにしていたので、/lib 以下のディレクトリに書き込みを行うことはできません。そこで、回避策としてグローバルゾーンにおいてファイルを作成しました。もっともこのスクリプトは必ずしも/lib下でなくてもよいので、別な場所に作るべきだったかもしれません。

3. SMFへsubversionサービスの登録

svccfgコマンドのimportでマニフェストファイルをSMFに登録します。

# svccfg import /var/svc/manifest/network/subversion.xml
# svcs -a | grep subversion
disable 10:20:30 svc:/network/subversion:default

subversionサービスを稼動状態に設定します。

# svcadm enable subversion
# svcs subversion
STATE    STIME    FMRI
online   01:23:45 svc:/network/subversion:default

サーバー環境の構築

Windowsファイルサーバ(Samba)

Solaris 10では、Sambaが標準パッケージとしてインストールされます。

# pkginfo | grep samba
system  SUNWsmbac        samba - A Windows SMB/CIFS fileserver for UNIX (client)
system  SUNWsmbar        samba - A Windows SMB/CIFS fileserver for UNIX (Root)
system  SUNWsmbau        samba - A Windows SMB/CIFS fileserver for UNIX (Usr)
# 

起動設定では、レガシーに置かれています。

# svcs | grep samba
regacy_run    9:08:05 lrc:/etc/rc3_d/S90samba
# 

デフォルトの起動設定では、/etc/sfw/smb.confファイルがあれば起動するようになっています。

# cat /etc/rc3.d/S90samba
   :
case "$1" in
start)
        [ -f /etc/sfw/smb.conf ] || exit 0
        /usr/sfw/sbin/smbd -D
        /usr/sfw/sbin/nmbd -D
   :
# 

/etc/sfw/sbm.confファイルを作成します。

[global]
   workgroup = MYGROUP
   server string = Samba Server
   security = user
   host allow = 192.168.1. 172.
   log file = /var/log/samba.log.%m
   max log size = 50
   passdb backend = tdbsam
   socket options = TCP_NODELAY
   dns proxy = no
   
[homes]
   comment = Home Directories
   browseable = no
   writable = yes

[public]
   comment = Public Stuff
   path = /home/samba
   public = yes
   writable = yes
   

Sambaでアクセスするユーザ/パスワードを登録します。

# /usr/sfw/bin/pdbedit -a torutk
creating lame upcase table
creating lame lowcase table
new password:

retype password:

    :
# 

new password:でパスワードを入力し、retype password:で再度パスワードを入力します。

Sambaを起動します。次回からはマシン起動時に自動的に起動されます。

# /etc/init.d/samba start
#