■プロキシ経由の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
■ディレクトリの作成(無くてもスクリプト内で作られる)
$ 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