■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