FreeBSD jail
FreeBSD jailはOSレベル仮想化機構実装の一つである。jailを使うと、管理者がFreeBSDベースの計算機システムをjailと呼ばれる独立した小さなシステムに分割できるようになる。
FreeBSD jailは、レンタルサーバ業者が業者の提供するサービスと顧客のサービスとを分離するのによく使われる。 このように分離することで安全性を確保し、管理の手間を軽減できる。 サーバデーモンの設定レベルで分離するのと違い、jailからは自分に割り当てられたファイルシステムおよびプロセス空間しか扱えないようになっている。
FreeBSD jailの利用は次のように簡単に行える。
/usr/jailのようにjailの中でrootディレクトリ (つまり、/) となるディレクトリを作る。
jailの中で動かすプログラムやファイルを投入する (典型的には、/usr/jail/binにシェルを置いたり、procfsを/usr/jail/procfsにマウントしたりする)。jail(8)のオンラインマニュアルには、make world DESTDIR=/usr/jailとmake distribution DESTDIR=/usr/jailでこの作業を行うことが出来ると書いてあるが、必ずしもこの方法をとる必要はない。
/usr/jail/devにdevfsをマウントする。(デバイスノード無しでも動作するが、非常に制限が強い)
最後に、jailコマンドでjail内のshを使って/etc/rc initスクリプトを"仮想的に"起動する (例 jail /usr/jail hostname 10.0.0.22 /bin/sh /etc/rc)。
こうすることで、jailのコンテキストでいくつかのプロセスが実行される。そして、中で起動したプロセスはjailの中のプロセスの操作しかできず、jailのルートファイルシステムとして指定されたファイルシステム (ここでは、/usr/jail) の外にあるファイルをアクセスできなくなる。
jailを使い始めるときはjail(8)のオンラインマニュアルが参考になる。