本当に試しただけ.ほぼ自分用のメモです.
まあ,結論としては,まだ libvirt でコンテナを起動する意味はあまりないなあ,というところです.
Ubuntu 13.04 on Ubuntu 13.04
Ubuntu の文書 だといくつか注意点が挙がってますね.主に Linux Containers との比較という意識で.
- 設定ファイルが libvirt のものになる.当たり前.lxc のやつは使えません
- コンテナを作成するツールはないから自分で作ってね
- デフォルトではコンテナに /dev/console がない
- コンテナのリブートと完全なシャットダウンはまだサポートされていない (完全なシャットダウンってなんだ?)
それでもさすがに Ubuntu.やはりいちばんお気軽に試せます.
- 作成は lxc-create を使えば OK です.
# lxc-start -n ct01 -t ubuntu
- 私は軟弱者なので virt-manager を入れて,コンテナの root として /var/lib/lxc/ct01/rootfs を指定して設定ファイルを作成しています.
これで普通に起動します.
# virsh -c lxc:/// virsh にようこそ、仮想化対話式ターミナルです。 入力: 'help' コマンドのヘルプ 'quit' 終了 virsh # start test01 ドメイン test01 が起動されました virsh # console test01
とすると
Ubuntu 13.04 test01 tty1 test01 login: ubuntu Password: Last login: Thu Jun 27 10:30:28 UTC 2013 on pts/0 Welcome to Ubuntu 13.04 (GNU/Linux 3.8.0-21-generic x86_64) * Documentation: https://help.ubuntu.com/ ubuntu@test01:~$ uname -a Linux test01 3.8.0-21-generic #32-Ubuntu SMP Tue May 14 22:16:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux ubuntu@test01:~$ $ sudo shutdown -h now sudo: 端末 (tty) が存在せず、パスワードを尋ねる (askpass) プログラムが指定されていません
こんな感じで ^^;
問題点
- 上記の通り sudo できません.
- /etc/init には tty1 〜 4 まで定義がありますが 2 〜 4 は存在しないので syslog にエラーが出続けます.
解決方法はあるのかもしれませんが...
Plamo 5.1 on Plamo 5.1
この環境でコンテナ使ってる人はきっと片手で数えられるだろう Plamo on Plamo です.こちらも私が作成している lxc パッケージと libvirt パッケージを使います.
- 作成は lxc-create で
# lxc-create -n ct01 -t plamo
作成後に config ファイルででネットワークを有効にしたり微調整をします. - Ubuntu と同様に virt-manager を起動してコンテナを新規作成します.
以上でなんの問題もなくコンテナは起動します.syslog などを見て,dnsmasq で与えられたアドレスに対して ssh で接続したら接続可能です (コンテナの Plamo ツリー内の hosts.allow/deny の調整は必要).
問題点
しかし,virt-manager で開いたコンソール (っぽいもの) や,virsh console で繋いだところからログインができません.これは少しコンテナ内で調整が必要です.
- libvirt は /dev/console がありませんので,lxc-plamo が作成する inittab の console の行を削除する必要があります.同じく tty2, tty3, tty4 もないので,この行も削除です.
- lxc-plamo テンプレートは root ユーザのパスワードを設定するだけなので root でログインが必要です.しかし,この時の libvirt のコンソールのデバイスは /dev/pts/0 などになりますので /etc/securetty に追記する必要があります.(もしくは予め chroot useradd しておくか)
- etc/pam.d/login で "session required pam_loginuid.so" の行をコメントアウトする必要があります.そもそも Plamo ってこの行要らないんじゃ? と思わなくもないですが,コンテナの時はこれが有効になっているとログインできません.
この 2 つで問題なく virt-manager や virsh console で開いたコンソールからログイン可能です.
# virsh -c lxc:/// virsh にようこそ、仮想化対話式ターミナルです。 入力: 'help' コマンドのヘルプ 'quit' 終了 virsh # start test02 ドメイン test02 が起動されました virsh # console test02
と実行すると
Welcome to Linux 3.9.3-plamo64-karma. test02 login: root Password: Last login: Thu Jun 27 19:20:26 JST 2013 on pts/0 root@test02:~# uname -a Linux test02 3.9.3-plamo64-karma #2 SMP PREEMPT Thu May 30 21:27:25 JST 2013 x86_64 GNU/Linux # shutdown -h now Broadcast message from root@test02 (pts/0) (Thu Jun 27 19:23:38 2013): The system is going down for system halt NOW! INIT: Switching to runlevel: 0 INIT: Sending processes the TERM signal : (略)
とこんな感じになります.