| #!/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 |
| |
| log_action "Copy /etc/resolv.conf" |
| execute "cp /etc/resolv.conf $LOOPDIR/etc/resolv.conf" |
| do_on_exit rm $LOOPDIR/etc/resolv.conf |
| |
| 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 |