]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
testing: Add script to chroot into an image
authorTobias Brunner <tobias@strongswan.org>
Tue, 24 Nov 2015 10:08:57 +0000 (11:08 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 15 Jun 2016 14:24:43 +0000 (16:24 +0200)
If changes are made to the base or root image the images depending on
these have to be rebuilt.

testing/scripts/chroot [new file with mode: 0755]

diff --git a/testing/scripts/chroot b/testing/scripts/chroot
new file mode 100755 (executable)
index 0000000..4f42455
--- /dev/null
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+DIR=$(dirname `readlink -f $0`)
+. $DIR/../testing.conf
+. $DIR/function.sh
+
+[ `id -u` -eq 0 ] || die "You must be root to run $0"
+running_any $STRONGSWANHOSTS && die "Please stop test environment before running $0"
+
+[ -n "$1" ] || die "$0 <image to mount: base|root|<guest>>"
+
+check_commands partprobe qemu-nbd
+
+load_qemu_nbd
+
+mkdir -p $LOOPDIR
+mkdir -p $IMGDIR
+mkdir -p $SHAREDDIR
+
+echo "Mounting image"
+
+case "$1" in
+base)
+       [ -f "$BASEIMG" ] || die "Base image $BASEIMG not found"
+       log_action "Connecting base image to NBD device $NBDEV"
+       execute "qemu-nbd -c $NBDEV $BASEIMG"
+       affected="root and guest"
+       ;;
+root)
+       [ -f "$ROOTIMG" ] || die "Root image $ROOTIMG not found"
+       log_action "Connecting root image to NBD device $NBDEV"
+       execute "qemu-nbd -c $NBDEV $ROOTIMG"
+       affected="guest"
+       ;;
+*)
+       echo $STRONGSWANHOSTS | grep -q "\b$1\b" || die "Guest $1 not found"
+       GUESTIMG="$IMGDIR/$1.$IMGEXT"
+       [ -f "$GUESTIMG" ] || die "Guest image $GUESTIMG not found"
+       log_action "Connecting guest image to NBD device $NBDEV"
+       execute "qemu-nbd -c $NBDEV $GUESTIMG"
+       ;;
+esac
+
+do_on_exit qemu-nbd -d $NBDEV
+partprobe $NBDEV
+
+log_action "Mounting $NBDPARTITION to $LOOPDIR"
+execute "mount $NBDPARTITION $LOOPDIR"
+do_on_exit umount $LOOPDIR
+
+log_action "Mounting proc filesystem to $LOOPDIR/proc"
+execute "mount -t proc none $LOOPDIR/proc"
+do_on_exit umount $LOOPDIR/proc
+
+mkdir -p $LOOPDIR/root/shared
+log_action "Mounting $SHAREDDIR as /root/shared"
+execute "mount -o bind $SHAREDDIR $LOOPDIR/root/shared"
+do_on_exit umount $LOOPDIR/root/shared
+
+if [ -n "$affected" ]; then
+echo
+echo "Rebuild the $affected images after making changes to this image!"
+echo
+fi
+
+export debian_chroot="$1"
+chroot $LOOPDIR /bin/bash -i