aboutsummaryrefslogtreecommitdiffstats
path: root/testing/scripts/chroot
blob: 4f42455157bca345b392be453958531fdd613918 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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