From: Thierry Parmentelat Date: Mon, 31 Mar 2008 06:53:43 +0000 (+0000) Subject: cleaned, with marc's agreement X-Git-Tag: tests-4.2-4~135 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=9f165063df66e639797d46a4949bad564ddc3689;p=tests.git cleaned, with marc's agreement --- diff --git a/system/qemu.sh b/system/qemu.sh deleted file mode 100755 index d2cf3e7..0000000 --- a/system/qemu.sh +++ /dev/null @@ -1,278 +0,0 @@ -#!/bin/bash - -# ============================================================================= -# Author: Marco Yuen -# $Date$ -# $Revision$ -# $Author$ -# ============================================================================= -# README -# ------ -# Make sure you have the rights to run SUDO. Otherwise, this script will not -# work. -# ============================================================================= - -############################################################################### -# Configurations -############################################################################### - -# Directory where VDE and QEMU are installed -# Only needed when not in path or when you want to override -#VDEROOT="/usr/local/bin/" -#QEMUROOT="/usr/local/bin/" - -# The network info for tun0 (private interface) -PRIVATE_IP="10.0.2.1" -PRIVATE_NETMASK="255.255.255.0" - -# The network info for tun1 (public interface) -PUBLIC_IP="172.20.0.1" -PUBLIC_NETMASK="255.255.0.0" - -# The default memory size -MEGS="512" - -# The default #CPUS size -CPUS="1" - -# By default do not specify the disk, cdrom, floppy, or boot -DISK1="" -DISK2="" -DISK3="" -DISK4="" -CDROM="" -FLOPPY="" -BOOT="" - -# If VDE is off, use tap/tun by default. Otherwise use ``user''. -MULTIHOMED="no" -TYPE="vde" - -# Which QEMU executable to use -#QEMUEXE="qemu-system_x86_64" -QEMUEXE="qemu" - - - -############################################################################### -# Functions -# Please, DO NOT modify anything below this line, unless you know what you are -# doing. -############################################################################### - -NETWORK_SET="" -function network_set { - if [[ ! -z ${NETWORK_SET} ]]; then - echo "Don't mix -u, -v, -t. Use only one" - exit 1 - fi -} - -function image_check { - IMG=${1} - if [[ ! -w ${IMG} ]]; then - echo "The disk image '${IMG}' doesn't exist or not writtable" - exit 1 - fi -} - -function kill_or_start_vde { - # For good measure, let's kill all the existing vde_switch(es) - if [[ -S /tmp/private.ctl && -S /tmp/public.ctl ]]; then - echo -n "Existing public and private switches found. Kill them?(yes or no) " - read KILLTHEM - - if [[ ${KILLTHEM} == "yes" ]]; then - create_switches - elif [[ ${KILLTHEM} == "no" ]]; then - echo "You are exposing weakness ..." - fi - else - create_switches - fi -} - -function create_switches { - sudo killall -9 vde_switch - echo "Creating new sockets ..." - # Create the private switch - sudo ${VDEROOT}vde_switch -tap tun0 \ - -sock /tmp/private.ctl -daemon - # Create the public switch - sudo ${VDEROOT}vde_switch -tap tun1 \ - -sock /tmp/public.ctl -daemon - # Correct the permissions - sudo chmod 666 /tmp/private.ctl - sudo chmod 666 /tmp/public.ctl - # Setting up network info - sudo ifconfig tun0 ${PRIVATE_IP} netmask ${PRIVATE_NETMASK} - sudo ifconfig tun1 ${PUBLIC_IP} netmask ${PUBLIC_NETMASK} - # Turn on ip forwarding and set up IPTABLE - sudo sysctl -w net.ipv4.ip_forward=1 - # Disable IPTABLES first - sudo /etc/init.d/iptables stop - # XXX Define some rules. - sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE - sudo /etc/init.d/iptables save - sudo /etc/init.d/iptables start -} - -############################################################################### -# Main -############################################################################### - -function usage() { - echo `basename $0` "file" - echo " start qemu with file as hard disk 0 image" - echo "-b [a|c|d]" - echo " Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is the default." - echo "-c file" - echo " Use file as CD-ROM image. You can use the host CD-ROM by using /dev/cdrom as filename." - echo "-f file" - echo " Use file as fda floppy disk image. You can use the host floppy by using /dev/fd0 as filename." - echo "-m megs" - echo " Set virtual RAM size to megs megabytes. Default is ${MEGS} MB." - echo "-s #CPUS" - echo " Set the number of CPUs. Default is ${CPUS} MB." - echo "-n [user|tap|vde]" - echo " vde == VDE based networking. (default = ON)" - echo " tap == tun/tap networking. (default = OFF)" - echo " user == user mode stack for networking. (default = OFF)" - echo "-p mac" - echo " Set the mac address of the nic to specified mac" - echo "-l vmsnapshot" - echo " load vm snapshot" - echo "-o" - echo " Multihome this machine" - echo "-x" - echo " serial console" - echo "-h print help" -} - -MAC="52:54:00:12:34:56" -GRAPHIC= -SNAPSHOT= -while getopts "b:c:f:l:m:n:s:hp:ox" opt ; do - case ${opt} in - # Boot mode options - b) - BOOT=${OPTARG} - ;; - c) - CDROM=${OPTARG} - ;; - f) - FLOPPY=${OPTARG} - ;; - m) - MEGS=${OPTARG} - ;; - s) - CPUS=${OPTARG} - ;; - n) - network_set - [ "${TYPE}" != "${OPTARG}" ] && NETWORK_SET="yes" - TYPE=${OPTARG} - ;; - o) - MULTIHOMED="yes" - ;; - p) - MAC=${OPTARG} - ;; - l) - SNAPSHOT=${OPTARG} - ;; - x) - GRAPHIC=-nographic - ;; - h) - usage - exit 0 - ;; - ?) - usage - exit 1 - ;; - esac -done - -shift $(($OPTIND - 1)) -DISK1=$1 -if [ -z "$DISK1" ]; then - usage - exit 1 -fi -image_check ${DISK1} - -shift -DISK2=$1 -shift -DISK3=$1 -shift -DISK4=$1 -if [ ! -z "${CDROM}" -a ! -z "${DISK4}" ]; then - echo "canot specify cdrom and 4th ide drive (${DISK4})" - exit 1 -fi - -echo "Checking if the kqemu module is loaded ..." -module=$(lsmod | grep kqemu | awk '{print $1}') - -if [[ ${module} == "" ]]; then - echo "Loading kqemu module ... " - #sudo modprobe kqemu - [[ $? != 0 ]] && exit 1 - echo "kqemu loaded." -elif [[ ${module} == "kqemu" ]]; then - echo "kqemu already loaded. Continue ..." -fi - -if [ ! -c /dev/kqemu ] ; then - mknod /dev/kqemu c 250 0 - chmod 600 /dev/kqemu -fi - -QEMU_CMD="${QEMUROOT}${QEMUEXE} ${GRAPHIC} -m ${MEGS} -smp ${CPUS}" -[ ! -z "${SNAPSHOT}" ] && QEMU_CMD="${QEMU_CMD} -loadvm ${SNAPSHOT}" -[ ! -z "${FLOPPY}" ] && QEMU_CMD="${QEMU_CMD} -fda ${FLOPPY}" -[ ! -z "${CDROM}" ] && QEMU_CMD="${QEMU_CMD} -cdrom ${CDROM}" -[ ! -z "${BOOT}" ] && QEMU_CMD="${QEMU_CMD} -boot ${BOOT}" - -[ ! -z "${DISK1}" ] && QEMU_CMD="${QEMU_CMD} -hda ${DISK1}" -[ ! -z "${DISK2}" ] && QEMU_CMD="${QEMU_CMD} -hdb ${DISK2}" -[ ! -z "${CDROM}" -a ! -z "${DISK3}" ] && QEMU_CMD="${QEMU_CMD} -hdd ${DISK3}" -[ -z "${CDROM}" -a ! -z "${DISK3}" ] && QEMU_CMD="${QEMU_CMD} -hdc ${DISK3}" - -case ${TYPE} in - vde) - QEMU_CMD="${VDEROOT}vdeq ${QEMU_CMD}" - echo "Running with VDE ..." - kill_or_start_vde - QEMU_CMD="${QEMU_CMD} -net nic,vlan=0,macaddr=${MAC}" - QEMU_CMD="${QEMU_CMD} -net vde,vlan=0,sock=/tmp/private.ctl" - if [ "${MULTIHOMED}" == "yes" ]; then - QEMU_CMD="${QEMU_CMD} -net nic,vlan=1" - QEMU_CMD="${QEMU_CMD} -net vde,vlan=1,sock=/tmp/public.ctl" - fi - ;; - tap) - echo "still have to fix code -- mef" - exit 1 - ;; - user) - QEMU_CMD="${QEMU_CMD} -net nic -net user" - ;; - *) - echo "invalid networking type" - ;; -esac - -# Executing frontend. -echo ${QEMU_CMD} -if [ -z "${GRAPHIC}" ]; then - ${QEMU_CMD} & -else - ${QEMU_CMD} -fi