SqueezeのchrootにCentOS4.9を導入

■SqueezeのchrootにCentOS4.9を導入。

$ sudo apt-get install -y rinse

 squeeze上にwheezyのchroot環境を構築
 http://d.hatena.ne.jp/labunix/20130311

 プロキシ経由のdebootstrap、Lenny、Squeezeのchroot環境構築
 http://d.hatena.ne.jp/labunix/20130312

 chroot環境のsidで、rinseを使ってCentOS5/6のchroot環境を構築
 http://d.hatena.ne.jp/labunix/20130313

 chroot環境のバックアップ
 http://d.hatena.ne.jp/labunix/20130314

 chrootのwheezy/sidにnwdiagを導入する
 http://d.hatena.ne.jp/labunix/20130321

■初回rinseの実行

$ mkdir cifs/centos4
$ sudo rinse --directory=/home/labunix/cifs/centos4/ --distribution=centos-4 --arch i386
Failed to fetch : http://mirror.bytemark.co.uk/centos/4/os/i386/CentOS/RPMS/
        404 Not Found

■サポートの終わった「4.9」はミラーサイトには無い。

$ w3m -dump http://mirror.bytemark.co.uk/centos/4/readme
This directory (and version of CentOS) is depreciated.

CentOS-4 is now past EOL

You can get the last released version of centos 4.9 here:

http://vault.centos.org/4.9/

■以下の箇所を変更する。

$ sudo grep -A 2 centos-4 /etc/rinse/rinse.conf
[centos-4]
mirror       = http://mirror.bytemark.co.uk/centos/4/os/i386/CentOS/RPMS/
mirror.amd64 = http://mirror.bytemark.co.uk/centos/4/os/x86_64/CentOS/RPMS/

$ sudo sed -i s%"http://mirror.bytemark.co.uk/centos/4/"%"http://vault.centos.org/4.9/"%g /etc/rinse/rinse.conf

$ sudo grep -A 2 centos-4 /etc/rinse/rinse.conf
[centos-4]
mirror       = http://vault.centos.org/4.9/os/i386/CentOS/RPMS/
mirror.amd64 = http://vault.centos.org/4.9/os/x86_64/CentOS/RPMS/

■再度rinseを実行

$ sudo rinse --directory=/home/labunix/cifs/centos4/ --distribution=centos-4 --arch i386

■初期設定

$ sudo mount -t proc proc /home/labunix/cifs/centos4/proc/
$ echo "proxy=http://proxy.hostname.com:1234/" | sudo tee -a /home/labunix/cifs/centos4/etc/yum.conf
$ sudo cp /etc/profile.d/proxy.sh /home/labunix/cifs/centos4/etc/profile.d/
$ sudo cp /etc/wgetrc /home/labunix/cifs/centos4/etc/wgetrc
$ sudo chroot /home/labunix/cifs/centos4/ yum update
Setting up Update Process
Setting up repositories
not using ftp, http[s], or file for repos, skipping - 4 is not a valid release or hasnt been released yet
Cannot find a valid baseurl for repo: update
Error: Cannot find a valid baseurl for repo: update

■ここでも同様にリポジトリのチェックでコケる。
 ミラーリストをコメントアウトして、baseurlを入れ替える。

$ sudo sed -i s/"^mirrorlist"/"#&"/g /home/labunix/cifs/centos4/etc/yum.repos.d/CentOS-Base.repo
$ sudo sed -i s%"#baseurl=http://mirror.centos.org/centos/\$releasever"%"baseurl=http://vault.centos.org/4.9"%g \
  /home/labunix/cifs/centos4/etc/yum.repos.d/CentOS-Base.repo

■今度は上手く行った。

$ sudo chroot /home/labunix/cifs/centos4/ yum update
$ sudo chroot /home/labunix/cifs/centos4/ yum upgrade
$ sudo chroot /home/labunix/cifs/centos4/ rpm -qa | grep wget || \
  sudo chroot /home/labunix/cifs/centos4/ yum install -y wget
$ sudo umount /home/labunix/cifs/centos4/proc/

$ echo "proc    /home/labunix/cifs/centos4/proc   proc    defaults 0      0
/tmp    /home/labunix/cifs/centos4/tmp    none    bind     0      0" | sudo tee -a /etc/fstab
$ sudo mount -a
$ mount | grep centos4
proc on /home/labunix/cifs/centos4/proc type proc (rw)
/tmp on /home/labunix/cifs/centos4/tmp type none (rw,bind)

$ sudo chroot /home/labunix/cifs/centos4/ id labunix && \
  sudo chroot /home/labunix/cifs/centos4/ usermod -u 1000 labunix
id: labunix: そのようなユーザは存在しません

$ sudo chroot /home/labunix/cifs/centos4/ useradd -u 1000 labunix
$ sudo chroot /home/labunix/cifs/centos4/ id labunix
uid=1000(labunix) gid=1000(labunix) 所属グループ=1000(labunix)

$ sudo chroot /home/labunix/cifs/centos4/ passwd labunix
chroot: failed to run command 'passwd': そのようなファイルやディレクトリはありません
$ sudo chroot /home/labunix/cifs/centos4/ yum install -y passwd

$ sudo chroot /home/labunix/cifs/centos4/ passwd labunix
Changing password for user labunix.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

$ echo "[centos4]
description=centos4
directory=/home/labunix/cifs/centos4
users=labunix

[centos4-root]
description=centos4
directory=/home/labunix/cifs/centos4
users=root
" | sudo tee -a /etc/schroot/schroot.conf

$ echo "chroot-centos4" | sudo tee -a /home/labunix/cifs/centos4/etc/debian_chroot
$ grep . /home/labunix/cifs/centos4/etc/redhat-release
CentOS release 4.9 (Final)

■ログインチェック
 「/dev/null」でエラー?

$ schroot -c centos4 -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

$ sudo ls -l /home/labunix/cifs/centos4/dev/null
-rw-r--r-- 1 root root 0 2013-03-22 21:47 /home/labunix/cifs/centos4/dev/null

■「644」で作り直す。

$ sudo schroot -c centos4-root -p
# rm -f /dev/null
# mknod -m 644 /dev/null c 1 3
# ls -l /dev/null
crw-r--r--  1 root root 1, 3 32209:29 /dev/null
$ schroot -c centos4 -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

■「666」で作り直す。直った。

$ sudo schroot -c centos4-root -p
# rm -f /dev/null
# mknod -m 666 /dev/null c 1 3
# ls -l /dev/null
crw-rw-rw-  1 root root 1, 3 32209:31 /dev/null
bash-3.00# exit
$ schroot -c centos4 -p
[labunix@dummyhost ~]$

■バックアップもしてしまおう。

$ mount | grep "centos4" | awk '{print $3}' | for list in `xargs`;do sudo umount "$list";done
$ sudo du -ks /home/labunix/cifs/centos4 | awk '{sum+=$1;printf "%dM%s\n",$1/1024,$2}END{printf "%dM Total\n",sum/1024}'
400M/home/labunix/cifs/centos4
400M Total

$ ls ~/chrootbackup/
centos5_20130313.tar.gz  lenny_20130313.tar.gz  squeeze_20130313.tar.gz
centos6_20130313.tar.gz  sid_20130313.tar.gz    wheezy_20130313.tar.gz

$ cd /home/labunix/cifs && sudo tar zcvf "/home/labunix/chrootbackup/centos4_`date '+%Y%m%d'`.tar.gz" centos4
$ ls -lh ~/chrootbackup/
合計 1.4G
-rw-r--r-- 1 root root 164M 2013-03-22 22:35 centos4_20130322.tar.gz
-rw-r--r-- 1 root root 138M 2013-03-13 20:39 centos5_20130313.tar.gz
-rw-r--r-- 1 root root 109M 2013-03-13 20:40 centos6_20130313.tar.gz
-rw-r--r-- 1 root root 139M 2013-03-13 20:42 lenny_20130313.tar.gz
-rw-r--r-- 1 root root 312M 2013-03-13 20:44 sid_20130313.tar.gz
-rw-r--r-- 1 root root 217M 2013-03-13 20:46 squeeze_20130313.tar.gz
-rw-r--r-- 1 root root 262M 2013-03-13 20:48 wheezy_20130313.tar.gz

$ sudo mount -a
$ mount | grep "centos4"
proc on /home/labunix/cifs/centos4/proc type proc (rw)
/tmp on /home/labunix/cifs/centos4/tmp type none (rw,bind)

■debian4バージョン、centos3バージョン載せても1GBのメモリで結構快適です。

$ sudo ./myscripts/autoclear.sh -t
[sudo] password for labunix:
[Before]
2013/03/22,22:53:24,MEMUSED=98%,SWAPUSED=0%
             total       used       free     shared    buffers     cached
Mem:       1021720    1006212      15508          0      25192     696624
-/+ buffers/cache:     284396     737324
Swap:      1994744          0    1994744
vm.drop_caches = 3
[After]
2013/03/22,22:53:24,MEMUSED=32%,SWAPUSED=0%
             total       used       free     shared    buffers     cached
Mem:       1021720     336012     685708          0        360      72248
-/+ buffers/cache:     263404     758316
Swap:      1994744          0    1994744