chroot環境のsidで、rinseを使ってCentOS5/6のchroot環境を構築

■chroot環境にsidを導入。rinseを試す。

$ sudo mkdir -p /var/local/sid
$ echo "debootstrap sid /var/local/sid http://ftp.debian.or.jp/debian" | sudo `xargs`
$ sudo cp /etc/apt/apt.conf /var/local/sid/etc/apt/
$ sudo cp /etc/wgetrc /var/local/sid/etc/
$ sudo cp -p /etc/profile.d/proxy.sh /var/local/sid/etc/profile.d/
$ sudo chroot /var/local/sid apt-get update
$ sudo chroot /var/local/sid apt-get upgrade
$ echo "proc    /var/local/sid/proc   proc    defaults 0      0
/tmp    /var/local/sid/tmp    none    bind     0      0
/home   /var/local/sid/home   none    rbind    0      0" | sudo tee -a /etc/fstab
proc    /var/local/sid/proc   proc    defaults 0      0
/tmp    /var/local/sid/tmp    none    bind     0      0
/home   /var/local/sid/home   none    rbind    0      0

$ sudo mount -a
$ sudo chroot /var/local/sid apt-get purge -y isc-dhcp* nano
$ sudo chroot /var/local/sid apt-get install -y vim chkconfig locales less rinse
$ sudo chroot /var/local/sid dpkg -L rinse | grep centos-6
/usr/lib/rinse/centos-6
/usr/lib/rinse/centos-6/post-install.sh
/etc/rinse/centos-6.packages

$ sudo chroot /var/local/sid/ dpkg-reconfigure locales
$ sudo chroot /var/local/sid/ useradd labunix
$ sudo chroot /var/local/sid/ passwd labunix
$ echo "[sid]
description=Debian sid
directory=/var/local/sid
users=labunix
" | sudo tee -a  /etc/schroot/schroot.conf
[sid]
description=Debian sid
directory=/var/local/sid
users=labunix

$ echo "chroot-sid" | sudo tee -a /var/local/sid/etc/debian_chroot
chroot-sid

$ schroot -c sid -p
(chroot-sid)labunix@dummyhost:$ exit
exit

■rootでログインできるようにしておく。

$ echo "[wheezy-root]
description=Debian Wheezy
directory=/var/local/wheezy
users=root

[lenny-root]
description=Debian lenny
directory=/var/local/lenny
users=root

[squeeze-root]
description=Debian squeeze
directory=/var/local/squeeze
users=root

[sid-root]
description=Debian sid
directory=/var/local/sid
users=root
" | sudo tee -a /etc/schroot/schroot.conf


$ sudo schroot -c sid-root -p
(chroot-sid)root@dummyhost:/home/labunix#

■パッケージリストから、「sid」にはCentOS5/CentOS6共に在るらしい。
 ※SqueezeではCentOS5でもyumを動かすのも一苦労だった。

 sid の all アーキテクチャ用 rinse パッケージのファイル一覧
 http://packages.debian.org/ja/sid/all/rinse/filelist

■chroot環境内のsidでchroot環境を作成しよう。
 Hyper-Vじゃあるまいし、サポートされてないはずないよねw。

$ sudo schroot -c sid-root -p
(chroot-sid)root@dummyhost:# mkdir /var/local/centos5
(chroot-sid)root@dummyhost:# rinse --directory=/var/local/centos5/ --distribution=centos-5 --arch i386

(chroot-sid)root@dummyhost:# mkdir /var/local/centos6
(chroot-sid)root@dummyhost:# rinse --directory=/var/local/centos6/ --distribution=centos-6 --arch i386

■「/proc」のマウントとアップデート。
 おお、ちゃんと通りますね。

(chroot-sid)root@dummyhost:# mount -t proc proc /var/local/centos5/proc/
(chroot-sid)root@dummyhost:# echo "proxy=http://proxy.hostname.com:1234/" | tee -a /var/local/centos5/etc/yum.conf
(chroot-sid)root@dummyhost:# cp /etc/profile.d/proxy.sh /var/local/centos5/etc/profile.d/
(chroot-sid)root@dummyhost:# cp /etc/wgetrc /var/local/centos5/etc/wgetrc
(chroot-sid)root@dummyhost:# chroot /var/local/centos5/ yum update
(chroot-sid)root@dummyhost:# chroot /var/local/centos5/ yum upgrade
(chroot-sid)root@dummyhost:# chroot /var/local/centos5/ rpm -qa | grep wget
(chroot-sid)root@dummyhost:# chroot /var/local/centos5/ yum install -y wget

(chroot-sid)root@dummyhost:# mount -t proc proc /var/local/centos6/proc/
(chroot-sid)root@dummyhost:# echo "proxy=http://proxy.hostname.com:1234/" | tee -a /var/local/centos6/etc/yum.conf
(chroot-sid)root@dummyhost:# cp /etc/profile.d/proxy.sh /var/local/centos6/etc/profile.d/
(chroot-sid)root@dummyhost:# cp /etc/wgetrc /var/local/centos6/etc/wgetrc
(chroot-sid)root@dummyhost:# chroot /var/local/centos6/ yum update
(chroot-sid)root@dummyhost:# chroot /var/local/centos6/ yum update
(chroot-sid)root@dummyhost:# chroot /var/local/centos6/ rpm -qa | grep wget
(chroot-sid)root@dummyhost:# chroot /var/local/centos6/ yum install -y wget

(chroot-sid)root@dummyhost:# umount /var/local/centos6/proc/
(chroot-sid)root@dummyhost:# umount /var/local/centos5/proc/
(chroot-sid)root@dummyhost:# exit
exit

■Squeezeにコピーしてもそのまま使えます。

$ ls /var/local/sid/var/local/centos*
/var/local/sid/var/local/centos5:
bin   dev  home  media  opt   root  selinux  sys  usr
boot  etc  lib   mnt    proc  sbin  srv      tmp  var

/var/local/sid/var/local/centos6:
bin   dev  home  media  opt   root  selinux  sys  usr
boot  etc  lib   mnt    proc  sbin  srv      tmp  var

$ sudo cp -pr /var/local/sid/var/local/centos* /var/local/
$ sudo mount -t proc proc /var/local/centos5/proc/
$ sudo mount -t proc proc /var/local/centos6/proc/
$ sudo chroot /var/local/centos5/ yum update
$ sudo chroot /var/local/centos6/ yum update

$ echo "proc    /var/local/centos5/proc   proc    defaults 0      0
/tmp    /var/local/centos5/tmp    none    bind     0      0
/home   /var/local/centos5/home   none    rbind    0      0" | sudo tee -a /etc/fstab

$ echo "proc    /var/local/centos6/proc   proc    defaults 0      0
/tmp    /var/local/centos6/tmp    none    bind     0      0
/home   /var/local/centos6/home   none    rbind    0      0" | sudo tee -a /etc/fstab

$ sudo mount -a
$ mount | grep /var/local
proc on /var/local/wheezy/proc type proc (rw)
/tmp on /var/local/wheezy/tmp type none (rw,bind)
/home on /var/local/wheezy/home type none (rw,bind)
proc on /var/local/lenny/proc type proc (rw)
/tmp on /var/local/lenny/tmp type none (rw,bind)
/home on /var/local/lenny/home type none (rw,bind)
proc on /var/local/squeeze/proc type proc (rw)
/tmp on /var/local/squeeze/tmp type none (rw,bind)
/home on /var/local/squeeze/home type none (rw,bind)
proc on /var/local/sid/proc type proc (rw)
/tmp on /var/local/sid/tmp type none (rw,bind)
/home on /var/local/sid/home type none (rw,bind)
proc on /var/local/centos5/proc type proc (rw)
/tmp on /var/local/centos5/tmp type none (rw,bind)
/home on /var/local/centos5/home type none (rw,bind)
proc on /var/local/centos6/proc type proc (rw)
/tmp on /var/local/centos6/tmp type none (rw,bind)
/home on /var/local/centos6/home type none (rw,bind)

■CentOSはUIDに500を振るので変更する。

$ sudo chroot /var/local/centos5/ usermod -u 1000 labunix
$ sudo chroot /var/local/centos6/ usermod -u 1000 labunix

$ sudo chroot /var/local/centos5/ passwd labunix
$ sudo chroot /var/local/centos6/ passwd labunix
$ echo "[centos5]
description=Debian centos5
directory=/var/local/centos5
users=labunix

[centos6]
description=Debian centos6
directory=/var/local/centos6
users=labunix

[centos5-root]
description=Debian centos5
directory=/var/local/centos5
users=root

[centos6-root]
description=Debian centos6
directory=/var/local/centos6
users=root
" | sudo tee -a /etc/schroot/schroot.conf
[centos5]
description=Debian centos5
directory=/var/local/centos5
users=labunix

[centos6]
description=Debian centos6
directory=/var/local/centos6
users=labunix

[centos5-root]
description=Debian centos5
directory=/var/local/centos5
users=root

[centos6-root]
description=Debian centos6
directory=/var/local/centos6
users=root

■ログイン時に分かるように変更。ログインチェック。

$ echo "chroot-centos5" | sudo tee -a /var/local/centos5/etc/debian_chroot
$ echo "chroot-centos6" | sudo tee -a /var/local/centos6/etc/debian_chroot

$ schroot -c centos5 -p
(chroot-centos5)labunix@dummyhost:~$

$ schroot -c centos6 -p
(chroot-centos6)labunix@dummyhost:~$

■バージョンの確認。

$ grep . /var/local/centos[56]/etc/redhat-release
/var/local/centos5/etc/redhat-release:CentOS release 5.9 (Final)
/var/local/centos6/etc/redhat-release:CentOS release 6.4 (Final)

■後片付け。

$ sudo rm -fr /var/local/sid/var/local/centos[56]

■空きメモリの確認。
 ※起動直後のGUIログイン画面時と、キャッシュクリア時

$ sudo ./myscripts/autoclear.sh -t
[Before]
2013/03/12,23:35:01,MEMUSED=46%,SWAPUSED=0%
             total       used       free     shared    buffers     cached
Mem:       1021720     476088     545632          0      72088     332932
-/+ buffers/cache:      71068     950652
Swap:      1994744          0    1994744
vm.drop_caches = 3
[After]
2013/03/12,23:35:01,MEMUSED=9%,SWAPUSED=0%
             total       used       free     shared    buffers     cached
Mem:       1021720      98384     923336          0        488      33988
-/+ buffers/cache:      63908     957812
Swap:      1994744          0    1994744