chroot環境のsidでSL5/6を導入、ホストのSqueezeに移動する

■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)# unset PROXY n;exit

■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

# rm -f /dev/null && mknod -m 666 /dev/null c 1 3 && ls -l /dev/null
crw-rw-rw- 1 root root 1, 3  328 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
#/bin/bash
export PS1="(chroot-centos4) \u@\h:\w\$"
#/bin/bash
export PS1="(chroot-centos5) \u@\h:\w\$"
#/bin/bash
export PS1="(chroot-centos6) \u@\h:\w\$"
#/bin/bash
export PS1="(chroot-cslc-5) \u@\h:\w\$"
#/bin/bash
export PS1="(chroot-cslc-6) \u@\h:\w\$"

■上記でも反映されない場合は、「.bashrc」に以下を書く。
 ※CentOS6だけ正しく反映されなかった。

$ sudo cat /home/labunix/cifs/centos6/root/.bashrc
#!/bin/bash

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