OmniOSをとりあえず使えるようにする

タイトル通り.

初期設定

基本的なドキュメントは http://omnios.omniti.com/wiki.php/GeneralAdministration を参考にしながら進めます。

ユーザ追加

とりあえず root で入って パスワード変更&ユーザ追加 :

# passwd root
# useradd -m -d /export/home/USERNAME -g staff
# passwd USERNAME

サービス起動・停止

サービスのステータスは svcs コマンドで取得 / 有効/無効は svcadm で設定

# svcs
# svcadm [ enable / disable ] SERVICE_NAME
# svcadm [ start / stop / restart ] SERVICE_NAME

ネットワーク設定

dladmで物理インターフェイス名が取得出来ます

# dladm show-phys
LINK MEDIA    STATE SPEED DUPLEX DEVICE
rge0 Ethernet up    100   full   rge0

ipadm でIPインターフェイスを作り,それに対してIP設定を行います。IPv4 DHCP環境の場合は :

# ipadm create-if rge0
# ipadm create-addr -T dhcp rge0/v4

ホスト名

インストール中に設定できますが,後から変更したくなった場合は :

# cat "新ホスト名" > /etc/nodename
# svccfg -s svc:/system/identity:node setprop config/nodename=新ホスト名
# svcadm refresh svc:/system/identity:node
# svcadm restart svc:/system/identity:node

パッケージのアップデート

http://omnios.omniti.com/wiki.php/Packaging を参考にしてリポジトリを追加 :

# pkg set-publisher -g http://pkg.omniti.com/omniti-ms/ ms.omniti.com
# pkg set-publisher -g http://pkg.cs.umd.edu/ cs.umd.edu
# pkg set-publisher -g http://pkg.niksula.hut.fi/ niksula.hut.fi
# pkg set-publisher -g http://omnios.blackdot.be/ omnios.blackdot.be

アップデートは以下のコマンドで実施 :

# pkg refresh --full
# pkg update -v

gcc

http://omnios.omniti.com/wiki.php/DevEnv を参照して進めます。これを書いてる時点では gcc 4.8 が stable ですが、gcc48 をパッケージからインストールすると ruby のコンパイル中に gcc が segfault しました

仕方ないので LTS な gcc47 を pkg で入れます :

$ sudo pkg install developer/gcc47 
  developer/object-file 
  developer/linker 
  developer/library/lint 
  developer/build/gnu-make 
  system/header 
  system/library/math/header-math

パッケージからインストールされるバイナリは /opt 下に収まります。/opt/gcc-4.7.2/bin に PATH 通しておきましょう。

次に crle コマンドで /opt/gcc-4.7.2/lib をライブラリパスに登録します。

現状のライブラリパスを表示するには :

$ crle -v 
Default configuration file (/var/ld/ld.config) not found
Default Library Path (ELF): /lib:/usr/lib  (system default)
Trusted Directories (ELF): /usr/lib/secure  (system default)

ld.config を生成して、現在 (デフォルト状態) のライブラリパスを書き込み :

$ sudo crle -c /var/ld/ld.config -l /lib:/usr/lib

gcc のライブラリパスを追記して完了:

$ sudo crle -u -l /opt/gcc-4.7.2/lib

このへんでミスるとほぼ全てのコマンド (shared library な binary の全て) が実行できなくなります。

最後に GNU tar と make もインストール。BSD/SysVではお馴染みの gtar / gmake という名前でインストールされます :

$ sudo pkg install gnu-tar gnu-make

Ruby

https://www.ruby-lang.org/ja/downloads/ から Ruby 2.1.0 の source tarball をダウンロードし

$ gtar zxf ruby-2.1.0.tar.gz

$ cd ruby-2.1.0 
$ ./configure --with-arch=x86_64 && gmake && sudo gmake install

MariaDB

https://downloads.mariadb.org/ から Solaris11用のバイナリを落としてインストールします

基本的に INSTALL-BINARY に書いてあることをそのまま実行で問題ありませんが,ユーザ mysql と グループ mysql はデフォルトで存在したのでそのまま使います。
さらに幾つかの起動スクリプト (e.g. bin/mysqld_safe) の中で /usr/local/mysql というパスをハードコードしているため、インストール先をそちらに合わせます。

$ tar zxf mariadb-X.X.X-solaris11-x86_64.tar.bz
$ sudo chown -R mysql:mysql mariadb-X.X.X-solaris11-x86_64
$ mv mariadb-X.X.X-solaris11-x86_64 /usr/local/mysql
$ cd /usr/local/mysql && sudo scripts/mysql_install_db --user=mysql 
$ sudo chown -R root .
$ sudo chown -R mysql data

次に SMF へMariaDBを登録します。手順は https://blogs.oracle.com/ritu/entry/how_to_configure_mysql_to を参照。

ただし,現在では manifest の先頭にDTDの宣言が必要です。右ページを参考にして修正が必要です : http://findasolution.forums-free.com/svccfg-document-has-no-dtd-t39.html

参考ページのとおりに mysql.xml と mysql スクリプトが書き上がったら、以下のように投入 :

$ sudo mkdir /var/svc/manifest/application/database
$ sudo chgrp sys /var/svc/manifest/application/database
$ sudo vi /var/svc/manifest/application/database/mysql.xml # mysql.xmlを投入して
$ sudo vi /lib/svc/method/mysql # scriptを投入して
$ sudo chmod 555 /lib/svc/method/mysql
$ sudo chgrp bin /lib/svc/method/mysql
$ sudo /usr/sbin/svccfg import mysql.xml

これで SMF の管理下になりました :

$ svcs mysql
STATE    STIME   FMRI
disabled         svc:/application/database/mysql:mariadb_version55

$ sudo /usr/sbin/svcadm mysql enable
$ svcs mysql
STATE  STIME    FMRI
online 11:26:14 svc:/application/database/mysql:mariadb_version55