#!/bin/bash
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
# it does the following:
# (*) close all file descriptors and redirect output to log.txt
# this is because it is designed for use through ssh from a remote test master controller
cd $(dirname $0)
########## globals
-# 1 gigabyte ram
-RAM=1024
-DISK_SIZE=18G
+# historically we used 1Gb nodes but with fedora20 bootcd with qemu this is not enough
+# OTOH our test infra is old so 2Gb would be a lot
+RAM=$((1024+512))
+DISK_SIZE=100G
DISK_FORMAT=qcow2
DISK_IMAGE=hdd-${DISK_FORMAT}-${DISK_SIZE}.img
[ -f "$CONFIG" ] || { echo "Config file for qemu $CONFIG not found in $(pwd)" ; exit 1 ; }
. $CONFIG
+# NOTE: check if the machine supports 64bits. We'll add -no-kqemu only
+# if it does. On 32bits host, qemu-system-x86_64 doesn't accept this
+# parameter (although it's there in the man page)
+function is_64bits () {
+ return $(cat /proc/cpuinfo | grep "^flags" | grep " lm " > /dev/null)
+}
+
+
# the launcher, depending on target arch
# make sure to check qemu-kill-node for consistency
-case $TARGET_ARCH in
- i386) QEMU=qemu ; ARGS="" ;;
- x86_64) QEMU=qemu-system-x86_64 ; ARGS="" ;;
- *) echo "Cannot handle TARGET_ARCH=$TARGET_ARCH"; exit 1 ;;
-esac
+
+# use kvm if available
+has_kvm=$(type -p qemu-kvm)
+if [ -n "$has_kvm" ] ; then
+ QEMU="qemu-kvm" ; ARGS=""
+else
+ case $TARGET_ARCH in
+ i386) QEMU=qemu ; ARGS="" ;;
+ x86_64) QEMU=qemu-system-x86_64 ; if is_64bits; then ARGS="-no-kqemu"; else ARGS=""; fi ;;
+ *) echo "Cannot handle TARGET_ARCH=$TARGET_ARCH"; exit 1 ;;
+ esac
+fi
echo "Running $COMMAND in $(pwd)"
echo "Starting at $(date)"