global zone に近い環境の non-global zone を作る。 inherit-pkg-dir

Solaris10使っていたので気づかなかったのですが、OpenSolarisで zone を作るとデフォルトテンプレートが空なので、新規で zone を作ると日本語環境すら入らない素のSolarisがセットアップされます。


$ pfexec zfs create rpool/zone1
$ df -k
...
rpool/zone1 492917624 19 492917605 1% /rpool/zone1
$
$ pfexec zonecfg -z zone1
zone1: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:zone1> create
zonecfg:zone1> set zonepath=/rpool/zone1
zonecfg:zone1> add net
zonecfg:zone1:net> set physical=rge0
zonecfg:zone1:net> set address=192.168.1.14
zonecfg:zone1:net> set defrouter=192.168.1.1
zonecfg:zone1:net> end
zonecfg:zone1> verify
zonecfg:zone1> exit
$ pfexec chmod 700 /rpool/zone1
$ pfexec zoneadm -z zone1 install
...
$ pfexec zoneadm -z zone1 boot
$ pfexec zlogin -C zone1
[Connected to zone 'zone1' console]
ここで、OSのセットアップ。

でログインしてみると寂しすぎます。。。


$ env
...
TZ=PST8PDT
...
# locale -a
C
POSIX
iso_8859_1
# pkg install SUNWlang-ja
...
# locale -a
C
POSIX
iso_8859_1
ja_JP.UTF-8
#

で、本題の inherit-pkg-dir です。
共有ファイルシステム?で、こいつで指定した領域はグローバルゾーンのディレクトリをRead-Onlyでマウントします。
早い話が、設定ファイル(/etc以下)とかログ(/var)以外の実行ファイルとかライブラリの領域は、グローバルをRead-Onlyで使えばリソースとかかなり節約できたりいいんじゃない?という考え方です。
そんなんでちゃんと動くの?という考え方もありますが、Solaris10のデフォルトテンプレートでは、以下は inherit-pkg-dir になります。=> つまり大丈夫と思ってよいはず。


/lib
/sbin
/usr
/platform

なので、zonecfg の時に以下を設定すればよいです。ちなみに、zoneを作る最初にやらないとダメだと思います。


zonecfg:zone2> add inherit-pkg-dir
zonecfg:zone2:inherit-pkg-dir> set dir=/lib
zonecfg:zone2:inherit-pkg-dir> end
zonecfg:zone2> add inherit-pkg-dir
zonecfg:zone2:inherit-pkg-dir> set dir=/sbin
zonecfg:zone2:inherit-pkg-dir> end
zonecfg:zone2> add inherit-pkg-dir
zonecfg:zone2:inherit-pkg-dir> set dir=/usr
zonecfg:zone2:inherit-pkg-dir> end
zonecfg:zone2> add inherit-pkg-dir
zonecfg:zone2:inherit-pkg-dir> set dir=/platform
zonecfg:zone2:inherit-pkg-dir> end

これで、zoneのセットアップ(zoneadmのinstall->boot後)をすると、先ほどの素のセットアップと異なり以下のようにLANGの設定ができるようになります。


Select a Language

0. English
1. Japanese

inherit-pkg-dir で指定しないと本当に素のSolarisが入るので、そっからIPSで大量のパッケージ追加するのはけっこう面倒なので、デフォルトテンプレートに inherit-pkg-dir 入れるのもありかな〜と個人的には思います。

    • -

というお話を #opensolaris-jp でいろいろ教えてもらいました。