#!/bin/sh vmname="${1}" disksize="${2}" ram="${3}" mac=`/cfg/generate_mac.sh` installcd="/data/isofiles/livecd.livecd.iso" test -z "${3}" && echo "/cfg/make_qemu_server.sh vmname disksize(GB) ramsize(MB)" && fexit $LINENO function fexit { echo "EXIT - fexit() in $0 called with $*" exit $1 } ls /data/qemu/"${vmname}" > /dev/null 2>&1 && echo "Directory /data/qemu/"${vmname}" allready exists" && fexit $LINENO mkdir -p /data/qemu/"${vmname}" /cfg/make_qemu_disk.sh /data/qemu/"${vmname}"/"${vmname}".qcow "${disksize}"G echo "#!/bin/sh vmname=\"${vmname}\" disksize=\"${disksize}\" ram=\"${ram}\" mac=\"${mac}\" installcd=\"${installcd}\" " > /data/qemu/"${vmname}".sh echo ' function fexit { echo "EXIT - fexit() called with $*" exit $1 } test "$1" = "nocdrom" && cdstring="-boot c" || cdstring="-cdrom $installcd -boot d" echo "loading kqemu" sudo /cfg/modprobe_kqemu.sh || fexit $LINENO echo "checking for ${vmname}.pid" test -e /data/qemu/"${vmname}".pid && echo "/data/qemu/"${vmname}".pid found, checking ps" && ps > /dev/null `cat /data/qemu/"${vmname}".pid` && echo "Qemu is allready running" && fexit $LINENO || rm -f /data/qemu/"${vmname}".pid echo "starting qemu" test "$1" = "nocdrom" && echo "starting without boot CD" echo "starting sudo qemu -m "${ram}" $cdstring -net nic,vlan=0,macaddr="${mac}" -net tap,vlan=0 -hda /data/qemu/"${vmname}"/"${vmname}".qcow -hdb /data/qemu/template.qcow > /data/qemu/"${vmname}".log 2>&1 &" { sudo qemu -m "${ram}" $cdstring -net nic,vlan=0,macaddr="${mac}" -net tap,vlan=0 -hda /data/qemu/"${vmname}"/"${vmname}".qcow -hdb /data/qemu/template.qcow > /data/qemu/"${vmname}".log 2>&1 & } || fexit $LINENO echo "$!" > /data/qemu/"${vmname}".pid echo -n "qemu pid=" cat /data/qemu/"${vmname}".pid echo "tailing log file /data/qemu/${vmname}.log" tail -f /data/qemu/"${vmname}".log & echo "sleeping 4" sleep 4 echo "getting interface from logfile" dev=`cat /data/qemu/"${vmname}".log | grep interface | cut -d "=" -f 2` echo "dev=${dev}" test -z "$dev" && sudo kill -n 15 `cat /data/qemu/"${vmname}".pid` test -z "$dev" && echo "no net device allocated, qemu killed, exiting 1" && fexit $LINENO kqemucheck=`cat /data/qemu/"${vmname}".log | grep kqemu` #echo "kqemucheck=$kqemucheck" echo "qemu pid" cat /data/qemu/"${vmname}".pid test ! -z "$kqemucheck" && { echo "kqemu not running, killing qemu, exiting 1" && sudo kill -n 9 `cat /data/qemu/"${vmname}".pid` ; fexit $LINENO ; } devnum=`echo "${dev}" | tr -d '[:alpha:]'` echo "devnum=${devnum}" sudo /cfg/setup_interface.sh "${dev}" 10."${devnum}".3.254:255.255.255.0:10."${devnum}".3.255 ' >> /data/qemu/"${vmname}".sh chmod +x /data/qemu/"${vmname}".sh ls /data/qemu/"${vmname}".sh && echo "server created, exiting 0" && exit 0