squeeze上にwheezyのchroot環境を構築。

■squeeze上にwheezyのchroot環境を構築。
 ※LXCって内部的にはchroot環境なので、LXCで無くても良い。
  実際、これが一番、不必要にメモリを消費しない。

 QEMUを久しぶりに試し、LXCの導入
 http://d.hatena.ne.jp/labunix/20130305

■qemuもLXCも削除。

$ sudo apt-get purge lxc qemu*
$ sed -i s/"export LANG*"/"# &"/g ~/.bashrc
$ sudo dpkg-reconfigure locales

■wheezyの導入。

$ sudo apt-get install -y debootstrap schroot
$ sudo mkdir /var/local/wheezy
$ sudo env LANG=C debootstrap wheezy /var/local/wheezy http://ftp.debian.or.jp/debian
P: Retrieving Release
...
I: Base system installed successfully.

■rootだけが利用できるchroot環境をアップデート。

$ grep . /var/local/wheezy/etc/resolv.conf /etc/resolv.conf  | sed s/"[0-9]"/"X"/g
/var/local/wheezy/etc/resolv.conf:nameserver XX.XX.X.XXX
/etc/resolv.conf:nameserver XX.XX.X.XXX

$ sudo chroot /var/local/wheezy/ apt-get update
$ sudo chroot /var/local/wheezy/ apt-get upgrade

$ sudo chroot /var/local/wheezy/ dpkg -l | grep ^ii | awk '{print $2}' | grep -v ^lib | column
adduser                 grep                    netbase
apt                     groff-base              netcat-traditional
apt-utils               gzip                    passwd
aptitude                hostname                perl-base
aptitude-common         ifupdown                procps
base-files              info                    readline-common
base-passwd             initscripts             rsyslog
bash                    insserv                 sed
bsdmainutils            install-info            sensible-utils
bsdutils                iproute                 sysv-rc
coreutils               iptables                sysvinit
cpio                    iputils-ping            sysvinit-utils
cron                    isc-dhcp-client         tar
dash                    isc-dhcp-common         tasksel
debconf                 kmod                    tasksel-data
debconf-i18n            login                   traceroute
debian-archive-keyring  logrotate               tzdata
debianutils             lsb-base                udev
diffutils               man-db                  util-linux
dmidecode               manpages                vim-common
dpkg                    mawk                    vim-tiny
e2fslibs:i386           mount                   wget
e2fsprogs               multiarch-support       whiptail
findutils               nano                    xz-utils
gcc-4.7-base:i386       ncurses-base            zlib1g:i386
gnupg                   ncurses-bin
gpgv                    net-tools

$ sudo chroot /var/local/wheezy/ apt-get purge -y isc-dhcp* nano
$ sudo chroot /var/local/wheezy/ apt-get install -y vim

■chroot環境のマウント

$ sudo cp /etc/fstab /etc/fstab.bak
$ 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" | sudo tee -a /etc/fstab
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

$ 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)

■schrootコマンドでユーザも使えるようにする。
 ユーザやグループのリストすべてをコピーするのはchrootの意味が無い気がするので、
 自ユーザだけ作成する。
 gdmユーザ他、動作していないサービスのユーザなんて明らかに不要ですから。。。

$ sudo chroot /var/local/wheezy/ useradd labunix
$ sudo chroot /var/local/wheezy/ passwd labunix
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
$ sudo chroot /var/local/wheezy/ id labunix
uid=1000(labunix) gid=1000(labunix) groups=1000(labunix)

$ grep -v "^#\|\$" /etc/schroot/schroot.conf
$ echo "[wheezy]
description=Debian Wheezy
directory=/var/local/wheezy
users=labunix
" | sudo tee -a /etc/schroot/schroot.conf
[wheezy]
description=Debian Wheezy
directory=/var/local/wheezy
users=labunix

■ログインチェック

$ schroot -c wheezy -p
$ exit
exit

■ログイン時のプロンプトをchrootだと分かるように変更。

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

$ schroot -c wheezy -p
(chroot-wheezy)labunix@dummy-host:~$ echo $SHELL
/bin/bash
(chroot-wheezy)labunix@dummy-host:~$ exit

■「lessが無いのか」とか、管理はすべてホスト側から行う方針とする。
 「sudo」を入れればよいのかも知れないが。。。

$ sudo chroot /var/local/wheezy/ apt-get install -y less
$ sudo chroot /var/local/wheezy/ apt-get install -y locales
$ sudo chroot /var/local/wheezy/ dpkg-reconfigure locales

■ホスト側を再起動してchroot環境にログイン出来ることを確認。

$ sudo shutdown -r now && exit
$ schroot -c wheezy -p
(chroot-wheezy)labunix@dummyhost:~$ cat /etc/debian_version
7.0
(chroot-wheezy)labunix@dummyhost:~$ exit