From: Colin Watson Date: Tue, 15 Apr 2008 16:10:36 +0000 (+0000) Subject: add chroot-setup, chroot-teardown, and chroot-enter suite of tools X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?p=bin.git;a=commitdiff_plain;h=33e295dac2c0adc43a76279c0a64fbd6d52afe8e add chroot-setup, chroot-teardown, and chroot-enter suite of tools --- diff --git a/chroot-enter b/chroot-enter new file mode 100755 index 0000000..b260b3a --- /dev/null +++ b/chroot-enter @@ -0,0 +1,4 @@ +#! /bin/sh +ROOT="${1:-/chroot/sid}" +chroot-setup "$ROOT" +sudo chroot "$ROOT" su cjwatson diff --git a/chroot-setup b/chroot-setup new file mode 100755 index 0000000..015acda --- /dev/null +++ b/chroot-setup @@ -0,0 +1,27 @@ +#! /bin/sh -e +if [ -e "$1/proc/cmdline" ]; then exit; fi +sudo mount --bind /proc "$1/proc" +sudo mount --bind /sys "$1/sys" +sudo mount --bind /dev "$1/dev" +sudo mount --bind /dev/pts "$1/dev/pts" +mkdir -p "$1/tmp/.X11-unix" "$1/tmp/.ICE-unix" +sudo mount --bind /tmp/.X11-unix "$1/tmp/.X11-unix" +sudo mount --bind /tmp/.ICE-unix "$1/tmp/.ICE-unix" +if [ "$SSH_AUTH_SOCK" ]; then + sudo mkdir -p "$1$(dirname "$SSH_AUTH_SOCK")" + sudo mount --bind "$(dirname "$SSH_AUTH_SOCK")" "$1$(dirname "$SSH_AUTH_SOCK")" +fi +if [ "$GPG_AGENT_INFO" ]; then + sudo mkdir -p "$1$(dirname "$GPG_AGENT_INFO")" + sudo mount --bind "$(dirname "$GPG_AGENT_INFO")" "$1$(dirname "$GPG_AGENT_INFO")" +fi +if [ -d /home/cjwatson/.keychain ]; then + sudo mount --bind /home/cjwatson/.keychain "$1/home/cjwatson/.keychain" +fi +xauth list | sudo chroot "$1" su cjwatson -c 'xargs -l1 xauth add' +rm -f "$1/home/cjwatson/.ICEauthority" +iceauth list | sudo chroot "$1" su cjwatson -c 'xargs -l1 iceauth add' +sudo cp -a /etc/resolv.conf "$1/etc/" +if [ -d /home/cjwatson/src ] && [ -d "$1/home/cjwatson/src" ]; then + sudo mount --bind /home/cjwatson/src "$1/home/cjwatson/src" +fi diff --git a/chroot-teardown b/chroot-teardown new file mode 100755 index 0000000..f7ceed9 --- /dev/null +++ b/chroot-teardown @@ -0,0 +1,29 @@ +#! /bin/sh +set +e # intentional + +ROOT="${1:-/chroot/sid}" + +is_mountpoint () { + grep -q "^[^ ]* $1 " /proc/mounts +} + +maybe_umount () { + if is_mountpoint "$ROOT/${1#/}"; then + sudo umount "$ROOT/${1#/}" + fi +} + +maybe_umount /home/cjwatson/src +maybe_umount /home/cjwatson/.keychain +if [ "$GPG_AGENT_INFO" ]; then + maybe_umount "$(dirname "$GPG_AGENT_INFO")" +fi +if [ "$SSH_AUTH_SOCK" ]; then + maybe_umount "$(dirname "$SSH_AUTH_SOCK")" +fi +maybe_umount /tmp/.ICE-unix +maybe_umount /tmp/.X11-unix +maybe_umount /dev/pts +maybe_umount /dev +maybe_umount /sys +maybe_umount /proc