increase memory for test nodes to 2Gb
[tests.git] / system / template-qemu / qemu-start-node
index 9a9e923..7198b03 100755 (executable)
@@ -1,6 +1,8 @@
 #!/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
@@ -12,9 +14,9 @@ COMMAND=$(basename $0)
 cd $(dirname $0)
 
 ########## globals
-# 1 gigabyte ram
-RAM=1024
-DISK_SIZE=18G
+# 2 gigabytes ram
+RAM=2048
+DISK_SIZE=100G
 DISK_FORMAT=qcow2
 DISK_IMAGE=hdd-${DISK_FORMAT}-${DISK_SIZE}.img
 
@@ -34,13 +36,28 @@ CONFIG=qemu.conf
 [ -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;;
-    x86_64)            QEMU=qemu-system-x86_64;;
-    *)                 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)"
@@ -58,11 +75,24 @@ else
     echo "Done"
 fi
 
+echo 'Trying to load the kqemu module'
+if modprobe kqemu &> /dev/null ; then
+    echo "kqemu loaded"
+else
+    echo "WARNING : Could not modprobe kqemu"
+fi
+
+echo 'Checking for a loaded kqemu module'
+lsmod | grep kqemu
+echo 'Checking for /dev/kqemu'
+ls -l /dev/kqemu
+
+echo 'Cleaning up pid file'
 rm -f qemu.pid
 
-#Command for running the Qemu Emulator
-# can't use -daemonize: qemu-ifup: could not launch network script
-ARGS=""
+
+
+# qemu options
 # basics
 ARGS="$ARGS -m ${RAM}"
 ARGS="$ARGS -hda ${DISK_IMAGE}"