$KERNEL_APPEND \
"
+ [ -e "$IMAGE_PRIVATE" ] && image="$IMAGE_PRIVATE" || image="$IMAGE_PUBLIC"
QEMU_OPTIONS="-smp $QEMU_SMP \
-net none \
-m $QEMU_MEM \
-nographic \
-kernel $KERNEL_BIN \
--drive format=raw,cache=unsafe,file=${IMAGESTATEDIR}/${IMAGE_NAME}.img \
+-drive format=raw,cache=unsafe,file=$image \
$QEMU_OPTIONS \
"
_size=$((4*_size))
fi
- image="${TESTDIR}/${IMAGE_NAME}.img"
- public="$IMAGESTATEDIR/${IMAGE_NAME}.img"
- echo "Setting up $public (${_size} MB)"
- rm -f "$image" "$public"
+ echo "Setting up $IMAGE_PUBLIC (${_size} MB)"
+ rm -f "$IMAGE_PRIVATE" "$IMAGE_PUBLIC"
# Create the blank file to use as a root filesystem
- truncate -s "${_size}M" "$image"
- ln -vs "$(realpath $image)" "$public"
+ truncate -s "${_size}M" "$IMAGE_PRIVATE"
+ ln -vs "$(realpath $IMAGE_PRIVATE)" "$IMAGE_PUBLIC"
- LOOPDEV=$(losetup --show -P -f "$public")
+ LOOPDEV=$(losetup --show -P -f "$IMAGE_PUBLIC")
[ -b "$LOOPDEV" ] || return 1
sfdisk "$LOOPDEV" <<EOF
,$((_size-50))M
mount_initdir() {
if [ -z "${LOOPDEV}" ]; then
- image="${IMAGESTATEDIR}/${IMAGE_NAME}.img"
+ [ -e "$IMAGE_PRIVATE" ] && image="$IMAGE_PRIVATE" || image="$IMAGE_PUBLIC"
LOOPDEV=$(losetup --show -P -f "$image")
[ -b "$LOOPDEV" ] || return 1
umount_loopback() {
# unmount the loopback device from all places. Otherwise we risk file
# system corruption.
- image="${IMAGESTATEDIR}/${IMAGE_NAME}.img"
- for device in $(losetup -l | awk '$6=="'"$image"'" {print $1}'); do
+ for device in $(losetup -l | awk '$6=="'"$IMAGE_PUBLIC"'" {print $1}'); do
ddebug "Unmounting all uses of $device"
mount | awk '/^'"${device}"'p/{print $1}' | xargs --no-run-if-empty umount -v
done
EOF
export TESTDIR
fi
+
+ IMAGE_PRIVATE="${TESTDIR}/${IMAGE_NAME}.img"
+ IMAGE_PUBLIC="${IMAGESTATEDIR}/${IMAGE_NAME}.img"
}
import_initdir() {
(
set +e
_umount_dir $initdir
- rm -vf "${IMAGESTATEDIR}/${IMAGE_NAME}.img"
+ rm -vf "$IMAGE_PUBLIC"
rm -vfr "$TESTDIR"
rm -vf "$STATEFILE"
) || :
exit 1
fi
- image="${TESTDIR}/${IMAGE_NAME}.img"
- public="${IMAGESTATEDIR}/${IMAGE_NAME}.img"
- if [ -e "$image" ]; then
- echo "Reusing existing image $PWD/$image → $(realpath $image)"
+ if [ -e "$IMAGE_PRIVATE" ]; then
+ echo "Reusing existing image $IMAGE_PRIVATE → $(realpath $IMAGE_PRIVATE)"
mount_initdir
- elif [ -e "$public" ]; then
- echo "Reusing existing cached image $PWD/$public → $(realpath $public)"
- ln -s "$(realpath $public)" "$image"
+ elif [ -e "$IMAGE_PUBLIC" ]; then
+ echo "Reusing existing cached image $IMAGE_PUBLIC → $(realpath $IMAGE_PUBLIC)"
+ ln -s "$(realpath $IMAGE_PUBLIC)" "$IMAGE_PRIVATE"
mount_initdir
else
test_create_image