testing: Add script to chroot into an image

If changes are made to the base or root image the images depending on
these have to be rebuilt.
This commit is contained in:
Tobias Brunner 2015-11-24 11:08:57 +01:00
parent cac9051eed
commit 6466546f81
1 changed files with 67 additions and 0 deletions

67
testing/scripts/chroot Executable file
View File

@ -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