処理を分けた方が使いやすいらしい.
一応 Debian アプリケーションはだいたい動く.ものすごく強引に(–;;
boot をマウントしなくなったのは,apt-get update とか動かさない前提に変更した為.
ブートローダーインストールしてもマップファイルが違うとか言われて起動しないので,アップデートする時は別マシンに USB メモリ差し替えてネイティブで起動すれば良いかな,と.
#! /bin/bash
BASE_DIR='/mnt'
DEB_ROOT="${BASE_DIR}/debian"
start(){
(
cd "${BASE_DIR}"
if ! mountpoint -q "${DEB_ROOT}" ; then
sudo mount "${DEB_ROOT}" || { echo "can not mount ${DEB_ROOT}"; exit 1; }
fi
if ! mountpoint -q "${DEB_ROOT}/proc" ; then
sudo mount -t proc proc "${DEB_ROOT}/proc" || { echo "can not mount ${DEB_ROOT}/proc"; exit 1; }
fi
if ! mountpoint -q "${DEB_ROOT}/dev" ; then
sudo mount -o bind /dev "${DEB_ROOT}/dev" || { echo "can not mount ${DEB_ROOT}/dev"; exit 1; }
fi
if ! mountpoint -q "${DEB_ROOT}/tmp" ; then
sudo mount -o bind /tmp "${DEB_ROOT}/tmp" || { echo "can not mount ${DEB_ROOT}/tmp"; exit 1; }
fi
if ! mountpoint -q "${DEB_ROOT}/home/rock/_cifs" ; then
sudo mount -o bind /home/rock "${DEB_ROOT}/home/rock/_cifs" || { echo "can not mount ${DEB_ROOT}/home/rock/_cifs"; exit 1; }
fi
)&& echo "ok, you can chroot type that: $0 chroot"
}
chroot(){
(
cd "${BASE_DIR}"
echo 'install .Xauthority to Debian home' &&
cp /home/rock/.Xauthority debian/home/rock/ &&
sudo chroot debian /bin/su rock
)
}
stop(){
(
cd "${BASE_DIR}"
sync
sudo killall dbus-launch
sudo umount "${DEB_ROOT}/home/rock/_cifs"
sudo umount "${DEB_ROOT}/tmp"
sudo umount "${DEB_ROOT}/dev"
sudo umount "${DEB_ROOT}/proc"
sudo umount "${DEB_ROOT}"
)&& echo 'done.'
}
help(){
echo "ex: $0 start|chroot|stop"
}
case $1 in
start | mount) start ;;
chroot ) chroot ;;
stop | umount) stop ;;
* ) help ;;
esac
で,親の端末で kinput2 動かしてても,chroot したらそこから起動した iceweasel とかに日本語入力出来ない.
ファイルだけでなく,プロセス単位で環境が jail しちゃうらしい(?).よく出来てんなあ.
