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:
parent
cac9051eed
commit
6466546f81
|
@ -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
|
Loading…
Reference in New Issue