処理を分けた方が使いやすいらしい.
一応 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 しちゃうらしい(?).よく出来てんなあ.