現実問題としてのバージョン固定化
管理の簡単さやセキュリティの面などいくつかの側面から,
しかし,
つまり,
複数のバージョンのユーザランドを混在させる
こうした場合にはいくつか対処方法がありますが,
アプリケーションによっては特定のバージョンでないといろいろ都合が悪いとか,
この方法はXenやKVM,
Jailってなに
Jailは最初にFreeBSDに実装された区画化技術の1つで,
UNIX系のオペレーティングシステムは基本的にスーパーユーザ(root)とそれ以外のユーザと言う区別しかもっておらず,
Jailはこれを可能にする技術で,
この機能を利用すれば,
9.3-RELEASEのJailを作ってみる
9.3-RELEASEのJail環境を作るには,
図1 Jail環境を用意する
# mkdir /path/to/j9 # cd /path/to/j9/ # fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/9.3-RELEASE/base.txz # tar zxpf base.txz # rm base.tgz
base.txzを展開するとルートディレクトリに展開されるいつものファイルやディレクトリがあることを確認できます。
図2 配布物を展開すればそのまま利用できる
# tree -L 1 . ├── COPYRIGHT ├── bin ├── boot ├── dev ├── etc ├── lib ├── libexec ├── media ├── mnt ├── proc ├── rescue ├── root ├── sbin ├── sys -> usr/src/sys ├── tmp ├── usr └── var 15 directories, 2 files #
ここでは/Users/daichi/j9というディレクトリにファイルを展開したので,
リスト1 /etc/jail.confに追加する設定
j9 {
jid = 9;
name = j9;
path =/Users/daichi/j9;
ip4.addr = 192.168.1.252;
host.hostname = jail9.ongs.co.jp;
allow.raw_sockets;
exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
interface = bge0;
mount.devfs;
}
意味は書いてあるとおりですが,
- jid:JailのID番号
- name:Jailの名前
- ip4.addr:Jailに割り当てるIPv4アドレス
- host.hostname:Jailに割り当てるホスト名
- allow.raw_sockets:ping(8)が通るようにする
- exec.start:起動時の処理
- exec.stop:終了時の処理
- interface:割り当てるホスト側のNIC
- mount.dev.fs:/dev/を生やす
いろいろな設定ができます。このあたりの設定はjail.conf(5)のオンラインマニュアルにまとまっていますので,
Jailを作成したら次のようにコマンドを実行して環境を起動します。
図3 作成したJailの起動
# service jail start j9 Starting jails: j9. #
Jail環境はjls(8)コマンドで表示させることができます。ここでは今作成したj9というJail以外にもj1という環境が動作していることがわかります。
図4 作成したJail環境を一覧表示
# jls JID IP Address Hostname Path 1 192.168.1.251 jail1.ongs.co.jp /Users/daichi/j1 9 192.168.1.252 jail9.ongs.co.jp /Users/daichi/j9 # jls -v JID Hostname Path Name State CPUSetID IP Address(es) 1 jail1.ongs.co.jp /Users/daichi/j1 j1 ACTIVE 2 192.168.1.251 9 jail9.ongs.co.jp /Users/daichi/j9 j9 ACTIVE 3 192.168.1.252 #