68 lines
1.7 KiB
Bash
Executable File
68 lines
1.7 KiB
Bash
Executable File
#!/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
|