■chroot環境のsidでSL5/6を導入、ホストのSqueezeに移動する
chroot環境のsidで、rinseを使ってCentOS5/6のchroot環境を構築
http://d.hatena.ne.jp/labunix/20130313
■rinseの導入は下記。proxyは「wgetrc」を編集
$ sudo chroot /home/labunix/cifs/sid apt-get install -y rinse
■chroot環境のsidにrootログイン
SLC5/6を導入、初期設定。
名前はsid/squeezeと被らないようにループしたいので、cslc-[56]とする。
$ sudo sudo schroot -c sid-root -p
(chroot-sid)# ls /etc/rinse/slc-*
/etc/rinse/slc-5.packages /etc/rinse/slc-6.packages
(chroot-sid)# PROXY="http://proxy-ip:8080/"; \
for n in `seq 5 6`;do \
mkdir /var/local/cslc-$n; \for n in `seq 5 6`;do \
rinse --directory=/var/local/cslc-$n --distribution=slc-$n --arch i386 ; \
echo "proxy=$PROXY" | \
tee -a /var/local/cslc-$n/etc/yum.conf; \
cp /etc/profile.d/proxy.sh /var/local/cslc-$n/etc/profile.d/ ; \
cp /etc/wgetrc /var/local/cslc-$n/etc/ ; \
mount -t proc proc /var/local/cslc-$n; \
chroot /var/local/cslc-$n yum update; \
chroot /var/local/cslc-$n yum upgrade; \
chroot /var/local/cslc-$n rpm -qa | grep wget >/dev/null 2>&1 || \
chroot /var/local/cslc-$n yum install -y wget; \
umount /var/local/cslc-$n/proc
done
(chroot-sid)
■chroot環境のsidからホストのsqueezeに移動
$ sudo mv /home/labunix/cifs/sid/var/local/cslc-[56] /home/labunix/cifs/
$ echo "proc /var/local/cslc-5/proc proc defaults 0 0
/tmp /var/local/cslc-5/tmp none bind 0 0
proc /var/local/cslc-6/proc proc defaults 0 0
/tmp /var/local/cslc-6/tmp none bind 0 0
" | sudo tee -a /etc/fstab
$ sudo mount -a && mount | grep cslc
mount: mount point /var/local/cslc-5/proc does not exist
mount: mount point /var/local/cslc-5/tmp does not exist
mount: mount point /var/local/cslc-6/proc does not exist
mount: mount point /var/local/cslc-6/tmp does not exist
$ echo "[cslc-5]
description=Debian cslc-5
directory=/home/labunix/cifs/cslc-5
users=labunix
[cslc-6]
description=Debian cslc-6
directory=/home/labunix/cifs/cslc-6
users=labunix
[cslc-5-root]
description=Debian cslc-5
directory=/home/labunix/cifs/cslc-5
users=root
[cslc-6-root]
description=Debian cslc-6
directory=/home/labunix/cslc-6
users=root
" | sudo tee -a /etc/schroot/schroot.conf > /dev/null
■ユーザとログイン設定
$ for n in `seq 5 6`;do \
echo "chroot-cslc-$n" | \
sudo tee -a /home/labunix/cifs/cslc-$n/etc/debian_chroot
sudo chroot /home/labunix/cifs/cslc-$n id labunix | grep 500 || \
sudo chroot /home/labunix/cifs/cslc-$n useradd labunix
sudo chroot /home/labunix/cifs/cslc-$n usermod -u 1000 labunix; \
sudo chroot /home/labunix/cifs/cslc-$n groupmod -g 1000 labunix; \
sudo chroot /home/labunix/cifs/cslc-$n passwd labunix; \
done
■SLC5ではGIDの変更だけでは所属グループの変更がされなかったので。
$ sudo chroot /home/labunix/cifs/cslc-5/ usermod -g labunix labunix
$ grep labunix /home/labunix/cifs/cslc-[56]/etc/passwd | \
awk -F\: '{print $1,$4,$5}'
/home/labunix/cifs/cslc-5/etc/passwd 1000 1000
/home/labunix/cifs/cslc-6/etc/passwd 1000 1000
$ grep labunix /home/labunix/cifs/cslc-[56]/etc/group
/home/labunix/cifs/cslc-5/etc/group:labunix:x:1000:
/home/labunix/cifs/cslc-6/etc/group:labunix:x:1000:
■バージョンの確認
$ grep . /home/labunix/cifs/cslc-[56]/etc/redhat-release | sed s%".*cifs/"%%g
cslc-5/etc/redhat-release:Scientific Linux CERN SLC release 5.9 (Boron)
cslc-6/etc/redhat-release:Scientific Linux CERN SLC release 6.4 (Carbon)
■ログインチェック、rootだとエラーにならないのでアクセス件の問題
$ schroot -c cslc-5 -p
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
[labunix@dummyhost ~]$ exit
$ schroot -c cslc-6 -p
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
bash: /dev/null: 許可がありません
[labunix@dummyhost ~]$ exit
$ ls -l /home/labunix/cifs/cslc-*/dev/null
-rw-r--r-- 1 root root 0 2013-03-28 21:28 /home/labunix/cifs/cslc-5/dev/null
-rw-r--r-- 1 root root 65 2013-03-28 21:42 /home/labunix/cifs/cslc-6/dev/null
■CentOS4の時と同様、644でも症状は変わらないので、666とする
SqueezeのchrootにCentOS4.9を導入
http://d.hatena.ne.jp/labunix/20130322
crw-rw-rw- 1 root root 1, 3 3月 28 09:27 /dev/null
■アップデート
$ for list in /home/labunix/cifs/c*;do sudo chroot "$list" yum update;done
$ for list in /home/labunix/cifs/c*;do sudo chroot "$list" yum install -y w3m vim curl;done
■ところで、Redhat系では「/etc/debian_chroot」に設定してもPSには反映されない。
これは下記で回避できる。
$ for list in /home/labunix/cifs/c*;do \
TEMP=$(echo "$list" | sed s%".*/"%%g) ; \
echo -e '#/bin/bash'"\n"'export PS1="(chroot-'$TEMP') \u@\h:\w\$"' | \
sudo tee "$list/etc/profile.d/debian_chroot.sh" && \
done
export PS1="(chroot-centos4) \u@\h:\w\$"
export PS1="(chroot-centos5) \u@\h:\w\$"
export PS1="(chroot-centos6) \u@\h:\w\$"
export PS1="(chroot-cslc-5) \u@\h:\w\$"
export PS1="(chroot-cslc-6) \u@\h:\w\$"
■上記でも反映されない場合は、「.bashrc」に以下を書く。
※CentOS6だけ正しく反映されなかった。
$ sudo cat /home/labunix/cifs/centos6/root/.bashrc
for i in /etc/profile.d/*.sh;do
test -r "$i" && . "$i"
done
■i-nodeの使用量が増えるのは仕方が無い。
$ env LANG=C df -i | awk '($5>30){print}'
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 610800 183367 427433 31% /
■chroot環境の9システムをループで使用中はスワップも使うが、
今のところ、全体的に安定して使用出来ている。
少なくともメモリ1GBでゲストに9システムも用意できる他の仮想環境は見たことが無い。
$ sudo ./myscripts/autoclear.sh -t
[Before]
2013/03/28,23:32:41,MEMUSED=95%,SWAPUSED=1%
total used free shared buffers cached
Mem: 1021720 976164 45556 0 16860 534688
-/+ buffers/cache: 424616 597104
Swap: 1994744 30088 1964656
vm.drop_caches = 3
[After]
2013/03/28,23:32:41,MEMUSED=53%,SWAPUSED=0%
total used free shared buffers cached
Mem: 1021720 550960 470760 0 628 106600
-/+ buffers/cache: 443732 577988
Swap: 1994744 0 1994744