From 33e295dac2c0adc43a76279c0a64fbd6d52afe8e Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Tue, 15 Apr 2008 16:10:36 +0000 Subject: [PATCH 1/1] add chroot-setup, chroot-teardown, and chroot-enter suite of tools --- chroot-enter | 4 ++++ chroot-setup | 27 +++++++++++++++++++++++++++ chroot-teardown | 29 +++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100755 chroot-enter create mode 100755 chroot-setup create mode 100755 chroot-teardown 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 -- 2.30.2