inherit-pkg-dirで指定されたディレクトリ以下を書き込み可能にするには
Solaris10において、non-globalゾーン(ローカルゾーン)は globalゾーンから継承するディレクトリを inherit-pkg-dir
というリソースタイプで指定し作成される。デフォルトでは /usr, /lib, /platform, /sbin の4つが指定されている。
ローカルゾーン側ではそれらのディレクトリは lofs で Read-Only
でマウントされるため一切の書き込みは禁じられている。一般的に上記ディレクトリは運用中に書き込みの発生する場所ではないが、例えば
/usr/local などはフリーソフトウェアなどのインストール先として使われることも多く、場合によっては不便に感じることもあるかもしれない。
また、inherit-pkg-dir の指定から /usr を外せば、その点は解決できるが、/usr
以下は大容量であることや、globalゾーンで適用したパッチがローカルゾーンに反映されないなど、管理上の不都合が生じてくる。
そこで、ここではローカルゾーンの /usr/local だけを簡単に書き込み可能にする方法を紹介する。
【検証環境】
# more /etc/release
Solaris 10 3/05 s10_74L2a SPARC
Copyright
2005 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 22 January 2005
# uname -a
SunOS s10test3 5.10 Generic sun4u sparc SUNW,Ultra-5_10
コマンド操作は簡単で既にインストールされているzoneに対しても適用できる。
まずローカルゾーン側でマウントポイントとなる/usr/localをグローバルゾーンで作成する。
global#
mkdir /usr/local
また、ローカルゾーン側でこの/usr/localにマウントさせる領域を用意する。空きスライスがあればそれを使ってもよいが、ここではお手軽にグロー
バルゾーンの適当な領域(/opt/zone1とする)を lofs でマウントする方法を使う。
というわけで/opt/zone1 ディレクトリを作成する。
globa#
mkdir /opt/zone1
あとは以下のように zonecfg コマンドで fs リソースの設定をするだけ。
#
zonecfg -z zone1
...
zonecfg:zone1>
add fs
zonecfg:zone1:fs>
set
dir=/usr/local
zonecfg:zone1:fs>
set
special=/opt/zone1
zonecfg:zone1:fs>
set type=lofs
zonecfg:zone1:fs>
end
zonecfg:zone1>
...
あとは構成変更したゾーンをリブートするだけで完了。
これでローカルゾーン側で/usr/localにインストールされるパッケージなどが自由にpkgaddできるようになる。
ちなみに空きスライスを割り当てる方法は以下の通り。
#
zonecfg -z zone1
...
zonecfg:zone1>
add fs
zonecfg:zone1:fs>
set
dir=/usr/local
zonecfg:zone1:fs>
set
special=/dev/dsk/c0t1d0s3
zonecfg:zone1:fs>
set
raw=/dev/rdsk/c0t1d0s3
zonecfg:zone1:fs>
set type=ufs
zonecfg:zone1:fs>
end
zonecfg:zone1>
...
Solaris系技術トレーニング一覧