■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