プロキシ経由のdebootstrap、Lenny、Squeezeのchroot環境構築

■プロキシ経由のdebootstrap、Lenny、Squeezeのchroot環境構築。

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

■debootstrapパッケージの各ファイルの中身はテキスト。

$ dpkg -L debootstrap | for list in `xargs`;do file "$list";done | grep -v symb | awk -F\: '{print $2}' | sort -u
 ASCII English text
 ASCII English text, with very long lines
 ASCII text, with very long lines
 POSIX shell script text executable
 directory
 gzip compressed data, from Unix, last modified
 gzip compressed data, from Unix, max compression

$ dpkg -L debootstrap | grep "wget" `xargs` | grep -v base | awk -F\: '{print $1}' | sort -u
/usr/sbin/debootstrap
/usr/share/debootstrap/functions

■「--help」にもwgetの記載がある。

$ sudo debootstrap --help | grep verbose
      --verbose              don’t turn off the output of wget

■設定するべきはwgetrc

$ sudo grep proxy /etc/wgetrc
#https_proxy = http://proxy.yoyodyne.com:18023/
#http_proxy = http://proxy.yoyodyne.com:18023/
#ftp_proxy = http://proxy.yoyodyne.com:18023/
# If you do not want to use proxy at all, set this to off.
#use_proxy = on

■ディレクトリの作成(無くてもスクリプト内で作られる)

$ echo "/var/local/lenny /var/local/squeeze" | sudo mkdir -p `xargs`
$ ls /var/local/
lenny  squeeze  wheezy

■Lennyは以下の通りアーカイブ参照とする。

 Lennyのapt-get(sources.list)をアーカイブ参照に変更する 
 http://d.hatena.ne.jp/labunix/20120328

$ echo "debootstrap lenny /var/local/lenny http://archive.debian.org/debian"| sudo `xargs`
$ echo "debootstrap squeeze /var/local/squeeze http://ftp.debian.or.jp/debian" | sudo `xargs`

■プロキシ経由用に「apt.conf」「wgetrc」「proxy.sh」をコピー。

$ sudo cp /etc/apt/apt.conf /var/local/lenny/etc/apt/
$ sudo cp /etc/apt/apt.conf /var/local/squeeze/etc/apt/

$ sudo cp /etc/wgetrc /var/local/lenny/etc/
$ sudo cp /etc/wgetrc /var/local/squeeze/etc/

$ test -f /etc/profile.d/proxy.sh | sudo tee -a /var/local/lenny/etc/profile
$ test -f /etc/profile.d/proxy.sh && sudo cp -p /etc/profile.d/proxy.sh /var/local/squeeze/etc/profile.d/

■APTの更新

$ echo /var/local/* | for list in `xargs`;do sudo chroot "$list" apt-get update;done
$ echo /var/local/* | for list in `xargs`;do sudo chroot "$list" apt-get upgrade;done

■lenny/squeezeの不要なパッケージを探す。

$ sudo chroot /var/local/lenny/ dpkg -l | grep ^ii | awk '{print $2}' | grep -v ^lib | column
$ sudo chroot /var/local/squeeze/ dpkg -l | grep ^ii | awk '{print $2}' | grep -v ^lib | column

■不要なパッケージの削除と必要なパッケージのインストール。
 お好みで。「LANG=C」はdebootstrapで指定されているので、「locales」で設定しておく。

$ sudo chroot /var/local/lenny/ apt-get purge -y dhcp* nano
$ sudo chroot /var/local/squeeze/ apt-get purge -y isc-dhcp* nano

$ sudo chroot /var/local/lenny/ apt-get install -y vim chkconfig locales less
$ sudo chroot /var/local/squeeze/ apt-get install -y vim chkconfig locales less

$ sudo chroot /var/local/lenny/ dpkg-reconfigure locales
$ sudo chroot /var/local/squeeze/ dpkg-reconfigure locales

■croot環境のマウント

$ echo "proc    /var/local/wheezy/proc   proc    defaults 0      0
/tmp    /var/local/wheezy/tmp    none    bind     0      0
/home   /var/local/wheezy/home   none    rbind    0      0" | sed s/wheezy/lenny/g  | sudo tee -a /etc/fstab
proc    /var/local/lenny/proc   proc    defaults 0      0
/tmp    /var/local/lenny/tmp    none    bind     0      0
/home   /var/local/lenny/home   none    rbind    0      0

$ echo "proc    /var/local/wheezy/proc   proc    defaults 0      0
/tmp    /var/local/wheezy/tmp    none    bind     0      0
/home   /var/local/wheezy/home   none    rbind    0      0" | sed s/wheezy/squeeze/g  | 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)

■schrootコマンドでユーザも使えるようにする。

$ sudo chroot /var/local/lenny/ useradd labunix
$ sudo chroot /var/local/lenny/ passwd labunix
新しいUNIXパスワードを入力してください:
新しいUNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました

$ sudo chroot /var/local/squeeze/ useradd labunix
$ sudo chroot /var/local/squeeze/ passwd labunix
新しいUNIXパスワードを入力してください:
新しいUNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました

■ユーザがログインできるように変更する。

$ echo "[wheezy]
description=Debian Wheezy
directory=/var/local/wheezy
users=labunix
" | sed s/"[Ww]heezy"/"lenny"/g | sudo tee -a /etc/schroot/schroot.conf
[lenny]
description=Debian lenny
directory=/var/local/lenny
users=labunix

$ echo "[wheezy]
description=Debian Wheezy
directory=/var/local/wheezy
users=labunix
" | sed s/"[Ww]heezy"/"squeeze"/g | sudo tee -a /etc/schroot/schroot.conf
[squeeze]
description=Debian squeeze
directory=/var/local/squeeze
users=labunix

■ログインチェック

$ schroot -c lenny -p
$ schroot -c squeeze -p

■chroot時のプロンプトにコメントを追加

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

■再ログインチェック

$ schroot -c squeeze -p
(chroot-squeeze)labunix@dummuhost:~$ exit
exit

$ schroot -c lenny -p
(chroot-lenny)labunix@dummuhost:~$ exit
exit

■再起動後のchrootログインチェック

$ sudo shutdown -r now && exit

$ schroot -c lenny -p
$ schroot -c squeeze -p
$ schroot -c wheezy -p

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

$ free
             total       used       free     shared    buffers     cached
Mem:       1021720     399764     621956          0      59420     270124
-/+ buffers/cache:      70220     951500
Swap:      1994744          0    1994744
$ sudo ./myscripts/autoclear.sh -t
[Before]
2013/03/11,21:15:29,MEMUSED=45%,SWAPUSED=0%
             total       used       free     shared    buffers     cached
Mem:       1021720     467920     553800          0      65828     330236
-/+ buffers/cache:      71856     949864
Swap:      1994744          0    1994744
vm.drop_caches = 3
[After]
2013/03/11,21:15:29,MEMUSED=10%,SWAPUSED=0%
             total       used       free     shared    buffers     cached
Mem:       1021720     104532     917188          0       1508      38212
-/+ buffers/cache:      64812     956908
Swap:      1994744          0    1994744