summaryrefslogtreecommitdiffstats
path: root/src/os-plugins
diff options
context:
space:
mode:
authorDirk2011-07-12 01:28:51 +0200
committerDirk2011-07-12 01:28:51 +0200
commit258716fbe366bb5f0dd619b4b47fb2b611417aa9 (patch)
tree84f186273e828ade607d3d444d895ad69119e5d8 /src/os-plugins
parentNew version vmchooser ... (diff)
downloadcore-258716fbe366bb5f0dd619b4b47fb2b611417aa9.tar.gz
core-258716fbe366bb5f0dd619b4b47fb2b611417aa9.tar.xz
core-258716fbe366bb5f0dd619b4b47fb2b611417aa9.zip
Stuff for virtualization and making qemukvm plugin work properly ...
Diffstat (limited to 'src/os-plugins')
-rw-r--r--src/os-plugins/plugins/qemukvm/XX_qemukvm.sh6
-rw-r--r--src/os-plugins/plugins/qemukvm/files/ifdown17
-rw-r--r--src/os-plugins/plugins/qemukvm/files/ifup30
-rw-r--r--src/os-plugins/plugins/qemukvm/files/run-virt.include45
-rw-r--r--src/os-plugins/plugins/vmchooser/files/run-virt.sh28
-rw-r--r--src/os-plugins/plugins/vmware/files/run-virt.include4
6 files changed, 93 insertions, 37 deletions
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 '<screen param=.*"' ${xmlfile} | awk -F '"' '{ print $2 }' \
+ tr "A-Z" "a-z")
+case "${userres}" in
+ full*)
+ res=$(echo "${hostres}" | awk -F "/" '{print $2}')
+ uxres=${res%\**}
+ uyres=${#*\*}
+ userres="full"
+ ;;
+ win*)
+ res=$(echo "${hostres}" | awk -F "/" '{print $2}')
+ uxres=${res%\**}
+ uyres=${#*\*}
+ userres="win"
+ ;;
+esac
+
+
# Enable 3D
enable3d=$(grep -i "<enable3d param=.*" ${xmlfile} 2>/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"
;;