仮想マシンを使うと1台のマシンで複数のディストリビューションを同時に使用できるが, メモリの使用量が多くなるなど, オーバヘッドが大きい. 一方で, chroot 監獄を使うと, 仮想マシンよりは手軽に他のディストリビューションを使用することができる.
仮想マシンと chroot 監獄との違いをまとめておく.
仮想マシン | chroot 監獄 | |
---|---|---|
kernel | Good; ゲストのkernel | Bad; ルートのkernelと同じ |
安全性 | Good; ゲストの動作はホストから制限できる | Bad; 監獄内からでも監獄外のプロセスへ干渉できる |
サービスなど | Bad; 様々なサービスのプロセスがゲスト中で走るので冗長 | Good; 必要なプロセスのみを走らせる |
安全性に関しても, chroot 監獄は仮想マシンに劣る. chroot 監獄内から, 監獄外のプロセスにシグナル (SIGKILLなど) を送ることもできる. 任意のディバイスにもアクセスできる. 従って, 使い方によっては, 安全性が高まるよりはむしろ危険性が高まるかもしれない. なぜなら, 監獄内のプロセスが乗っ取られればルートのシステムに危害が加えられる可能性もあるし, ルート・監獄内と複数のシステムを管理するのは手間である.
以上のような欠点はあるものの,
chroot
コマンドだけですぐに使用でき, メモリなどのリソース使用量が仮想マシンより少ないという点は魅力的である.
バイナリしか入手できないアプリケーションを動かしたいが glibc
のバージョンが異なる場合,
別のディストリビューションにしかないパッケージを使用したい場合などにおいて役に立つかもしれない.
操作手順を簡単に説明する.
ここでは, ルートに Scientific Linux 6, 監獄内に Fedora 18 と, ともに rpm にてパッケージ管理されたディストリビューションを使用する.
# mkdir -p /opt/fedora-root/var/lib/rpm
# rpm --root /opt/fedora-root/ --initdb
fedora-release
をインストールする.
$ cd /tmp && wget ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/18/Everything/x86_64/os/Packages/f/fedora-release-18-1.noarch.rpm
# rpm --root /opt/fedora-root/ -ivh /tmp/fedora-release-18-1.noarch.rpm
/dev/
と /etc/
を作る.
# mkdir /opt/fedora-root/{dev,etc}
# cp -a /dev/{null,stderr,stdout,stdin,zero,random,urandom} /opt/fedora-root/dev
# cp /etc/{resolv.conf,localtime} /opt/fedora-root/etc/
bash
と yum
をインストールする. 依存関係で他にもいろいろインストールされる.
yum --nogpgcheck --installroot=/opt/fedora-root/ install bash yum
/dev/shm
をマウント. (オプション)
# mount -t tmpfs tmpfs /opt/fedora-root/dev/shm
chroot
する.
# chroot /opt/fedora-root/
0 件のコメント:
コメントを投稿