以前,lxc-0.6.2 で行なったときは何事もなくうまくいったのですが,今回 lxc がバージョンアップして,イマイチうまくいかない部分があったので,とりあえず方法をメモ.
カーネル再構築
Plamo 標準カーネルは cgroup など,lxc の動作に必要なオプションが有効になっていません.以前の設定 (lxc (2))そのままでいけると思います.
ブリッジ設定
こんな感じ]でブリッジを設定します.普通に作っているだけで lxc 特有のものはありません.
lxc の make
lxc-0.7.2.tar.gz を取得して展開します.たぶん,そのまま (docbook2man が存在する状態) では man の make に失敗するので,無効化しておきます.
$ ./configure --disable-doc $ make # make install
Plamo 用はパッケージは
以下に置いてありますので,取得後 installpkg コマンドでインストールしても構いません.
コンテナの準備
以前の lxc(3)で書いたように OpenVZ 用の debian の precreated テンプレートキャッシュを取得してみます.ここはお好きなように,ですね.
lxc-debian などのコンテナ作成スクリプトは,以前は /usr/bin なんかに置かれていましたが,今回から /usr/lib/lxc/template 以下に置かれています.
デフォルトでは lxc のコマンド群は /var/lib/lxc 以下にコンテナがあるとして見にいきますので,
# mkdir -p /var/lib/lxc
で作成しておきます.
ここで,例えば "debian" というコンテナを作成する場合は,
# mkdir -p /var/lib/lxc/debian/rootfs
という風にディレクトリを作成しておきます.debian 環境なんかで lxc-debian コマンドを使う場合は /var/lib/lxc/debian まで指定すれば,rootfs は自動的に作ってくれますが,今回は Plamo で使うので,事前に作っておきます.
/var/lib/lxc/debian/rootfs 以下に,事前に取得した OpenVZ 用のテンプレートキャッシュを展開します.
# tar zxvf debian-5.0-x86.tar.gz -C /var/lib/lxc/debian/rootfs
展開した状態で lxc-debian スクリプトを使って設定を手抜きしますので,このスクリプトを適当なディレクトリにコピーします.で,debootstrap など Plamo で動かない部分をコメントアウトします.
# cp /usr/lib/lxc/template/lxc-debian . # vi lxc-debian # diff -u /usr/lib/lxc/templates/lxc-debian lxc-debian --- /usr/lib/lxc/templates/lxc-debian 2010-09-14 09:00:00.000000000 +0900 +++ lxc-debian 2010-09-17 15:31:12.000000000 +0900 @@ -273,11 +273,11 @@ exit 0 fi -type debootstrap -if [ $? -ne 0 ]; then - echo "'debootstrap' command is missing" - exit 1 -fi +#type debootstrap +#if [ $? -ne 0 ]; then +# echo "'debootstrap' command is missing" +# exit 1 +#fi if [ -z "$path" ]; then echo "'path' parameter is required" @@ -291,11 +291,11 @@ rootfs=$path/rootfs -install_debian $rootfs -if [ $? -ne 0 ]; then - echo "failed to install debian" - exit 1 -fi +#install_debian $rootfs +#if [ $? -ne 0 ]; then +# echo "failed to install debian" +# exit 1 +#fi configure_debian $rootfs $name if [ $? -ne 0 ]; then
この後 lxc-debian を実行します.以下のように実行すると,/var/lib/lxc/debian/config という設定ファイルが生成されます.ネットワーク関係の設定がなされていませんので,以下の例の最後の部分のように設定を追加します.
# ./lxc-debian -p /var/lib/lxc/debian # cat /var/lib/lxc/debian/config lxc.tty = 4 lxc.pts = 1024 lxc.rootfs = /var/lib/lxc/debian/rootfs lxc.cgroup.devices.deny = a # /dev/null and zero lxc.cgroup.devices.allow = c 1:3 rwm lxc.cgroup.devices.allow = c 1:5 rwm # consoles lxc.cgroup.devices.allow = c 5:1 rwm lxc.cgroup.devices.allow = c 5:0 rwm lxc.cgroup.devices.allow = c 4:0 rwm lxc.cgroup.devices.allow = c 4:1 rwm # /dev/{,u}random lxc.cgroup.devices.allow = c 1:9 rwm lxc.cgroup.devices.allow = c 1:8 rwm lxc.cgroup.devices.allow = c 136:* rwm lxc.cgroup.devices.allow = c 5:2 rwm # rtc lxc.cgroup.devices.allow = c 254:0 rwm # mounts point lxc.mount.entry=proc /var/lib/lxc/debian/rootfs/proc proc nodev,noexec,nosuid 0 0 lxc.mount.entry=devpts /var/lib/lxc/debian/rootfs/dev/pts devpts defaults 0 0 lxc.mount.entry=sysfs /var/lib/lxc/debian/rootfs/sys sysfs defaults 0 0 # これ以下は追加するモノ. lxc.utsname = debian lxc.network.type = veth lxc.network.flags = up lxc.network.link = br0
cgroup のマウント
fstab に cgroup のマウントをするように行を追加します.例えば,
none /cgroup cgroup default 0 0
この例だと /cgroup ディレクトリの作成をお忘れなきよう.
# mkdir /cgroup # mount /cgroup
これで
# lxc-start -n debian
とやれば debian が起動します."-d" オプションを追加すれば,バックグラウンドで起動しますので,sshd が設定されていれば ssh で,そうでなければ,
# lxc-console -n debian Type <Ctrl+a q> to exit the console Debian GNU/Linux 5.0 debian tty1 debian login:
みたいにログインプロンプトが出てきます.
サーバとして X なしで母艦を動かしていて,コンテナを起動させるのなら,これで OK です.評価のために Desktop 環境で lxc を動かすのなら,Plamo の場合,これだと Desktop 環境で新たにターミナル (xterm とか gnome-terminal とか...) が開かなくなります. Debian Squeeze や Ubuntu 10.04 でやったら何の問題もなく動きますが... (なぜこの違いが出てくるかは分かりません,教えてプリーズ)
(続く)