From 258716fbe366bb5f0dd619b4b47fb2b611417aa9 Mon Sep 17 00:00:00 2001 From: Dirk Date: Tue, 12 Jul 2011 01:28:51 +0200 Subject: Stuff for virtualization and making qemukvm plugin work properly ... --- src/os-plugins/plugins/qemukvm/XX_qemukvm.sh | 6 ++- src/os-plugins/plugins/qemukvm/files/ifdown | 17 ++------ src/os-plugins/plugins/qemukvm/files/ifup | 30 +++++++++------ .../plugins/qemukvm/files/run-virt.include | 45 +++++++++++++++++----- src/os-plugins/plugins/vmchooser/files/run-virt.sh | 28 +++++++++++++- .../plugins/vmware/files/run-virt.include | 4 ++ 6 files changed, 93 insertions(+), 37 deletions(-) (limited to 'src/os-plugins') diff --git a/src/os-plugins/plugins/qemukvm/XX_qemukvm.sh b/src/os-plugins/plugins/qemukvm/XX_qemukvm.sh index ed0205b5..7ee0d690 100644 --- a/src/os-plugins/plugins/qemukvm/XX_qemukvm.sh +++ b/src/os-plugins/plugins/qemukvm/XX_qemukvm.sh @@ -99,12 +99,14 @@ ${qemukvm_imagesrc}." nonfatal # allow to start and stop kvm services / load-/unload kvm modules #ALL ALL=NOPASSWD: /etc/init.d/qemukvm ALL ALL=NOPASSWD: /opt/openslx/rootfs/sbin/tunctl -t tap* +ALL ALL=NOPASSWD: /opt/openslx/rootfs/sbin/tunctl -d tap* ALL ALL=NOPASSWD: /opt/openslx/rootfs/usr/sbin/brctl addif br0 tap* -ALL ALL=NOPASSWD: /opt/openslx/rootfs/bin/ip link set dev tap* up +ALL ALL=NOPASSWD: /opt/openslx/rootfs/bin/ip link set dev tap* * ALL ALL=NOPASSWD: /opt/openslx/rootfs/bin/ip addr add * dev tap* ALL ALL=NOPASSWD: /opt/openslx/rootfs/usr/sbin/udhcpd -S /tmp/qemukvm/*/udhcpd.conf ALL ALL=NOPASSWD: /opt/openslx/rootfs/bin/cp /tmp/qemukvm/*/forwarding /proc/sys/net/ipv4/conf/tap*/forwarding -#ALL ALL=NOPASSWD: ${killall} udhcpd +ALL ALL=NOPASSWD: /opt/openslx/rootfs/bin/cp /tmp/qemukvm/*/forwarding /proc/sys/net/ipv4/conf/br*/forwarding +ALL ALL=NOPASSWD: /opt/openslx/rootfs/bin/kill -9 $(cat /tmp/qemukvm/*/udhcpd.pid) EOF fi else diff --git a/src/os-plugins/plugins/qemukvm/files/ifdown b/src/os-plugins/plugins/qemukvm/files/ifdown index e741d9ca..a79c0edc 100644 --- a/src/os-plugins/plugins/qemukvm/files/ifdown +++ b/src/os-plugins/plugins/qemukvm/files/ifdown @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (c) 2009 - OpenSLX GmbH +# Copyright (c) 2009..11 - OpenSLX GmbH # # This program is free software distributed under the GPL version 2. # See http://openslx.org/COPYING @@ -16,19 +16,8 @@ # get VM_ID through tap name VM_ID=$(echo $1 | grep -oE "0[0-4]$") QKTMPDIR=/tmp/qemukvm/${USER}/${VM_ID} -touch /tmp/qemukvm/udhcpd.pids -chmod 666 tmp/qemukvm/udhcpd.pids - -case "$1" in - tapnat0*) - # kill udhcpd - cat ${QKTMPDIR}/udhcpd.pid >> /tmp/qemukvm/udhcpd-unused.pid - ;; - taphost0*) - # kill udhcpd - cat ${QKTMPDIR}/udhcpd.pid >> /tmp/qemukvm/udhcpd-unused.pid - ;; -esac +sudo /opt/openslx/rootfs/bin/kill -9 $(cat ${QKTMPDIR}/udhcpd.pid) || exit 0 +sudo /opt/openslx/rootfs/bin/ip link set dev $1 down || exit 0 # Produce a clean exit status exit 0 diff --git a/src/os-plugins/plugins/qemukvm/files/ifup b/src/os-plugins/plugins/qemukvm/files/ifup index e53ae3b6..2052903d 100644 --- a/src/os-plugins/plugins/qemukvm/files/ifup +++ b/src/os-plugins/plugins/qemukvm/files/ifup @@ -29,20 +29,25 @@ QKTMPDIR=/tmp/qemukvm/${USER}/${VM_ID} # should be set up (passed in $1): tap0 = bridge, tap1 = nat, tap2 = hostonly. case "$1" in tapbridge0*) - sudo ip link set dev $1 up + sudo /opt/openslx/rootfs/bin/ip link set dev $1 up # TODO: forwarding?, where needed echo "1" >${QKTMPDIR}/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/br0/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/$1/forwarding + sudo /opt/openslx/rootfs/bin/cp ${QKTMPDIR}/forwarding \ + /proc/sys/net/ipv4/conf/br0/forwarding + sudo /opt/openslx/rootfs/bin/cp ${QKTMPDIR}/forwarding \ + /proc/sys/net/ipv4/conf/$1/forwarding ;; tapnat0*) # Configuring DHCP on host tapnat interface and enable IP masquerading - sudo ip addr add ${nataddress} dev $1 - sudo ip link set dev $1 up + # Fixme: Addressing sudo /opt/openslx/rootfs/bin/ip addr add ${nataddress} dev $1 + sudo /opt/openslx/rootfs/bin/ip addr add 192.168.1${VM_ID}.1/24 dev $1 + sudo /opt/openslx/rootfs/bin/ip link set dev $1 up # TODO: forwarding?, where needed echo "1" >${QKTMPDIR}/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/br0/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/$1/forwarding + sudo /opt/openslx/rootfs/bin/cp ${QKTMPDIR}/forwarding \ + /proc/sys/net/ipv4/conf/br0/forwarding + sudo /opt/openslx/rootfs/bin/cp ${QKTMPDIR}/forwarding \ + /proc/sys/net/ipv4/conf/$1/forwarding # TODO: we use here atatic address, maybe change later sed -e "s,NWIF,$1,;s,CNETWORK,192.168.1${VM_ID}," \ -e "s,PIDFILE,${QKTMPDIR}/udhcpd.pid," \ @@ -56,12 +61,15 @@ case "$1" in ;; taphost0*) # Configuring DHCP on host taphost interface - sudo ip addr add ${hoaddress} dev $1 - sudo ip link set dev $1 up + # Fixme: sudo /opt/openslx/rootfs/bin/ip addr add ${hoaddress} dev $1 + sudo /opt/openslx/rootfs/bin/ip addr add 192.168.1${VM_ID}.1/24 dev $1 + sudo /opt/openslx/rootfs/bin/ip link set dev $1 up # TODO: forwarding?, where needed echo "1" >${QKTMPDIR}/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/br0/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/$1/forwarding + sudo /opt/openslx/rootfs/bin/cp ${QKTMPDIR}/forwarding \ + /proc/sys/net/ipv4/conf/br0/forwarding + sudo /opt/openslx/rootfs/bin/cp ${QKTMPDIR}/forwarding \ + /proc/sys/net/ipv4/conf/$1/forwarding sed -e "s,NWIF,$1,;s,USER,${USER},;s,CNETWORK,192.168.1${VM_ID}," \ -e "s,PIDFILE,${QKTMPDIR}/udhcpd.pid," \ -e "s,LEASEFILE,${QKTMPDIR}/udhcpd.leases," \ diff --git a/src/os-plugins/plugins/qemukvm/files/run-virt.include b/src/os-plugins/plugins/qemukvm/files/run-virt.include index 2fb4ef8c..728801c1 100644 --- a/src/os-plugins/plugins/qemukvm/files/run-virt.include +++ b/src/os-plugins/plugins/qemukvm/files/run-virt.include @@ -52,11 +52,40 @@ else exit 1 fi -# hot keys ALT+CTRL+SHIFT -VIRTCMDOPTS="${VIRTCMDOPTS} -alt-grab" +# disable kvm for a range of older operating systems +case "${vmostype}" in + beos*|win*3*|win*9*) + VIRTCMDOPTS="${VIRTCMDOPTS} -no-kvm" + if [ "${totalmem}" -ge "1000" ]; then + forcemem=512 + else + forcemem=256 + fi + # add some OS specific options if required + emu="qemu" + ;; + win*3*) + VIRTCMDOPTS="${VIRTCMDOPTS} -no-kvm" + forcemem=32 + emu="qemu" + ;; + win*95) + VIRTCMDOPTS="${VIRTCMDOPTS} -no-kvm" + forcemem=96 + emu="qemu" + ;; + win*) + VIRTCMDOPTS="${VIRTCMDOPTS} -no-kvm" + forcemem=256 + emu="qemu" + ;; +esac + +# hot keys ALT+CTRL+SHIFT (does not work properly!?) +#VIRTCMDOPTS="${VIRTCMDOPTS} -alt-grab" # display name, remove blanks because of cmdline problems -displayname=$(echo ${displayname} | sed -e "s, ,-,g") +displayname=$(echo ${displayname} | sed -e "s, ,-,g;s,(,[,g;s,),],g") VIRTCMDOPTS="${VIRTCMDOPTS} -name ${displayname}" writelog "Directories:" @@ -125,21 +154,19 @@ case "${network_kind}" in sudo /opt/openslx/rootfs/sbin/tunctl -t tapbridge${VM_ID} -u ${USER} \ >/dev/null 2>&1 sudo /opt/openslx/rootfs/usr/sbin/brctl addif br0 tapbridge${VM_ID} - POSTRUN="/opt/openslx/rootfs/sbin/tunctl -d tapbridge${VM_ID}" + POSTRUN="sudo /opt/openslx/rootfs/sbin/tunctl -d tapbridge${VM_ID}" ;; nat) VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tapnat${VM_ID},${qemu_ifscr}" sudo /opt/openslx/rootfs/sbin/tunctl -t tapnat${VM_ID} -u ${USER} \ >/dev/null 2>&1 - sudo /opt/openslx/rootfs/usr/sbin/brctl addif br0 tapnat${VM_ID} - POSTRUN="/opt/openslx/rootfs/sbin/tunctl -d tapnat${VM_ID}" + POSTRUN="sudo /opt/openslx/rootfs/sbin/tunctl -d tapnat${VM_ID}" ;; host*) VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=taphost${VM_ID},${qemu_ifscr}" sudo /opt/openslx/rootfs/sbin/tunctl -t taphost${VM_ID} -u ${USER} \ >/dev/null 2>&1 - sudo /opt/openslx/rootfs/usr/sbin/brctl addif br0 taphost${VM_ID} - POSTRUN="/opt/openslx/rootfs/sbin/tunctl -d taphost${VM_ID}" + POSTRUN="sudo /opt/openslx/rootfs/sbin/tunctl -d taphost${VM_ID}" ;; *) network_kind="user" @@ -268,7 +295,7 @@ writelog "\tNetwork kind:\t\t${network_kind}" #-show-cursor show cursor # check for kvm modules -if [ -c /dev/kvm ]; then +if [ -c /dev/kvm -a "x${emu}" != "xqemu" ]; then for tool in kvm qemu-kvm; do VIRTCMD=$(which ${tool} 2>/dev/null) [ -n "$VIRTCMD" ] && break diff --git a/src/os-plugins/plugins/vmchooser/files/run-virt.sh b/src/os-plugins/plugins/vmchooser/files/run-virt.sh index 76ddacf9..f796271d 100644 --- a/src/os-plugins/plugins/vmchooser/files/run-virt.sh +++ b/src/os-plugins/plugins/vmchooser/files/run-virt.sh @@ -337,6 +337,26 @@ hostres=$(xvidtune -show 2>/dev/null| grep -ve "^$") xres=$(echo "${hostres}" | awk '{print $3}') yres=$(echo "${hostres}" | awk '{print $7}') +# Resolution defined via xml parameter: fullscreen, full/X*Y/depth; windowed, +# win/X*Y/depth +userres=$(grep -io '/dev/null | \ awk -F '=' {'print $2'}) @@ -394,13 +414,19 @@ if [ -e ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include ] ; then fi eval ${VIRTCMD} ${VIRTCMDOPTS} writelog "Bye." + + # Postrun for commands after virtualization finishes + if [ -n "${POSTRUN}" ]; then + eval ${POSTRUN} >/dev/null 2>&1 + fi + cleanexit 0 else writelog "Failed because of missing ${xmlvirt} plugin." cleanexit 1 fi -# Postrun for scripts after virtualization finishes +# Postrun for commands after virtualization finishes if [ -n "${POSTRUN}" ]; then eval ${POSTRUN} >/dev/null 2>&1 fi diff --git a/src/os-plugins/plugins/vmware/files/run-virt.include b/src/os-plugins/plugins/vmware/files/run-virt.include index 14b5f0c1..8a2ef6c4 100644 --- a/src/os-plugins/plugins/vmware/files/run-virt.include +++ b/src/os-plugins/plugins/vmware/files/run-virt.include @@ -372,6 +372,10 @@ case "${vmostype}" in numvcpus="1" vmostype="other" ;; + beos*) + numvcpus="1" + vmostype="other" + ;; *) vmostype="other" ;; -- cgit v1.2.3-55-g7522