Ubuntu 8.04 LTS で OpenVZ
こちら (OpenVZ - Community Help Wiki) の情報の通りでインストール出来ます.
インストール
まず,OpenVZ カーネルと vzctl (操作コマンド群) をインストールし,標準カーネルを削除します.
$ sudo apt-get install linux-openvz vzctl $ sudo apt-get remove --purge --auto-remove linux-image-.*server
次に sysctl.conf の編集.vm.mmap_min_addr は,参考ページには書かれてなかったけど,sysctl -p やったら,そんなキーはないと言われてコメントアウトしたもの.
$ diff /etc/sysctl.conf.dist /etc/sysctl.conf 21c21 < vm.mmap_min_addr = 65536
-
- -
$ sudo sysctl -p /etc/sysctl.conf
OpenVZ 関係のファイルが /var/lib/vz 以下に入りますが,vzctl パッケージで入るツールの中には /vz 以下を参照しているやつもある(?)ので,リンクしておきます.
$ sudo ln -s /var/lib/vz /vz
テンプレート作成
http://openvz.org/download/template/cache/ からダウンロードすれば,テンプレートキャッシュは一発ですが,自作してみます.
chroot 環境作成用のテンポラリディレクトリを作成して debbootstrap コマンドを実行します.
$ mkdir hardy-chroot $ sudo debootstrap --arch i386 hardy hardy-chroot http://ftp.riken.jp/pub/Linux/ubuntu/
これで作られた chroot 環境にテンプレートに必要な処理をやっていきます.コンテナ(CT)作成に必要なテンプレートキャッシュを作ります.
まずは,この環境を id: 777 の CT とするために,/vz/private/777 以下に mv して,CT の設定を適用します.vps.basic は /etc/vz/conf/ve-vps.basic.conf-sample が適用されます.ここに ve-vps.hoge.conf-sample という名前でリソース情報などを書いたファイルを作れば vps.hoge という名前で指定可能です.
$ sudo mv hardy-chroot /var/private/777 $ sudo vzctl set 777 --applyconfig vps.basic --save
これで 777 番の CT 用の設定ファイルが /etc/vz/conf/777.conf に出来ているはず.
$ echo "OSTEMPLATE=ubuntu-8.04" | sudo tee -a /etc/vz/conf/777.conf >/dev/null
起動するために IP アドレスとかリゾルバの設定を仕込みます (アドレスは例ね).udev が起動するようになっていると,CT が起動してこないみたいなので,ここだけは CT 稼働前に削除.
$ sudo vzctl set 777 --ipadd 192.168.0.10 --save $ sudo vzctl set 777 --nameserver 192.168.0.2 --save $ sudo rm /vz/private/777/etc/rcS.d/S10udev /vz/private/777/etc/rc2.d/S11klogd
これで start 出来ます.
$ sudo vzctl start 777 $ sudo vzlist -a VEID NPROC STATUS IP_ADDR HOSTNAME 777 8 running 192.168.0.10 -
後は実際に動いている CT 上で作業します.不要なパッケージの削除.
$ sudo vzctl enter 777 # apt-get remove --purge busybox-initramfs console-setup dmidecode eject \ ethtool initramfs-tools klibc-utils laptop-detect libiw29 libklibc \ libvolume-id0 mii-diag module-init-tools ntpdate pciutils pcmciautils ubuntu-minimal \ udev usbutils wireless-tools wpasupplicant xkb-data tasksel tasksel-data # apt-get remove --purge --auto-remove dhcp3-client dhcp3-common # rm -rf /lib/udev # initctl stop tty1 # initctl stop tty2 # initctl stop tty3 # initctl stop tty4 # initctl stop tty5 # initctl stop tty6 # rm /etc/event.d/tty*
これは参考ページに書いてあるけど必須じゃないと思う.まあ Ubuntu だから root ログインは無効ってのはソレらしいけど.modprobe 作ってるのは IPv6 使うとき必要みたい.
(CT上で) # usermod -p '!' root # ln -s /bin/true /sbin/modprobe
CT上の /etc/apt/sources.list を作成します.こんな内容.
# Binary deb http://jp.archive.ubuntu.com/ubuntu/ hardy main restricted universe multiverse deb http://jp.archive.ubuntu.com/ubuntu/ hardy-updates main restricted universe multiverse deb http://security.ubuntu.com/ubuntu hardy-security main restricted universe multiverse # Binary Canonical # deb http://archive.canonical.com/ubuntu hardy partner # Binary backport # deb http://jp.archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse # Source # deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy main restricted universe multiverse # deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy-updates main restricted universe multiverse # deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted universe multiverse # Source backport # deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse # Source Canonical # deb-src http://archive.canonical.com/ubuntu hardy partner
で,CT 内を最新に.
(CT上で) # apt-get update # apt-get upgrade
あとは,インストールされてないけど,必要なパッケージを入れます.例えば
# apt-get install ssh
df の出力なんかをちゃんとするために
(CT上で) # rm /etc/mtab # ln -s /proc/mounts /etc/mtab # update-rc.d -f mtab.sh remove
そして諸々のデフォルトを...
(CT上で) # echo "localhost" > /etc/hostname # echo "127.0.0.1 localhost.localdomain localhost" > /etc/hosts # cd /dev ; /sbin/MAKEDEV ptyp
あとはテンプレートとしては設定されている必要のない情報を消します.例えばリゾルバなんかは,CT 毎に設定ちがいますから.あと,不要なキャッシュ,ログの削除.
(CT上で) # > /etc/resolv.conf # apt-get clean # > /var/log/messages; > /var/log/auth.log; > /var/log/kern.log; > /var/log/bootstrap.log; > /var/log/dpkg.log; > /var/log/syslog; > /var/log/daemon.log; > /var/log/apt/term.log; rm -f /var/log/*.0 /var/log/*.1 /var/log/*.gz # exit
これで CT 上の作業終わり.IPアドレス削除して,停止.
$ sudo vzctl set 777 --ipdel all --save $ sudo vzctl stop 777
最後に母艦側でテンプレートキャッシュを作ります.
$ cd /vz/private/777 $ sudo tar zcvf tar zcvf /vz/template/cache/ubuntu-8.04-i386-minimal.tar.gz .
後始末 (母艦)
$ sudo vzctl destroy 777 $ sudo rm -f /etc/vz/conf/777.conf.destroyed
あとはこんな感じで CT 作れるはず.
$ sudo vzctl create 123456 --ostemplate ubuntu-8.04-i386-minimal