■さくらVPSのDebian Wheezyにchroot jessieを導入
方法は以下と同様。プロキシが無い分楽です。
Squeeze上のsid chrootにjessieのchroot環境を構築、Squeezeへ移動
http://d.hatena.ne.jp/labunix/20130507
■wheezy の次の Debian のメジャーリリースのコードネームは、「jessie」です。
Debian「jessie」リリース情報
http://www.debian.org/releases/testing/
■早速導入
DEBRELEASE=jessie; \
mkdir -p /var/local/${DEBRELEASE}
env LANG=C debootstrap ${DEBRELEASE} \
/var/local/${DEBRELEASE} http://ftp.debian.or.jp/debian
■初期設定
DEBRELEASE=jessie; \
chroot /var/local/${DEBRELEASE} apt-get update; \
chroot /var/local/${DEBRELEASE} apt-get upgrade; \
chroot /var/local/${DEBRELEASE} apt-get purge -y isc-dhcp* nano; \
chroot /var/local/${DEBRELEASE} apt-get install -y vim locales sudo less lv; \
chroot /var/local/${DEBRELEASE} adduser ${USER}; \
chroot /var/local/${DEBRELEASE} dpkg-reconfigure locales
...
ja_JP.UTF-8... done
Generation complete.
■マウント
echo "[jessie]
description=jessie
directory=/var/local/${DEBRELEASE}
users=${USER}
" >> /etc/schroot/schroot.conf; \
none /var/local/jessie/dev/pts devpts gid=5,mode=620 0 3
none /var/local/jessie/dev/shm tmpfs defaults 0 3
none /var/local/jessie/proc proc defaults 0 3
none /var/local/jessie/sys sysfs defaults 0 3
■ログインチェック
echo "chroot-jessie" > /var/local/${DEBRELEASE}/etc/debian_chroot; \
exit
$ DEBRELEASE=jessie; \
schroot -c ${DEBRELEASE} -p
(chroot-jessie)labunix@XXXXX:~$ exit
■chroot-jessieにSSHサーバの導入
仮想マシンのWheezyと、chroot環境のjessieとポートが被らないように設定
chroot /var/local/${DEBRELEASE} apt-get install -y openssh-server; \
echo '#!/bin/bash
export TZ=Asia/Tokyo
/etc/init.d/ssh restart' > /var/local/${DEBRELEASE}/etc/rc.chroot-ssh; \
chmod +x /var/local/${DEBRELEASE}/etc/rc.chroot-ssh; \
sed -i s/"exit 0"// /etc/rc.local; \
echo '
DEBRELEASE=jessie
CHROOT_HOME=/var/local/${DEBRELEASE}
if [ -x ${CHROOT_HOME}/etc/rc.chroot-ssh ]; then
/usr/sbin/chroot ${CHROOT_HOME} /etc/rc.chroot-ssh restart
fi
exit 0
' >> /etc/rc.local
■chroot-jessieのユーザssh鍵を作成
※例ではRSA鍵。
$ DEBRELEASE=jessie; \
schroot -c ${DEBRELEASE} -p
(chroot-jessie)labunix@XXXXX:~$ ssh-keygen -t rsa
■sshサーバの再起動
grep -B 1 ^Listen /var/local/${DEBRELEASE}/etc/ssh/sshd_config
AddressFamily inet
ListenAddress 0.0.0.0
[ ok ] Restarting OpenBSD Secure Shell server: sshd.
■iptablesの設定
例えば22/tcpを追加するには。
$IPTABLES -A INPUT -p tcp -m tcp --dport $SSHPORT -j ACCEPT
■デフォルトのsshのログイン先はchroot側に変更
sshポートを変更するだけ。
同じユーザでも認証が別なので、ログインパスワードも別々に設定出来る。
当然ssh鍵も署名も別々。
上記で追加したiptablesルールは再起動後にはなくなるので、
chroot-jessieにログインしてから仮想マシンのwheezyにsshログインすることになる。
■バックアップスクリプトの変更
仮想マシンの待受IPをローカルのみにしたので、
chroot-jessie経由で無いとsshログイン出来ない。
「mount --bind」でバックアップ中のみ対象のディレクトリを
chroot-jessieからrsyncでアクセス出来るようにするスクリプトを追加した。
$ grep ^ListenAddress /etc/ssh/sshd_config
ListenAddress 127.0.0.1
chroot /var/local/${DEBRELEASE} apt-get install -y rsync
■cryptsetupのマウントを自動化する。
chmod 0400 /root/cryptkey; \
cryptsetup luksAddKey /home/luks.img /root/cryptkey; \
cryptsetup luksDump /home/luks.img | grep "Slot.*ENABLED"
Key Slot 0: ENABLED
Key Slot 1: ENABLED
■initスクリプトにする。
※「.bash_logout」「.bashrc」の呼び出しスクリプトを削除
PAM連携とか色々あるようだけど、せっかく作ったスクリプトを流用する。
chown root:root /etc/init.d/cryptmount.sh; \
chmod 0755 /etc/init.d/cryptmount.sh; \
chkconfig cryptmount.sh on; \
chkconfig --list cryptmount.sh
cryptmount.sh 0:off 1:off 2:on 3:off 4:off 5:off 6:off
/dev/mapper/luks is active and is in use.
type: LUKS1
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
device: /dev/loop0
loop: /home/luks.img
offset: 4096 sectors
size: 2043904 sectors
mode: read/write
/dev/mapper/luks is inactive.
/dev/mapper/luks on /home/labunix/mydata type ext2 (rw,relatime,errors=continue,user_xattr,acl)
■再起動して確認、自動マウント出来た。
自動マウントだけど、chroot側では仮想マシンのrootで
「bind mount」しないとアクセス出来ないので良しとする。
$ mount | grep luks
/dev/mapper/luks on /home/labunix/mydata type ext2 (rw,relatime,errors=continue,user_xattr,acl)
パスワード:
/dev/mapper/luks is active and is in use.
type: LUKS1
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
device: /dev/loop0
loop: /home/luks.img
offset: 4096 sectors
size: 2043904 sectors
mode: read/write
■起動時の「pcspkr」「bluetooth」のエラーの対処
blacklist pcspkr
blacklist bnep
blacklist btusb
blacklist bluetooth
blacklist ipv6
■blacklistの反映
■USBとvda3のリマウントのログが残った。
[ 2.694079] usb 1-1: Manufacturer: QEMU 0.12.1
[ 2.694080] usb 1-1: SerialNumber: 42
[ 2.701245] WARNING! power/level is deprecated; use power/control instead
--
[ 3.100550] Adding 13671420k swap on /dev/vda2. Priority:-1 extents:1 across:13671420k
[ 3.115791] EXT4-fs (vda3): re-mounted. Opts: (null)
[ 3.216188] EXT4-fs (vda3): re-mounted. Opts: errors=remount-ro
■QEMUのUSBドライバの問題のようなのでスルー。
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
|__ Port 1: Dev 2, If 0, Class=HID, Driver=usbhid, 12M
■以下はext4ではよくあるエラーの様子。
オプションどおりの動作でパーティション自体に問題も見られないのでスルー。
awk '{print $(NF-2)}' | grep `xargs` /etc/fstab | awk '{print $2,$3,$4}'
/ ext4 errors=remount-ro
■およそ半分ですか。
2882 /usr/sbin/spamd --create-pr 0.2 3.0
2883 /usr/sbin/amavisd-new (mast 0.1 4.7
2905 spamd child 0.0 2.9
2906 spamd child 0.0 2.9
2907 /usr/sbin/amavisd-new (virg 0.0 4.7
2908 /usr/sbin/snort -m 027 -D - 0.1 5.5
2910 /usr/sbin/amavisd-new (virg 0.0 4.7
2929 /usr/sbin/clamd -c /etc/cla 0.0 13.4
3094 /usr/bin/freshclam -d --qui 0.3 0.1
3360 /usr/bin/python /usr/bin/fa 0.1 0.4
# df | awk '{sum+=$3};END{print sum/1024/1024"GB"}'
13.1353GB
# top -b -n 1 | head -5
top - 02:42:08 up 15 min, 1 user, load average: 0.00, 0.06, 0.11
Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.8 us, 0.2 sy, 0.0 ni, 98.5 id, 0.4 wa, 0.0 hi, 0.0 si, 0.1 st
KiB Mem: 2061060 total, 891408 used, 1169652 free, 19320 buffers
KiB Swap: 13671420 total, 0 used, 13671420 free, 241360 cached
■そろそろ、メモリクリアの手段があった方が良さそう。
# ./myscripts/autoclear.sh
# Usage ./myscripts/autoclear.sh [-t|test]
# Default:
# SWAPUSED>0 && MEMUSED<70; -> clear cache and reset swap.
# -t|test
# force clear, cache and reset swap
2014/08/30,02:55:40,MEMUSED=32%,SWAPUSED=0%