summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xremote/modules/vmchooser/data/opt/openslx/vmchooser/bin/run-virt.sh440
-rwxr-xr-xremote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmplayer8
-rwxr-xr-xremote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmware8
-rwxr-xr-xremote/modules/vmchooser/data/opt/openslx/vmchooser/bin/xmlfilter.sh50
-rw-r--r--remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-left.pngbin0 -> 9187 bytes
-rw-r--r--remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-right.pngbin0 -> 3390 bytes
-rw-r--r--remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx.ini4
-rw-r--r--remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-left.pngbin0 -> 11337 bytes
-rw-r--r--remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-right.pngbin0 -> 3082 bytes
-rw-r--r--remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets.ini4
-rw-r--r--remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_l.pngbin0 -> 17458 bytes
-rw-r--r--remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_r.pngbin0 -> 4113 bytes
-rw-r--r--remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/unifr.ini4
-rwxr-xr-xremote/modules/vmchooser/data/usr/share/xsessions/default.desktop4
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/etc/init.d/vmware-env139
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/machine.include120
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/run-virt.include441
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.conf4
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.include56
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/run-virt.include532
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/vmware.conf8
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/udhcpd.conf37
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/vmware/config4
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/vmware/nat.conf9
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/vmware/smb.conf25
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet1.conf37
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet8.conf37
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/vmware/usbarb.rules0
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/etc/vmware/vmnet-natd-8.mac1
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/run-virt.sh440
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/vmchooserbin0 -> 1563753 bytes
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/xmlfilter.sh50
-rw-r--r--remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmware/run-virt.include532
l---------remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/run-virt.sh1
l---------remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmchooser1
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmplayer8
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmware8
l---------remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/xmlfilter.sh1
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/vmchooser/default.desktop10
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/vmchooser/mesgdispbin0 -> 222820 bytes
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/vmchooser/printer.sh10
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/vmchooser/scanner.sh4
-rwxr-xr-xremote/modules/vmchooser/vmchooser-temp/vmchooser/smb.conf25
-rw-r--r--remote/modules/vmchooser/vmchooser.conf2
l---------remote/targets/stage32-vmchooser/busybox1
l---------remote/targets/stage32-vmchooser/consolekit1
l---------remote/targets/stage32-vmchooser/dbus1
l---------remote/targets/stage32-vmchooser/debug1
l---------remote/targets/stage32-vmchooser/kdm1
l---------remote/targets/stage32-vmchooser/kernel1
l---------remote/targets/stage32-vmchooser/pam1
l---------remote/targets/stage32-vmchooser/plymouth1
l---------remote/targets/stage32-vmchooser/policykit1
l---------remote/targets/stage32-vmchooser/rootfs-stage321
l---------remote/targets/stage32-vmchooser/rsyslogd1
l---------remote/targets/stage32-vmchooser/sshd1
l---------remote/targets/stage32-vmchooser/systemd1
l---------remote/targets/stage32-vmchooser/vmchooser1
l---------remote/targets/stage32-vmchooser/xorg1
59 files changed, 3076 insertions, 3 deletions
diff --git a/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/run-virt.sh b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/run-virt.sh
new file mode 100755
index 00000000..b3863a2e
--- /dev/null
+++ b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/run-virt.sh
@@ -0,0 +1,440 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Copyright (c) 2007..2010 - RZ Uni FR
+# Copyright (c) 2007..2011 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# run-virt.sh
+# - This is the generic wrapper for the several virtualization solutions.
+# The idea is to setup a set of variables used by at least two different
+# tools and then include the specific plugin which configures the speci-
+# fied virtualization tool.
+################################################################################
+
+. /etc/opt/openslx/openslx.conf
+
+################################################################################
+### Define default dirs / get configs
+################################################################################
+
+PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins
+PLUGINCONFDIR=${PLUGINCONFROOT}/vmchooser
+# include general configuration from vmchooser
+[ -f ${PLUGINCONFROOT}/vmchooser/vmchooser.conf ] && \
+ . ${PLUGINCONFROOT}/vmchooser/vmchooser.conf
+# load general virtualization information
+[ -f ${PLUGINCONFROOT}/virtualization/virtualization.conf ] && \
+ . ${PLUGINCONFROOT}/virtualization/virtualization.conf
+
+################################################################################
+### Functions used throughout the script
+################################################################################
+
+# function to write to stdout and logfile
+LOGFILE=${OPENSLX_DEFAULT_LOGDIR}/run-virt.${USER}.$$.log
+writelog () {
+ # write to stdout
+ echo -e "$1"
+ # log into file
+ echo -e "$1" >> ${LOGFILE}
+}
+
+# remove config dirs when exit
+cleanexit () {
+ if echo "${RMDIRS}" 2>/dev/null | grep -q ${xmlvirt}; then
+ writelog "${xmlvirt} exited. Cleanning up... \c"
+ rm -rf ${RMDIRS} >/dev/null 2>&1
+ writelog "done"
+ fi
+
+ exit "$1"
+}
+
+# check for important files used
+filecheck ()
+{
+ filecheck=$(LANG=us ls -lh ${diskfile} 2>&1)
+ writelog "Filecheck:\n${filecheck}\n"
+ noimage=$(echo ${filecheck} | grep -i "no such file or directory" | wc -l)
+ rightsfile=${diskfile}
+
+ # check if link
+ if [ -L "${diskfile}" ]; then
+ # take link target
+ rightsfile=$(ls -lh ${diskfile} 2>&1 | awk -F '-> *' '{print $2}')
+ rightsfile=${vmdir}/${rightsfile}
+ filecheck=$(LANG=us ls -lh ${rightsfile} 2>&1)
+ fi
+
+ # does file exist
+ if [ "${noimage}" -ge "1" ]; then
+ writelog "Virtual Machine Image Problem:\c "
+ writelog "\tThe image you've specified doesn't exist."
+ writelog "Filecheck says:\c "
+ writelog "\t\t${diskfile}:\n\t\t\tNo such file or directory"
+ writelog "Hint:\c "
+ writelog "\t\t\tCompare spelling of the image with your options.\n"
+ exit 1
+ fi
+
+ # readable by calling user
+ if ! [ -r "${diskfile}" >/dev/null 2>&1 \
+ -o -r "${diskfile}" >/dev/null 2>&1 ]; then
+ writelog "Vmware Image Problem:\c "
+ writelog "\tThe image you've specified has wrong rights."
+ writelog "Filecheck says:\t\t$(echo ${filecheck} \
+ | awk '{print $1" "$3" "$4}') ${rightsfile}"
+ writelog "Hint:\t\t\tChange rights with: chmod a+r ${rightsfile}\n"
+ exit 1
+ fi
+
+ # writable (for persistent-mode)?
+ if ! [ -w "${diskfile}" >/dev/null 2>&1 \
+ -o -w "${diskfile}" >/dev/null 2>&1 ] \
+ && [ "${np}" = "independent-persistent" ]; then
+ writelog "Vmware Image Problem:\c "
+ writelog "\tThe image you have specified has wrong rights."
+ writelog "Filecheck says:\t\t$(echo ${filecheck} \
+ | awk '{print $1" "$3" "$4}') ${rightsfile}"
+ writelog "Hint:\t\t\tUse nonpersistent-mode or change rights to rw\n"
+ exit 1
+ fi
+}
+
+################################################################################
+### Get XML file and dir
+################################################################################
+
+# absolute or relative path?
+xmlfile=$1
+if ls ${xmlfile} 2>/dev/null | grep '/' >/dev/null 2>&1; then
+ xmlpath=$(dirname ${xmlfile})
+ xmlfile=$(basename ${xmlfile})
+else
+ xmlpath=${vmchooser_xmlpath}
+fi
+# full path
+xmlfile="${xmlpath}/${xmlfile%.xml}.xml"
+
+################################################################################
+### Sanity checks
+################################################################################
+
+# test if the xml file is valid
+if ! [ -r "${xmlfile}" ]; then
+ writelog "${xmlfile} not a readable XML file!"
+ exit 1
+fi
+
+# test if XML file
+if ! grep '<?xml' "${xmlfile}" >/dev/null 2>&1; then
+ writelog \
+ "Submitted configuration file ${xmlfile} seems to have wrong XML format"
+ exit 1
+fi
+
+# check for running in graphical environment otherwise no much use here
+[ -z "$DISPLAY" ] && echo -e "\n\tStart only within a graphical desktop!\n" \
+ && exit 1
+
+################################################################################
+### Logo for console
+################################################################################
+
+cat <<EOL
+ __ __
+ .----.--.--.-----.___.--.--.|__|.----.| |_
+ | _| | | |___| | || || _|| _|
+ |__| |_____|__|__| \___/ |__||__| |____|
+ OpenSLX virtual machine environment preparation script ...
+
+EOL
+
+################################################################################
+### Read needed variables from XML file
+################################################################################
+
+writelog "Starting configuration..."
+writelog "\tLogfile:\t\t${LOGFILE}"
+writelog "\t/tmp info:\t\t$(df -h | grep " /tmp$" | awk '{print $2}') \c"
+writelog "$(grep "/tmp " /proc/mounts | awk '{print $1" "$2" "$3" "$4}')"
+writelog "\tVM XML dir:\t\t$(dirname ${xmlfile})"
+writelog "\tXML file:\t\t${xmlfile}"
+writelog "VM config:"
+
+# Name of the virt image
+imgname=$(grep -io '<image_name param=.*"' ${xmlfile} \
+ | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }')
+
+# Imagename /w full path
+if echo ${imgname} 2>/dev/null | grep -q '^/' >/dev/null 2>&1; then
+ imgpath=$(dirname ${imgname})
+ imgname=$(basename ${imgname})
+ vmpath=${imgpath}/${imgname}
+# If old vmchooser binary stuff
+# We do not need folder name as it is already included by vmchooser
+elif echo ${xmlfile} 2>/dev/null | grep -q '^/tmp/' >/dev/null 2>&1; then
+ vmpath=$imgname
+ imgname=$(basename ${imgname})
+# Else use same path as xml
+else
+ imgpath=${xmlpath}
+ vmpath=${imgpath}/${imgname}
+fi
+
+# Check if virtual machine container file exists
+if ! [ -e "${vmpath}" ]; then
+ writelog "Virtual machine image ${vmpath} not found!"
+ exit 1
+fi
+
+# Name of the virt machine, sed because of Windows formatting
+vm_name=$(grep -o 'short_description param=.*"' ${xmlfile} \
+ | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}')
+# If ${vm_name} not defined use ${xmlfile}
+vm_name=${vm_name:-${xmlfile%.xml}}
+
+# Define vm_shortname since vm_name can be very long
+vm_shortname=$(basename ${xmlfile%.xml} | sed -e "s, ,-,g")
+
+# vm_name = displayname, define for old scripts
+displayname=${vm_name}
+
+# image is for the following virtual machine
+xmlvirt=$(grep -o 'virtualmachine param=.*"' ${xmlfile} \
+ | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}')
+
+# choose the proper virtualization/emulator plugin
+[ "x${xmlvirt}" != "x" -a "x${xmlvirt}" != "xqemukvm" -a \
+ "x${xmlvirt}" != "xvirtualbox" -a "x${xmlvirt}" != "xvmware" ] && \
+ xmlvirt="emufe"
+
+# make a guess from the filename extension if ${xmlvirt} is empty
+# (not set within the XML file)
+# TODO: implement possibility to submit own configuration files
+if [ -z "${xmlvirt}" ] && [ -n "${additional_config}" ]; then
+ writelog "No virtual machine parameter defined in ${xmlfile}"
+ writelog "Trying to guess VM...\c"
+ case "$(cat ${additional_config} | tr \"[A-Z]\" \"[a-z]\")" in
+ *config.version*|*virtualhw.version*|*independent-nonpersistent*|*vmdk*)
+ xmlvirt="vmware"
+ ;;
+ *innotek*|*virtualbox*)
+ xmlvirt="virtualbox"
+ ;;
+ *qemu*|*kvm*)
+ xmlvirt="qemukvm"
+ ;;
+ *)
+ xmlvirt="none"
+ ;;
+ esac
+elif [ -z "${xmlvirt}" ]; then
+ case "$(echo ${imgname##*.} | tr \"[A-Z]\" \"[a-z]\")" in
+ vmdk)
+ xmlvirt="vmware"
+ ;;
+ vbox|vdi)
+ xmlvirt="virtualbox"
+ ;;
+ qcow*)
+ xmlvirt="qemukvm"
+ ;;
+ *)
+ xmlvirt="emufe"
+ ;;
+ esac
+ writelog "result:\t${xmlvirt}"
+fi
+
+# Definition of the client system
+vmostype=$(grep -io '<os param=.*"' ${xmlfile} | awk -F '"' '{ print $2 }' |\
+ tr "[A-Z]" "[a-z]")
+
+# Definition of the networking the client system is connected to
+network_kind=$(grep -io '<network param=.*"' ${xmlfile} \
+ | awk -F '"' '{ print $2 }' | tr "[A-Z]" "[a-z]")
+network_card=$(grep -io '<netcard param=.*"' ${xmlfile} \
+ | awk -F '"' '{ print $2 }'| tr "[A-Z]" "[a-z]")
+
+# Set redirects to 0, see vmgrid if you want to define some
+redirects=0
+
+# Serial/parallel ports defined (e.g. "ttyS0" or "autodetect")
+serial=$(grep -io '<serialport param=.*"' ${xmlfile} \
+ | awk -F '"' '{ print $2 }')
+parallel=$(grep -io '<parport param=.*"' ${xmlfile} \
+ | awk -F '"' '{ print $2 }')
+
+writelog "\tVirtualization:\t\t$xmlvirt"
+writelog "\tVM name:\t\t$vm_name"
+writelog "\tVM short name:\t\t$vm_shortname"
+
+###############################################################################
+### Declaration of default variables
+###############################################################################
+
+# VM-ID static (00)
+VM_ID="00"
+# take last two digits of current pid...
+VM_ID=$(expr substr $$ $(expr ${#$} - 1) 2)
+
+# Make sure cpu_cores is not empty
+cpu_cores=${cpu_cores:-"1"}
+
+# Total amount of memory defined in stage 3
+# TODO: Should be dependent on the setup (if diff is written to RAM ...)
+permem=60
+if [ "x${VMCHOOSER_FORCE_HALF_MEM}" == "x1" ]; then
+ permem=30
+fi
+# Get a result which can be divided through 4
+mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4)
+if [ -n "${mainvirtmem}" ]; then
+ forcemem=$(expr ${mainvirtmem} / 4 \* 4)
+ mem=${forcemem}
+fi
+hostmem=$(expr ${totalmem} - ${mem})
+
+# Configuring ethernet mac address: first 3 bytes are fixed (00:50:56)
+# 4th byte is the VM-ID (0D)
+# last two bytes are taken from the bridge of the host
+# define one MAC per guest
+macguestpart="00:50:56:${VM_ID}"
+machostpart=$(echo ${hostmacaddr} | awk -F ":" '{print $(NF-1)":"$NF}')
+macaddr=$(echo "${macguestpart}:${machostpart}" | tr "[a-z]" "[A-Z]")
+
+# Virtual fd/cd/dvd and drive devices, floppy b: for configuration
+# if $floppy_0 from run-virt.include set then fdtest="TRUE"
+fdtest=
+fdtest=${floppy_0:+"TRUE"}
+# if $fdtest not set floppy0="FALSE", else "TRUE"
+floppy0=${fdtest:-"FALSE"}
+floppy1="TRUE"
+floppy1name="${PLUGINCONFDIR}/loopimg/fd.img"
+# if $cdrom_0 from run-virt.include set then cdtest="TRUE"
+cdtest=
+cdtest=${cdrom_0:+"TRUE"}
+# if $cdtest not set cdrom0="FALSE", else "TRUE"
+cdrom0=${cdtest:-"FALSE"}
+# if $cdrom_1 from run-virt.include set then cdtest="TRUE"
+cdtest=
+cdtest=${cdrom_1:+"TRUE"}
+# if $cdtest not set cdrom1="FALSE", else "TRUE"
+cdrom1=${cdtest:-"FALSE"}
+# IDE is expected default, test for the virtual disk image type should
+# be done while creating the runscripts ...
+ide="TRUE"
+scsi="FALSE"
+hddrv="ide"
+audio="true"
+remotedesktopport="590${VM_ID}"
+
+# Display resolution within the host system
+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'} | tr "[A-Z]" "[a-z]")
+
+# Add rw share
+sharepath="${HOME}"
+sharename="home"
+
+# Set hostname: using original hostname and adding string
+hostname="virt-$(hostname)"
+
+writelog "\tVM Hostname:\t\t$hostname"
+
+################################################################################
+### Setup the rest of the environment and run the configured vm
+################################################################################
+
+# Adjust sound volume
+writelog "Unmuting sound...\c "
+amixer -q sset Master 80% unmute 2>/dev/null
+amixer -q sset PCM 80% unmute 2>/dev/null
+amixer -q sset CD 80% unmute 2>/dev/null
+amixer -q sset Headphone 80% unmute 2>/dev/null
+amixer -q sset Front 80% unmute 2>/dev/null # in SUSE 11.0 it's headphone
+amixer -q sset Speaker 80% unmute 2>/dev/null # annoying built-in speaker
+writelog "finished\n"
+
+# Copy guest configuration (with added information) config.xml to be accessed
+# via virtual floppy
+# fixme -> to be changed (vmchooser adapts the file content!?)
+#TODO: wozu echo?
+#echo "Please fix the config.xml generation"
+cp ${xmlfile} ${PLUGINCONFDIR}/fd-loop/config.xml
+
+# Get all virtual machine specific stuff from the respective include file
+if [ -e ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include ] ; then
+ self=${xmlvirt}
+ . ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include
+ # start a windowmanager for easier handling
+ # (expect problems /w windows opening in background /w vmware without wm)
+ for dm in xfwm4 metacity openbox blackbox kwin fvwm2 ; do
+ if which $dm >/dev/null 2>&1 ; then
+ if [ "$dm" = "fvwm2" ] ; then
+ echo "EdgeScroll 0 0" > ${redodir}/fvwm
+ fvwm2 -f ${redodir}/fvwm >/dev/null 2>&1 &
+ else
+ $dm >/dev/null 2>&1 &
+ fi
+ break
+ fi
+ done
+ # Start poolvideoswitch if we find the autostarter file
+ if [ -e /etc/xdg/autostart/pvsgui.desktop ]; then
+ /usr/local/bin/pvsgui -p 2 -b >/dev/null 2>&1 &
+ 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 commands after virtualization finishes
+if [ -n "${POSTRUN}" ]; then
+ eval ${POSTRUN} >/dev/null 2>&1
+fi
+
+cleanexit 0
+exit 0
diff --git a/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmplayer b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmplayer
new file mode 100755
index 00000000..c9b57a65
--- /dev/null
+++ b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmplayer
@@ -0,0 +1,8 @@
+#!/bin/sh
+# written by OpenSLX-plugin 'vmware' in Stage1
+# radically simplified version of the original script vmplayer by VMware Inc.
+PREFIX=/usr/lib/vmware # depends on the vmware location
+exec "$PREFIX"'/lib/wrapper-gtk24.sh' \
+ "$PREFIX"'/lib' \
+ "$PREFIX"'/bin/vmplayer' \
+ "$PREFIX"'/libconf' "$@"
diff --git a/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmware b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmware
new file mode 100755
index 00000000..8b568f53
--- /dev/null
+++ b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmware
@@ -0,0 +1,8 @@
+#!/bin/sh
+# written by OpenSLX-plugin 'vmware' in Stage1
+# radically simplified version of the original script vmware by VMware Inc.
+PREFIX=/usr/lib/vmware # depends on the vmware location
+exec "$PREFIX"'/lib/wrapper-gtk24.sh' \
+ "$PREFIX"'/lib' \
+ "$PREFIX"'/bin/vmware' \
+ "$PREFIX"'/libconf' "$@"
diff --git a/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/xmlfilter.sh b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/xmlfilter.sh
new file mode 100755
index 00000000..ded5d114
--- /dev/null
+++ b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/xmlfilter.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Copyright (c) 2007..2009 - RZ Uni FR
+# Copyright (c) 2007..2011 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# xmlfilter.sh
+# - This script is invoked by the vmchooser tool. It simply filters xml-
+# files (taking the path to these files in $1). You might modify it in any
+# way to match your needs, e.g. ask some database instead. You can re-
+# implement it in any other programming language too. You simply have to
+# return a list of proper xml files to be interpreted by the vmchooser
+# binary). Please check for vmchooser.sh too ...
+# -----------------------------------------------------------------------------
+
+# This script .
+#
+# currently:
+# - filter for slxgrp (which comes from /etc/machine-setup)
+#
+
+# include default directories
+. /etc/opt/openslx/openslx.conf
+
+if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf ]; then
+ . ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf
+fi
+
+for FILE in $(find $1 -iname "*.xml"); do
+ # filter all xmls which aren't set active
+ if [ $(grep "<active param=.*true.*" ${FILE} | wc -l) -eq 1 ]; then
+ if [ -n ${vmchooser_env} ]; then
+ # filter all xmls with pool-param not equal to vmchooser::env
+ if [ $(grep "<pools param=\"${vmchooser_env}\"" ${FILE} | wc -l) -eq 1 ];\
+ then
+ echo ${FILE};
+ fi
+ else
+ # if there is no pool set, just take all available xmls
+ echo -e ${active}
+ fi
+ fi
+done
diff --git a/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-left.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-left.png
new file mode 100644
index 00000000..900dd867
--- /dev/null
+++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-left.png
Binary files differ
diff --git a/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-right.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-right.png
new file mode 100644
index 00000000..8ca9347b
--- /dev/null
+++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-right.png
Binary files differ
diff --git a/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx.ini b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx.ini
new file mode 100644
index 00000000..57a22821
--- /dev/null
+++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx.ini
@@ -0,0 +1,4 @@
+background-color=#ffffff
+image-right=openslx-right.png
+image-left=openslx-left.png
+
diff --git a/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-left.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-left.png
new file mode 100644
index 00000000..c8736b72
--- /dev/null
+++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-left.png
Binary files differ
diff --git a/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-right.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-right.png
new file mode 100644
index 00000000..e21f0d8b
--- /dev/null
+++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-right.png
Binary files differ
diff --git a/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets.ini b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets.ini
new file mode 100644
index 00000000..d9aa17f6
--- /dev/null
+++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets.ini
@@ -0,0 +1,4 @@
+background-color=#ffffff
+image-right=planets-right.png
+image-left=planets-left.png
+
diff --git a/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_l.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_l.png
new file mode 100644
index 00000000..e602ccd1
--- /dev/null
+++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_l.png
Binary files differ
diff --git a/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_r.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_r.png
new file mode 100644
index 00000000..3edbcb0c
--- /dev/null
+++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_r.png
Binary files differ
diff --git a/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/unifr.ini b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/unifr.ini
new file mode 100644
index 00000000..dadcb4e1
--- /dev/null
+++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/unifr.ini
@@ -0,0 +1,4 @@
+background-color=#003592
+image-right=title_r.png
+image-left=title_l.png
+
diff --git a/remote/modules/vmchooser/data/usr/share/xsessions/default.desktop b/remote/modules/vmchooser/data/usr/share/xsessions/default.desktop
index c6a0f825..48812a8e 100755
--- a/remote/modules/vmchooser/data/usr/share/xsessions/default.desktop
+++ b/remote/modules/vmchooser/data/usr/share/xsessions/default.desktop
@@ -4,7 +4,7 @@ Name=virtual machine chooser (default)
Name[de]=Virtuelle Maschine auswählen
Comment=This session starts the vm session chooser
Comment[de]=Diese Sitzung startet das Auswahlmenü für die vorhandenen Sitzungen
-Exec=/openslx/bin/vmchooser
-TryExec=/openslx/bin/vmchooser
+Exec=/opt/openslx/vmchooser/bin/vmchooser -c /etc/openslx/vmchooser/vmchooser.conf
+TryExec=/opt/openslx/vmchooser/bin/vmchooser -c /etc/openslx/vmchooser/vmchooser.conf
Icon=
Type=Application
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/init.d/vmware-env b/remote/modules/vmchooser/vmchooser-temp/etc/init.d/vmware-env
new file mode 100755
index 00000000..78fac650
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/init.d/vmware-env
@@ -0,0 +1,139 @@
+#!/bin/sh
+# Copyright (c) 2009 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# §filename§
+# - §desc§
+# §generated§
+# -----------------------------------------------------------------------------
+
+### BEGIN INIT INFO
+# Provides: vmware-slx
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 1
+# Short-Description: Setup environment for VMware Workstation or Player (local5X).
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+#functions: helper functions
+tempdir () {
+# Create a special tempfs directory
+mkdir -m 1777 -p /tmp/vmware
+# Don't mount special tempfs, when using local harddrive for /tmp
+[ ! -n "$(cat /proc/mounts |grep ' /tmp '|grep '/dev/sd')" ] \
+ && mount -t tmpfs -o size=180%,mode=1777 tmpfs /tmp/vmware
+
+}
+
+load_modules () {
+# VMplayer common stuff
+insmod /lib/modules/$(uname -r)/misc/vmmon.ko || return 1
+insmod /lib/modules/$(uname -r)/misc/vmnet.ko || return 1
+# VMplayer 3.X specific stuff
+insmod /lib/modules/$(uname -r)/misc/vmci.ko
+insmod /lib/modules/$(uname -r)/misc/vmblock.ko
+insmod /lib/modules/$(uname -r)/misc/vsock.ko
+
+}
+
+unload_modules () {
+rmmod vmnet vmmonvsock vmci vmblock 2>/dev/null
+}
+
+vmnetif () {
+# let point the path directly to the directory where the binary lives
+location="/usr/bin"
+if [ -n "$vmnet0" ] ; then
+ # the path might be directly point to the plugin dir
+ $location/vmnet-bridge -d /var/run/vmnet-bridge-0.pid -n 0
+fi
+if [ -n "$vmnet1" ] ; then
+ $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid \
+ /dev/vmnet1 vmnet1
+ ip addr add $vmnet1 dev vmnet1
+ ip link set vmnet1 up
+ if [ -n "$vmnet1nat" ] ; then
+ echo "1" >/proc/sys/net/ipv4/conf/vmnet1/forwarding 2>/dev/null
+ echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null
+ #iptables -A -s vmnet1 -d br0
+ fi
+ /opt/openslx/rootfs/usr/sbin/udhcpd \
+ -S /etc/vmware/udhcpd/udhcpd-vmnet1.conf
+fi
+if [ -n "$vmnet8" ] ; then
+ $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet8.pid \
+ /dev/vmnet8 vmnet8
+ ip addr add $vmnet8 dev vmnet8
+ ip link set vmnet8 up
+ echo "1" >/proc/sys/net/ipv4/conf/vmnet8/forwarding 2>/dev/null
+ echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null
+ iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
+ # /etc/vmware/vmnet-natd-8.mac simply contains a mac like 00:50:56:F1:30:50
+ $location/vmnet-natd -d /var/run/vmnet-natd-8.pid \
+ -m /etc/vmware/vmnet-natd-8.mac -c /etc/vmware/nat.conf 2>/dev/null # or logfile
+ /opt/openslx/rootfs/usr/sbin/udhcpd \
+ -S /etc/vmware/udhcpd/udhcpd-vmnet8.conf
+fi
+
+}
+
+vmblock () {
+# let point the path directly to the directory where the binary lives
+ /usr/bin/vmware-usbarbitrator
+
+}
+
+
+case "$1" in
+ start)
+ #start: defines start function for initscript
+ # include default directories
+ . /etc/opt/openslx/openslx.conf
+ # load the configuration file
+ . ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf
+ # hack to access the first serial/parallel port
+ chmod a+rw /dev/ttyS0
+ chmod a+rw /dev/parport0
+ tempdir
+ load_modules
+ vmnetif
+ vmblock
+
+ ;;
+ stop)
+ #stop: defines stop function for initscript
+ killall vmnet-netifup vmnet-natd vmnet-bridge vmware vmplayer \
+ vmware-tray vmnet-dhcpd 2>/dev/null
+ # might take a while until all services are shut down
+ sleep 1
+ umount -l /tmp/vmware 2>/dev/null
+ unload_modules
+
+ ;;
+ restart)
+ #restart: defines restart function for initscript
+ $0 stop && $0 start
+ ;;
+ status)
+ #status: defines status function for initscript
+ vmstatus
+ ;;
+ *)
+ #usage: defines usage function for initscript
+ ## print out usage
+ echo "Usage: $0 {start, stop, restart, status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/machine.include b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/machine.include
new file mode 100644
index 00000000..6367d3d9
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/machine.include
@@ -0,0 +1,120 @@
+# -----------------------------------------------------------------------------
+# Copyright (c) 2010..2012 - OpenSLX GmbH
+#
+# This program/file is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org
+# -----------------------------------------------------------------------------
+# Include file (machine template) for run-virt.include of the OpenSLX virtual-
+# box plugin
+cat << EOF > "${machconfig}"
+<?xml version="1.0"?>
+<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.12-linux">
+ <Machine uuid="{${machineuuid}}" name="${vm_name}" OSType="${vmostype}">
+ <ExtraData>
+ <ExtraDataItem name="GUI/AutoresizeGuest" value="on"/>
+ <ExtraDataItem name="GUI/Fullscreen" value="on"/>
+ <ExtraDataItem name="GUI/LastCloseAction" value="powerOff"/>
+ <ExtraDataItem name="GUI/MiniToolBarAutoHide" value="on"/>
+ <ExtraDataItem name="GUI/MiniToolBarAlignment" value="top"/>
+ <ExtraDataItem name="GUI/ShowMiniToolBar" value="yes"/>
+ <ExtraDataItem name="GUI/SaveMountedAtRuntime" value="yes"/>
+ <ExtraDataItem name="GUI/Seamless" value="off"/>
+ </ExtraData>
+ <Hardware version="2">
+ <CPU count="${cpu_cores}">
+ <HardwareVirtEx enabled="${enablevt}" exclusive="true"/>
+ <HardwareVirtExNestedPaging enabled="${npaging}"/>
+ <HardwareVirtExVPID enabled="false"/>
+ <PAE enabled="true"/>
+ </CPU>
+ <Memory RAMSize="${mem}"/>
+ <Boot>
+ <Order position="1" device="${boot}"/> <!-- HardDisk, DVD, Network, Floppy -->
+ <Order position="2" device="None"/>
+ <Order position="3" device="None"/>
+ <Order position="4" device="None"/>
+ </Boot>
+ <!-- check for xml configured enable3d parameter -->
+ <Display VRAMSize="${vram}" monitorCount="1" accelerate3D="${enable3d}" accelerate2DVideo="${enable2d}"/>
+ <!-- authType="External", "Guest", "Null" -->
+ <RemoteDisplay enabled="false" port="${vrdpport}" authType="Null" authTimeout="5000"/>
+ <BIOS>
+ <ACPI enabled="true"/>
+ <IOAPIC enabled="true"/>
+ <Logo fadeIn="false" fadeOut="false" displayTime="0"/>
+ <BootMenu mode="MessageAndMenu"/>
+ <TimeOffset value="0"/>
+ <PXEDebug enabled="false"/>
+ </BIOS>
+ <USBController enabled="true" enabledEhci="true"/>
+ <Network>
+ <Adapter slot="0" enabled="true" MACAddress="${macaddr}" cable="true" speed="0" type="${vb_network_card}">
+ <${network_kind}/>
+ </Adapter>
+ <Adapter slot="1" enabled="false" MACAddress="0800279312CC" cable="true" speed="0" type="Am79C973"/>
+ <Adapter slot="2" enabled="false" MACAddress="080027A3A3CC" cable="true" speed="0" type="Am79C973"/>
+ <Adapter slot="3" enabled="false" MACAddress="0800277356CC" cable="true" speed="0" type="Am79C973"/>
+ <Adapter slot="4" enabled="false" MACAddress="080027CEA8CC" cable="true" speed="0" type="Am79C973"/>
+ <Adapter slot="5" enabled="false" MACAddress="0800271B8DCC" cable="true" speed="0" type="Am79C973"/>
+ <Adapter slot="6" enabled="false" MACAddress="08002771BBCC" cable="true" speed="0" type="Am79C973"/>
+ <Adapter slot="7" enabled="false" MACAddress="080027EB6ACC" cable="true" speed="0" type="Am79C973"/>
+ </Network>
+ <UART>
+ <Port slot="0" enabled="false" IOBase="0x3f8" IRQ="4" hostMode="Disconnected"/>
+ <Port slot="1" enabled="false" IOBase="0x3f8" IRQ="4" hostMode="Disconnected"/>
+ </UART>
+ <LPT>
+ <Port slot="0" enabled="false" IOBase="0x378" IRQ="4"/>
+ <Port slot="1" enabled="false" IOBase="0x378" IRQ="4"/>
+ </LPT>
+ <!-- should be configured depending on the chosen operating system -->
+ <AudioAdapter controller="${guestaudio}" driver="Alsa" enabled="${audio}"/> <!-- OSS, Alsa, Pulse -->
+ <!-- should be configured depending on the chosen operating system -->
+ <SharedFolders>
+ <SharedFolder name="${sharename}" hostPath="${sharepath}" writable="true"/>
+ </SharedFolders>
+ <Clipboard mode="Bidirectional"/>
+ <Guest memoryBalloonSize="0" statisticsUpdateInterval="0"/>
+ <!--
+ <GuestProperties>
+ <GuestProperty name="/VirtualBox/HostGuest/SysprepExec" value="" timestamp="1268140071072799000" flags="TRANSIENT, RDONLYGUEST"/>
+ <GuestProperty name="/VirtualBox/HostGuest/SysprepArgs" value="" timestamp="1268140071072949000" flags="TRANSIENT, RDONLYGUEST"/>
+ <GuestProperty name="/VirtualBox/GuestInfo/OS/Product" value="Linux" timestamp="1268140267864540000" flags=""/>
+ <GuestProperty name="/VirtualBox/GuestInfo/OS/Release" value="4.1.2" timestamp="1268140267894449000" flags=""/>
+ <GuestProperty name="/VirtualBox/GuestInfo/OS/LoggedInUsersList" value="vbox" timestamp="1268164075149967000" flags=""/>
+ </GuestProperties>
+ -->
+ </Hardware>
+ <!-- should be configured depending on the chosen operating system -->
+ <StorageControllers>
+ <StorageController name="IDE Controller" type="PIIX4" PortCount="2">
+ <AttachedDevice type="HardDisk" port="0" device="0">
+ <Image uuid="{${imageuuid}}"/>
+ </AttachedDevice> <!-- PLEASE DO NOT REMOVE THIS COMMENT (HD)!!! -->
+ <AttachedDevice passthrough="false" type="DVD" port="0" device="1">
+ <HostDrive src="${cdrom_0}"/>
+ </AttachedDevice> <!-- PLEASE DO NOT REMOVE THIS COMMENT (CD)!!! -->
+ </StorageController>
+ <StorageController name="Floppy Controller" type="I82078" PortCount="1">
+ <AttachedDevice type="Floppy" port="0" device="0">
+ </AttachedDevice>
+ <AttachedDevice type="Floppy" port="0" device="1">
+ <Image uuid="{288d5452-2dd3-44f2-bfc8-78e205a4fa87}"/>
+ </AttachedDevice>
+ </StorageController>
+ <!--
+ <StorageController name="SCSI Controller" type="LsiLogic" PortCount="16">
+ <AttachedDevice type="HardDisk" port="0" device="0">
+ <Image uuid="{812c82bf-bd1a-4f59-a5b6-b54ae2f6c669}"/>
+ </AttachedDevice>
+ </StorageController>
+ -->
+ </StorageControllers>
+ </Machine>
+</VirtualBox>
+EOF
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/run-virt.include b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/run-virt.include
new file mode 100644
index 00000000..cd5329a1
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/run-virt.include
@@ -0,0 +1,441 @@
+# run-virt.include
+# -----------------------------------------------------------------------------
+# Copyright (c) 2009..2011 - RZ Uni Freiburg
+# Copyright (c) 2009..2012 - OpenSLX GmbH
+#
+# This program/file is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org
+# -----------------------------------------------------------------------------
+# run-virt.include
+# - Include script for running the VirtualBox on an OpenSLX client via the
+# run-virt.sh or run-vmgrid.sh
+################################################################################
+
+################################################################################
+### Include general configuration
+################################################################################
+if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf ]; then
+ . ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf
+else
+ writelog "Problems reading config file of ${self} plugin"
+ exit 1
+fi
+
+################################################################################
+### Declaration of default variables
+################################################################################
+
+PLUGINCONFVIRTUALBOX="${PLUGINCONFROOT}/${self}"
+PLUGINDIRVIRTUALBOX="${OPENSLX_DEFAULT_DIR}/plugin-repo/${self}"
+# create TMPDIR for all users
+TMPDIR=/tmp/virt/${self}
+mkdir -m 1777 ${TMPDIR} 2>/dev/null
+# dir for configs
+confdir="/tmp/virt/${self}/${USER}/${VM_ID}"
+# use alternate configuration directory instead of $HOME/.VirtualBox
+export VBOX_USER_HOME=${confdir}
+# define dirs and files which can be removed after exit, be carefull!
+RMDIRS="${snapshotdir} ${confdir} /tmp/virt/.vbox-${USER}-ipc"
+rm -rf ${RMDIRS} 2>/dev/null
+machfolder="${confdir}/Machines"
+# use vm_shortname for dir and config names since vm_name can be very long
+machconfig="${machfolder}/${vm_shortname}/${vm_shortname}.xml"
+diskfolder="${confdir}/HardDisks"
+snapshotdir=${machfolder}/${vm_shortname}/Snapshots
+mkdir -p ${diskfolder} ${snapshotdir} 2>/dev/null
+# check if diskless var empty?
+[ -z "${diskless}" ] && diskless=0
+# default guest audio controller (SB16, AC97, HDA)
+guestaudio="HDA"
+# default guest network adaptor
+vb_network_card="Am79C973"
+# default setting for accelerated 2D grapics (OS dependent)
+enable2d="true"
+# set default graphics ram
+vram="128"
+
+# configure our own rwimg, empty image which we provide
+if [ "${imgmode}" = "rwimg" ]; then
+ # what is our rwimg called?
+ imgname="${vm_shortname}.vdi"
+ vmpath=${imgpath}/${imgname}
+ if ! [ -e "${vmpath}" ]; then
+ cat ${PLUGINDIRVIRTUALBOX}/rwimg.vdi.gz | gunzip > "${vmpath}"
+ fi
+fi
+
+# link to image
+diskfile="${diskfolder}/${imgname}"
+[ ${diskless} -eq 0 ] && ln -sf ${vmpath} ${diskfile}
+
+# check the file type
+if echo ${imgname} | grep -qiE "vdi|vmdk|vhd" && [ ${diskless} -eq 0 ]; then
+ imgfmt=$(echo ${imgname##*.} | tr "[a-z]" "[A-Z]")
+elif [ ${diskless} -eq 0 ]; then
+ writelog "${imgname} is not a valid image format (vdi|vmdk|vhd), exiting!"
+ cleanexit 1
+fi
+
+# nested paging
+npaging="false"
+# enable VT
+enablevt="false"
+# check for VT, if not available use only 1 cpu (only 1 supported)
+[ ${vtflag} -eq 0 ] && cpu_cores=1
+[ ${vtflag} -eq 1 ] && enablevt="true"
+
+# set some base configuration depending on the guest operating system
+case "${vmostype}" in
+ win31*)
+ guestaudio="SB16"
+ vmostype="Windows31"
+ mem="32"
+ vram="16"
+ cpu_cores=1
+ enablevt="false"
+ ;;
+ win95*)
+ vmostype="Windows95"
+ guestaudio="SB16"
+ mem="92"
+ vram="32"
+ cpu_cores=1
+ enablevt="false"
+ ;;
+ win98*)
+ vmostype="Windows98"
+ guestaudio="SB16"
+ mem="256"
+ vram="64"
+ cpu_cores=1
+ ;;
+ winme*)
+ vmostype="WindowsMe"
+ guestaudio="AC97"
+ mem="256"
+ vram="64"
+ cpu_cores=1
+ ;;
+ winxp*|windowsxp*)
+ vmostype="WindowsXP"
+ guestaudio="AC97"
+ ;;
+ winvista*|windowsvista*)
+ vmostype="WindowsVista"
+ ;;
+ windows7*)
+ vmostype="Windows7"
+ ;;
+ linux*|*ubuntu*|*suse*|debian*|*sci*)
+ if echo "${vmostype}" | grep -q "64"; then
+ vmostype="Linux26_64"
+ # check for vtflag
+ if [ ${vtflag} -ne 1 ]; then
+ writelog "You are trying to boot a 64 bit OS without a VT enabled CPU"
+ writelog "This is not supported, exiting!"
+ cleanexit 1
+ fi
+ # check if host is only 32 bit, then use only 1 cpu (only 1 supported)
+ if echo "${host_arch}" | grep -qE "i.86"; then
+ cpu_cores=1
+ fi
+ else
+ vmostype="Linux26"
+ fi
+ ;;
+ os2*)
+ mem="256"
+ vmostype="OS2eCS"
+ cpu_cores=1
+ enable2d="false"
+ ;;
+ macos*|MacOS*)
+ vmostype="MacOS"
+ enable2d="false"
+ ;;
+ *)
+ vmostype="Other"
+ enable2d="false"
+ ;;
+esac
+
+writelog "Directories:"
+writelog "\tConfig dir:\t\t$confdir"
+writelog "\tMachines dir:\t\t$machfolder"
+writelog "\tMachine config:\t\t$machconfig"
+[ ${diskless} -eq 0 ] && writelog "\tHardDisks dir:\t\t$diskfolder"
+
+################################################################################
+### Hardware checks
+################################################################################
+
+# remove ':' from MAC addr for vbox
+macaddr=$(echo ${macaddr} | sed 's/://g')
+
+# machine UUID, MAC addr part of it
+machineuuid="00000000-0000-0000-0000-${macaddr}"
+# cosmetical, since UUID in lower case
+machineuuid=$(echo ${machineuuid} | tr "[A-Z]" "[a-z]")
+# get UUID of VBox image, if not diskless
+[ ${diskless} -eq 0 ] && diskuuid=$(VBoxManage -q showvdiinfo ${diskfile} \
+ | grep UUID | awk '{print $2}')
+# make disk immutable
+imgtype="Immutable"
+# snapshot UUID is static
+snapshotuuid="34f617be-192a-46b3-a8ae-bce1029e093f"
+# imageuuid in machine.include, dafault snapshotuuid
+imageuuid=${snapshotuuid}
+
+# check if rw image
+# remove disk and add rwimg if set
+if echo "${imgmode}" | grep -q rw; then
+ # lock existing?
+ if [ -e "${vmpath}.lock" ]; then
+ writelog "This rw image is already in use."
+ writelog "Found lock: ${vmpath}.lock, exiting!"
+ writelog "Remove lock if you are sure that this is not the case"
+ cleanexit 1
+ # image rw?
+ elif ! [ -w ${vmpath} ]; then
+ writelog "You defined mode rw, but image ${vmpath} is not rw! \c"
+ writelog "Please correct, exiting!"
+ cleanexit 1
+ fi
+ # add lock
+ touch "${vmpath}.lock"
+ # remove lock after VM stopped
+ RMDIRS="${RMDIRS} ${vmpath}.lock"
+ imgtype="Normal"
+ # replace image uuid in machine config
+ imageuuid=${diskuuid}
+elif [ ${diskless} -eq 0 ]; then
+ # use temp disk as snapshot
+ cat ${PLUGINDIRVIRTUALBOX}/empty-diff.vdi.gz \
+ | gunzip > "${snapshotdir}/{${snapshotuuid}}.vdi"
+ # patch the disk file uuid into the snapshot vdi file
+ dd if=${diskfile} of="${snapshotdir}/{${snapshotuuid}}.vdi" seek=424 \
+ skip=392 bs=1 count=16 conv=notrunc
+fi
+
+# TODO: MEM muss noch angepasst werden. Maschine crasht wenn mehr als 50% MEM
+# memory part equal to vmware plugin
+# percentage of memory to use for virtualbox in standard case
+#if [ -n "${forcemem}" ]; then
+# mem="${forcemem}"
+#else
+# permem=30
+# if [ "${totalmem}" -ge "1600" ]; then
+# permem=40
+# fi
+# # check if /tmp is on harddisk
+# if grep -qe "/dev/.* /tmp " /proc/mounts ; then
+# permem=60
+# id44="1"
+# # Hack, if more than 2,5G RAM use 40% of Ram and write vmem into Ram as well
+# # (40% vmware | 40% confdir(vmem...) | 20% host
+# # VMplayer 2+ issue
+# # TODO: makes this sense for vbox?
+# #if [ "${totalmem}" -ge "2500" ]; then
+# #permem=40
+# #rmdir ${snapshotdir}
+# #snapshotdirold=${snapshotdir}
+# #snapshotdir=/dev/shm/${self}/${USER}/${VM_ID}
+# #mkdir -p ${snapshotdir}
+# #ln -sf ${snapshotdir} ${snapshotdirold}
+# #fi
+# fi
+# mem=$(expr ${totalmem} / 100 \* ${permem})
+# if [ "${id44}" = "1" ]; then
+# hostmem=$(expr ${totalmem} - ${mem})
+# else
+# hostmem=$(expr ${totalmem} - ${mem} - ${mem})
+# fi
+# #permem=40
+# #mem=$(expr ${totalmem} * ${permem})
+#fi
+
+# translate network cards
+case "${network_card}" in
+ e1000)
+ vb_network_card="82540EM"
+ ;;
+ virtio)
+ vb_network_card="virtio"
+ ;;
+ *)
+ network_card="pcnet"
+ vb_network_card="Am79C973"
+esac
+
+# translate network kinds (nat, bridged, host-only)
+case "${network_kind}" in
+ bridge*)
+ network_kind='BridgedInterface name="br0"'
+ ;;
+ host*)
+ network_kind='HostOnlyInterface name="vboxnet0"'
+ ;;
+ *)
+ network_kind="NAT"
+esac
+
+# configure 3d settings
+case "${enable3d}" in
+ *true*|*yes*)
+ enable3d="true"
+ ;;
+ *)
+ enable3d="false"
+ ;;
+esac
+
+# translate boot, use if set else set to HardDisk
+# usually support for a,c,d,n, stands for Floppy, HD, CD-ROM, Network
+# support nfs and tftp as well
+case ${boot} in
+ n*|tftp)
+ boot="Network"
+ if [ "${network_kind}" = "NAT" ] && [ -n "${virtualbox_tftpdir}" ]; then
+ # use vm_shortname to avoid Problems /w TFTP in NAT
+ vm_name=${vm_shortname}
+ # link TFTP dir for NAT TFTP boots
+ mkdir -p ${confdir}/TFTP
+ if [ -e ${virtualbox_tftpdir}/pxelinux.0 ]; then
+ cp ${virtualbox_tftpdir}/pxelinux.0 ${confdir}/TFTP/${vm_name}.pxe
+ else
+ writelog "${virtualbox_tftpdir}/pxelinux.0 not found!"
+ writelog "Network boot won't work, exiting!"
+ cleanexit 1
+ fi
+ for i in $(ls ${virtualbox_tftpdir}); do
+ ln -sf ${virtualbox_tftpdir}/${i} ${confdir}/TFTP/${i}
+ done
+ fi
+ ;;
+ # later maybe c|disk|hd*|sd*) for HD and d|cd*) for CD-ROM
+ *)
+ boot="HardDisk"
+ ;;
+esac
+
+# external GUI
+vrdpport=${remotedesktopport}
+
+[ ${diskless} -eq 0 ] && writelog "\tSnapshots dir:\t\t$snapshotdir"
+writelog "Diskimage:"
+[ ${diskless} -eq 0 ] && writelog "\tDisk file:\t\t$diskfile"
+[ ${diskless} -eq 0 ] && writelog "\tDisk format:\t\t$imgfmt"
+[ ${diskless} -eq 0 ] && writelog "\tDisk type:\t\t$imgtype"
+ writelog "\tVMostype:\t\t$vmostype"
+ writelog "\tMachine UUID:\t\t$machineuuid"
+[ ${diskless} -eq 0 ] && writelog "\tDisk UUID:\t\t$diskuuid"
+writelog "Virtual Hardware:"
+writelog "\tCPU cores:\t\t${cpu_cores}\c"
+[ ${vtflag} -eq 0 ] && writelog ""
+[ ${vtflag} -eq 1 ] && writelog " (VT enabled CPU)"
+writelog "\tGuest RAM:\t\t${mem} MB"
+# echo nur wenn hostmem gesetzt
+[ -n "${hostmem}" ] && writelog "\tHost RAM:\t\t${hostmem} MB"
+writelog "\tMAC address:\t\t$macaddr"
+writelog "\tNetwork card:\t\t${vb_network_card}"
+writelog "\tNetwork kind:\t\t${network_kind}"
+writelog "\tBooting from:\t\t${boot}\c"
+[ ${diskless} -eq 0 ] && writelog ""
+[ ${diskless} -eq 1 ] && writelog " 'diskless'"
+# TODO: server start activate via xml, etc...
+#writelog "\tGuest VRDP port:\t${vrdpport}"
+writelog "\tCD-ROM1:\t\t${cdrom0}"
+#writelog "\tCD-ROM2:\t\t${cdrom1}"
+writelog "\tFloppy_A:\t\t${floppy0}"
+writelog "\tFloppy_B:\t\t${floppy1}"
+# defined in run-virt.sh and run-vmgrid.sh
+writelog "\tShared Folders '${sharename}':\t${sharepath}"
+
+################################################################################
+### Pepare and configure virtual machine and disk image
+################################################################################
+
+# create Virtualbox.xml
+. ${PLUGINCONFVIRTUALBOX}/virtualbox.include
+
+# remove snapshot disk when using rw images
+if [ "${imgtype}" != "Immutable" ]; then
+ sed -i "/${snapshotuuid}/d" "${confdir}/VirtualBox.xml"
+fi
+
+# TODO: add rawdisk if requested
+#"raw.vmdk" format="VMDK" type="Writethrough"/>
+
+# create machine.xml
+. ${PLUGINCONFVIRTUALBOX}/machine.include
+
+# remove CD-ROM if not available
+if [ "${cdrom0}" != "TRUE" ]; then
+ sed -i "/HostDrive/d" ${machconfig}
+ sed -i '/AttachedDevice.*type="DVD"/d' ${machconfig}
+ sed -i "/<!-- PLEASE DO NOT REMOVE THIS COMMENT (CD)!!! -->/d" ${machconfig}
+fi
+
+# if diskless remove all disks
+if [ ${diskless} -eq 1 ]; then
+ sed -i "/<HardDisk/d;/<\/HardDisk/d" "${confdir}/VirtualBox.xml"
+ sed -i "/${imageuuid}/d" ${machconfig}
+ sed -i '/AttachedDevice type="HardDisk"/d' ${machconfig}
+ sed -i "/<!-- PLEASE DO NOT REMOVE THIS COMMENT (HD)!!! -->/d" ${machconfig}
+fi
+
+# define redirects
+if [ ${redirects} -ge 1 ]; then
+ (( i=1 ))
+ writelog "\tGuest redirects:\t\c"
+ while [ ${i} -le ${redirects} ]; do
+ extradataitem='<ExtraDataItem name="VBoxInternal/Devices'
+ extradataitem="${extradataitem}/${network_card}/0/LUN#0/Config"
+ extradataitem="${extradataitem}/${redirect_name[$i]}/"
+ extradataprotocol="Protocol\" value=\"${redirect_proto[$i]}\"/>"
+ extradatahostport="HostPort\" value=\"${redirect_hport[$i]}\"/>"
+ extradataguestport="GuestPort\" value=\"${redirect_gport[$i]}\"/>"
+ sed -i "s,</ExtraData>, ${extradataitem}${extradataguestport}\n\
+ ${extradataitem}${extradatahostport}\n\
+ ${extradataitem}${extradataprotocol}\n\
+ </ExtraData>," "${machconfig}"
+ writelog "${tabspace}${redirect_name[$i]} port: ${redirect_hport[$i]}"
+ tabspace='\t\t\t\t'
+ (( i=$i+1 ))
+ done
+fi
+
+################################################################################
+### finally set env for run-virt.sh
+################################################################################
+
+# configure and start samba service to provide user's home directory
+if [ -f /usr/sbin/smbd ] ; then
+ sudo /opt/openslx/rootfs/bin/sed -i /etc/vbox/smb.conf -e "s,USER,$USER,"
+ sudo /usr/sbin/nmbd -s /etc/vbox/smb.conf
+ sudo /usr/sbin/smbd -s /etc/vbox/smb.conf
+fi
+
+# wait for a certain command to settle
+# get the PID of the right process
+# kill PID, seems to work
+VBMANPID=$(pstree -p | grep VBoxXPCOMIPCD | grep -ivE "VirtualBox|VBoxHeadless"\
+ | sed -e "s/.*VBoxXPCOMIPCD(\(.*\)).*/\1/")
+for i in $(echo ${VBMANPID}); do
+ kill -9 ${VBMANPID} >/dev/null 2>&1
+done
+
+# set the variables appropriately (several interfaces with different names)
+VIRTCMD=$(which VirtualBox 2>/dev/null)
+VIRTCMDOPTS="--startvm ${machineuuid} --start-running"
+
+# set headless mode (-v off to disable vrdp)
+VIRTCMDHL=$(which VBoxHeadless 2>/dev/null)
+VIRTCMDOPTSHL="-s ${machineuuid}"
+RMDIRS="${TMPDIR}"
+
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.conf b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.conf
new file mode 100644
index 00000000..e6e185f2
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.conf
@@ -0,0 +1,4 @@
+virtualbox_active="1"
+virtualbox_bridge="0"
+virtualbox_imagesrc=""
+virtualbox_tftpdir="/var/lib/virt/virtualbox"
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.include b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.include
new file mode 100644
index 00000000..70ca394c
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.include
@@ -0,0 +1,56 @@
+# -----------------------------------------------------------------------------
+# Copyright (c) 2010..2012 - OpenSLX GmbH
+#
+# This program/file is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org
+# -----------------------------------------------------------------------------
+# Include file (general template) for run-virt.include of the virtualbox plugin
+cat << EOF > "${confdir}/VirtualBox.xml"
+<?xml version="1.0"?>
+<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.12-linux"> <!-- 1.12-linux -->
+ <Global>
+ <ExtraData>
+ <ExtraDataItem name="GUI/Input/AutoCapture" value="true"/>
+ <ExtraDataItem name="GUI/Input/HostKey" value="65300"/> <!-- scroll lock / Rollen -->
+ <ExtraDataItem name="GUI/LastVMSelected" value="${machineuuid}"/>
+ <ExtraDataItem name="GUI/LicenseAgreed" value="1,2,3,4,5,6,7,8,9"/>
+ <ExtraDataItem name="GUI/MaxGuestResolution" value="any"/> <!-- auto, width,height -->
+ <ExtraDataItem name="GUI/UpdateCheckCount" value="2"/>
+ <ExtraDataItem name="GUI/UpdateDate" value="never"/>
+ <ExtraDataItem name="GUI/SuppressMessages" value=",remindAboutAutoCapture,confirmInputCapture,remindAboutWrongColorDepth,confirmGoingFullscreen,remindAboutMouseIntegrationOn,remindAboutMouseIntegrationOff,showRuntimeError.warning.DevATA_DISKFULL,remindAboutPausedVMInput,confirmVMReset,showRuntimeError.warning.HostAudioNotResponding,showRuntimeError.warning.ExtPackNoEhci"/>
+ <ExtraDataItem name="GUI/TrayIcon/Enabled" value="false"/>
+ </ExtraData>
+ <MachineRegistry>
+ <MachineEntry uuid="{${machineuuid}}" src="Machines/${vm_shortname}/${vm_shortname}.xml"/>
+ </MachineRegistry>
+ <MediaRegistry>
+ <HardDisks>
+ <HardDisk uuid="{${diskuuid}}" location="${diskfile}" format="${imgfmt}" type="${imgtype}">
+ <HardDisk uuid="{${snapshotuuid}}" location="${snapshotdir}/{${snapshotuuid}}.vdi" format="VDI" autoReset="true"/>
+ </HardDisk>
+ </HardDisks>
+ <!--
+ <DVDImages/>
+ -->
+ <FloppyImages>
+ <Image uuid="{288d5452-2dd3-44f2-bfc8-78e205a4fa87}" location="${floppy1name}"/>
+ </FloppyImages>
+ </MediaRegistry>
+ <NetserviceRegistry>
+ <DHCPServers>
+ <DHCPServer networkName="HostInterfaceNetworking-vboxnet0" IPAddress="192.168.102.100" networkMask="255.255.255.0" lowerIP="192.168.102.101" upperIP="192.168.102.254" enabled="1"/>
+ <!--
+ <DHCPServer networkName="HostInterfaceNetworking-vboxnet1" IPAddress="0.0.0.0" networkMask="0.0.0.0" lowerIP="0.0.0.0" upperIP="0.0.0.0" enabled="0"/>
+ -->
+ </DHCPServers>
+ </NetserviceRegistry>
+ <SystemProperties defaultMachineFolder="${machfolder}" defaultHardDiskFolder="${diskfolder}" defaultHardDiskFormat="VDI" remoteDisplayAuthLibrary="VBoxAuth" webServiceAuthLibrary="VBoxAuth" LogHistoryCount="3"/>
+ <USBDeviceFilters/>
+ </Global>
+</VirtualBox>
+EOF
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/run-virt.include b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/run-virt.include
new file mode 100644
index 00000000..603c8e9b
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/run-virt.include
@@ -0,0 +1,532 @@
+# run-virt.include
+# -----------------------------------------------------------------------------
+# Copyright (c) 2009..2012 - RZ Uni Freiburg
+# Copyright (c) 2009..2013 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# run-virt.include
+# - component for vmware/player of the vmchooser plugin run-virt.sh
+################################################################################
+
+# configuration writer functions
+################################################################################
+
+runvmwareconfheader ()
+{
+echo "# This configuration file was generated by $0" >${conffile}
+
+# check for the ostype
+case "${vmostype}" in
+ win31*)
+ mem="32"
+ cpu_cores="1"
+ sound="sb16"
+ shfolders="FALSE"
+ ;;
+ win95*)
+ mem="92"
+ cpu_cores="1"
+ shfolders="FALSE"
+ ;;
+ win98*|winme*)
+ mem="256"
+ cpu_cores="1"
+ shfolders="FALSE"
+ ;;
+ winxp*|windowsxp*)
+ shfolders="TRUE"
+ ;;
+ winvista*|windowsvista*)
+ shfolders="TRUE"
+ ;;
+ windows7*)
+ shfolders="TRUE"
+ ;;
+ windows8*)
+ shfolders="TRUE"
+ ;;
+ linux*|*ubuntu*|*suse*|debian*|*sci*)
+ vmostype="linux"
+ shfolders="TRUE"
+ ;;
+ macos*)
+ cpu_cores="1"
+ vmostype="other"
+ shfolders="FALSE"
+ ;;
+ beos*)
+ cpu_cores="1"
+ vmostype="other"
+ shfolders="FALSE"
+ ;;
+ *)
+ vmostype="other"
+ shfolders="FALSE"
+ ;;
+esac
+case "$vmversion" in
+ *)
+ svga_autodetect="TRUE"
+ numvcpus="1"
+ echo ".encoding = \"UTF-8\"
+# version specific stuff - all versions
+config.version = \"8\"" >>${conffile}
+ ;;
+esac
+case "$vmversion" in
+ 2.*|3.*|4.*|5.*|6.*|7.*|8.*|9.*)
+ [ ${shfolders} == FALSE ] || echo "
+# version specific stuff - ver. 2.*|3.*|6.*|7.*|8.*|9.*
+sharedFolder.option = \"alwaysEnabled\"" >>${conffile}
+ ;;
+esac
+case "$vmversion" in
+ 2.5|3.*|4.*|5.*|6.5|7.*|8.*|9.*)
+ if [ "${cpu_cores}" -ge "2" 2>/dev/null ]; then
+ numvcpus="2"
+ fi
+ if [ "${mem}" -ge "8000" 2>/dev/null ]; then
+ mem=8000
+ fi
+ cap3d="TRUE" # helper var for loging output
+ echo "
+# version specific stuff - ver. 2.5|3.*|6.5|7.*
+ehci.present = \"TRUE\"
+mks.enable3d = \"${enable3d}\"" >>${conffile}
+ ;;
+esac
+case "$vmversion" in
+ 3.*|4.*|7.*|8.*|9.*)
+ numvcpus="${cpu_cores}"
+ if [ "${cpu_cores}" -ge "4" 2>/dev/null ]; then
+ numvcpus="4"
+ fi
+ # svga_autodetect="FALSE" # if defined manual, see below
+ echo "
+# version specific stuff - ver. 3.*|7.*
+cpuid.coresPerSocket = \"${cpu_cores}\"
+maxvcpus = \"4\"
+monitor.virtual_mmu = \"automatic\"
+monitor.virtual_exec = \"automatic\"
+floppy1.clientDevice = \"FALSE\"
+floppy1.readonly = \"TRUE\"" >>${conffile}
+ ;;
+esac
+
+echo "
+# id
+virtualHW.version = \"${hwver}\"
+displayName = \"${displayname}\"
+guestOS = \"${vmostype}\"
+
+# CPU/MEM
+numvcpus = \"${numvcpus}\"
+memsize = \"${mem}\"
+MemAllowAutoScaleDown = \"FALSE\"
+MemTrimRate = \"-1\"
+
+# ide-disks
+ide0:0.present = \"${ide}\"
+ide0:0.fileName = \"${diskfile}\"
+ide0:0.mode = \"independent-nonpersistent\"
+ide1:0.present = \"${cdrom0}\"
+ide1:0.autodetect = \"TRUE\"
+ide1:0.fileName = \"auto detect\"
+ide1:0.deviceType = \"cdrom-raw\"
+ide1:1.present = \"${cdrom1}\"
+ide1:1.autodetect = \"TRUE\"
+ide1:1.fileName = \"auto detect\"
+ide1:1.deviceType = \"cdrom-raw\"
+
+# scsi-disks
+scsi0.present = \"${scsi}\"
+scsi0:0.present = \"${scsi}\"
+scsi0:0.fileName = \"${diskfile}\"
+scsi0.virtualDev = \"${hddrv}\"
+scsi0:0.mode = \"independent-nonpersistent\"
+
+# floppies
+floppy0.present = \"${floppy0}\"
+floppy0.startConnected = \"FALSE\"
+floppy0.autodetect = \"TRUE\"
+floppy0.fileName = \"auto detect\"
+# we need floppy b: for our windows client configuration
+floppy1.present = \"${floppy1}\"
+floppy1.startConnected = \"TRUE\"
+floppy1.fileType = \"file\"
+floppy1.fileName = \"${floppy1name}\"
+
+# nics
+ethernet0.present = \"TRUE\"
+ethernet0.addressType = \"static\"
+${network_virtualDev}
+ethernet0.connectionType = \"${network_kind}\"
+#ethernet1.connectionType = \"custom\"
+#ethernet1.vnet = \"/dev/vmnet2\"
+ethernet0.address = \"00:50:56:${VM_ID}:${machostpart}\"
+ethernet0.wakeOnPcktRcv = \"FALSE\"
+
+# sound
+sound.present = \"TRUE\"
+sound.fileName = \"-1\"
+sound.autodetect = \"TRUE\"
+sound.virtualdev = \"${sound}\"
+
+# svga
+svga.autodetect = \"${svga_autodetect}\"
+
+# usb
+usb.present = \"TRUE\"
+usb.generic.autoconnect = \"TRUE\"
+
+# pci configuration
+usb.pciSlotNumber = "16"
+ethernet0.pciSlotNumber = "17"
+sound.pciSlotNumber = "18"
+ehci.pciSlotNumber = "19"
+scsi0.pciSlotNumber = "20"
+
+# shared folders
+sharedFolder0.present = \"${shfolders}\"
+sharedFolder0.enabled = \"${shfolders}\"
+sharedFolder0.expiration = \"never\"
+sharedFolder0.guestName = \"${sharename}\"
+sharedFolder0.hostPath = \"${sharepath}\"
+sharedFolder0.readAccess = \"TRUE\"
+sharedFolder0.writeAccess = \"TRUE\"
+sharedFolder.maxNum = \"1\"
+
+# dirs/configs
+tmpDirectory = \"${redodir}\"
+redoLogDir = \"${redodir}\"
+mainMem.useNamedFile = \"TRUE\"
+snapshot.disabled = \"TRUE\"
+tools.syncTime = \"TRUE\"
+isolation.tools.hgfs.disable = \"FALSE\"
+hgfs.mapRootShare = \"TRUE\"
+isolation.tools.dnd.disable = \"FALSE\"
+isolation.tools.copy.enable = \"TRUE\"
+isolation.tools.paste.enabled = \"TRUE\"
+
+# serial port
+serial0.present = \"${serial}\"
+${serialdev}
+
+# parallel port
+parallel0.present = \"${parallel}\"
+parallel0.bidirectional = \"${paralbidi}\"
+${paraldev}" >>${conffile}
+
+# set the appropriate permissions for the vmware config file
+chmod u+rwx ${conffile} >/dev/null 2>&1
+}
+
+preferencesheader ()
+{
+echo ".encoding = \"UTF-8\"
+# This configuration file was generated by $0
+
+# updates/tips
+webUpdate.enabled = \"FALSE\"
+pref.downloadPermission = \"deny\"
+pref.vmplayer.downloadPermission = \"deny\"
+pref.vmplayer.webUpdateOnStartup = \"FALSE\"
+pref.tip.startup = \"FALSE\"
+hints.hideAll = \"TRUE\"
+hint.vmui.showAllUSBDevs = \"FALSE\"
+
+# configs
+prefvmx.defaultVMPath = \"${vmhome}\"
+prefvmx.mru.config = \"${conffile}:\"
+
+# hot keys
+pref.hotkey.control = \"true\"
+pref.hotkey.alt = \"true\"
+pref.hotkey.shift = \"true\"
+pref.hotkey.gui = \"true\"
+gui.restricted = \"true\"
+
+# fullscreen/mouse/keyboard
+pref.fullscreen.toolbarPixels = \"0\"
+pref.vmplayer.fullscreen.autohide = \"TRUE\"
+pref.grabOnMouseClick = \"TRUE\"
+pref.grabOnKeyPress = \"FALSE\"
+pref.motionGrab = \"TRUE\"
+pref.motionUngrab = \"TRUE\"
+pref.hideCursorOnUngrab = \"TRUE\"
+pref.autoFit = \"TRUE\"
+pref.autoFitFullScreen = \"fitGuestToHost\"
+pref.vmplayer.exit.vmAction = \"poweroff\"
+pref.vmplayer.confirmOnExit = \"TRUE\"
+
+# shared folders
+pref.enableAllSharedFolders = \"TRUE\"
+
+# eula" >${vmhome}/preferences
+
+# different eula parameters from Workstation 9+/ Player 5+
+case "$vmversion" in
+ 3.*|4.*|7.*|8.*)
+ echo "
+pref.eula.size = \"2\"
+pref.eula.0.appName = \"VMware Player\"
+pref.eula.0.buildNumber = \"${vmbuild}\"
+pref.eula.1.appName = \"VMware Workstation\"
+pref.eula.1.buildNumber = \"${vmbuild}\"" >>${vmhome}/preferences
+ ;;
+ 5.*|9.*)
+ # code
+ echo "
+pref.eula.count = \"2\"
+pref.eula0.product = \"VMware Player\"
+pref.eula0.build = \"${vmbuild}\"
+pref.eula1.product = \"VMware Workstation\"
+pref.eula1.build = \"${vmbuild}\"" >>${vmhome}/preferences
+ ;;
+esac
+
+}
+
+
+# declaration of default variables
+################################################################################
+
+# VM-ID static (0D), remove if changed to 00
+VM_ID="0D"
+# should be dynamic
+if [ "x$(which bc)" != "x" ]; then
+ VM_ID=$(echo "obase=16; $$" | bc)
+ VM_ID=$(expr substr $VM_ID $(expr ${#VM_ID} - 1) 2)
+fi
+# temporary disk space for logs, etc...
+redodir=/tmp/vmware/${USER}.$$
+# dir for configs and vmem file
+confdir=/tmp/vmware/${USER}.$$
+# configfile
+conffile="${confdir}/run-vmware.conf"
+# diskfile
+diskfile=${vmpath}
+# users vmware config folder
+vmhome="${HOME}/.vmware"
+
+# get several version infos for vmware/player
+. ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf
+vmbuild=$buildversion
+vmversion=$version
+
+# VMware start options
+# "-X": start in fullscreen
+vmopt="-X"
+
+
+# hardware checks
+################################################################################
+
+# use different network card (default e1000, vlance, vmxnet)
+if [ -n "${network_card}" ]; then
+ network_virtualDev="ethernet0.virtualDev = \"${network_card}\""
+else
+ network_virtualDev='# using default virtualDev for ethernet0'
+fi
+
+# set standard sound card, overwrite depending on OS (options sb16, es1371, hdaudio)
+sound="es1371"
+
+# check for 3D configuration setting
+case "${enable3d}" in
+ *true*|*yes*)
+ enable3d="TRUE"
+ ;;
+ *)
+ enable3d="FALSE"
+ ;;
+esac
+
+# serial/parallel port defined (e.g. "ttyS0, lp0" or "autodetect")
+case "$serial" in
+ tty*)
+ serialdev="serial0.filename = \"/dev/${serial}\""
+ serial="TRUE"
+ ;;
+ auto*)
+ serialdev="serial0.autodetect = \"TRUE\""
+ serial="TRUE"
+ ;;
+ *)
+ serialdev="# no serial port configured"
+ serial="FALSE"
+ ;;
+esac
+case "$parallel" in
+ lp*|parport*)
+ paraldev="parallel0.filename = \"/dev/${parallel}\""
+ paralbidi="TRUE"
+ parallel="TRUE"
+ ;;
+ auto*)
+ paraldev="parallel0.autodetect = \"TRUE\""
+ paralbidi="TRUE"
+ parallel="TRUE"
+ ;;
+ *)
+ paraldev="# no parallel port configured"
+ paralbidi="FALSE"
+ parallel="FALSE"
+ ;;
+esac
+
+# adjust memory available for vmware guests
+#if [ -n "${forcemem}" ]; then
+# mem="${forcemem}"
+#else
+# case "$vmversion" in
+# 2.*|6.*)
+# permem=30
+# ;;
+# 3.*|7.*)
+# permem=25
+# ;;
+# esac
+# if [ "${totalmem}" -ge "2500" ]; then
+# permem=40
+# fi
+# # check if /tmp is on harddisk
+# if grep -qe "/dev/.* /tmp " /proc/mounts ; then
+# permem=60
+# id44="1"
+# # Hack, if more than 2,5G RAM use 40% of Ram and write vmem into Ram as well
+# # (40% vmware | 40% confdir(vmem...) | 20% host
+# # VMplayer 2+ issue
+# if [ "${totalmem}" -ge "2500" ]; then
+# permem=40
+# confdir=/dev/shm/vmware/$USER
+# conffile=${confdir}/run-vmware.conf
+# mkdir -p /dev/shm/vmware/$USER
+# fi
+# fi
+# mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4)
+# if [ "${id44}" = "1" ]; then
+# hostmem=$(expr ${totalmem} - ${mem})
+# else
+# hostmem=$(expr ${totalmem} - ${mem} - ${mem})
+# fi
+#fi
+
+# check if ide/scsi and hwver of image
+# read only the first 30 lines to be shure
+imghead=$(head -30 ${diskfile})
+hddrv=$(echo "${imghead}" | grep -m1 -ia "ddb.adapterType" |\
+ awk -F '"' '{print $2}')
+hwver=$(echo "${imghead}" | grep -m1 -ia "ddb.virtualHWVersion" |\
+ awk -F '"' '{print $2}')
+case "${hddrv}" in
+ ide)
+ ide="TRUE"
+ scsi="FALSE"
+ ;;
+ lsilogic|buslogic)
+ ide="FALSE"
+ scsi="TRUE"
+ ;;
+esac
+
+# write configuration files
+################################################################################
+
+# create vmware directories
+mkdir -p ${redodir} >/dev/null 2>&1
+mkdir -p ${confdir} >/dev/null 2>&1
+mkdir -p ${vmhome}/dndlogs >/dev/null 2>&1
+touch ${vmhome}/dndlogs/dndlog.conf >/dev/null 2>&1
+
+# create preferences
+preferencesheader
+
+# create VMware startup file
+runvmwareconfheader
+# link to conffile if confdir != redodir
+ln -s ${conffile} ${redodir}/run-vmware.conf >/dev/null 2>&1
+
+# sync is needed to ensure that data is really written to virtual disk
+sync
+
+# own nvram. We need it for floppy drive b, default nvram has just drive a
+# TODO: optimize, currently kinda inefficient, too much copys, but we
+# don't know which one is installed...
+for i in /opt/openslx/plugin-repo/vmware/*; do
+ cp ${i}/nvram ${confdir}/nvram 2>/dev/null
+done
+
+
+# logging and stdout
+################################################################################
+
+# log script information
+writelog "# File created by $0 (VMversion ${vmversion})\n# on $(date)\n"
+writelog "Starting with non-persistent mode ...\n"
+
+# write all results to logfile
+# log disksetup
+writelog "Directories:"
+writelog "\tConfdir:\t${confdir}"
+writelog "\tConffile:\t${conffile}"
+writelog "\tRedodir:\t${redodir}"
+writelog "\tVMhome:\t\t${vmhome}"
+writelog "\t/tmp info: \
+ $(grep "/tmp " /proc/mounts) $(df -h | grep " /tmp$" | awk '{print $2}')"
+# hw setup
+writelog "Hardware:"
+writelog "\tMAC:\t\t00:50:56:${VM_ID}:${machostpart}"
+if [ -n "${network_card}" ]; then
+ writelog "\tNet Adaptor:\t${network_card}"
+fi
+writelog "\tMem:\t\t${mem} MB"
+# echo nur wenn hostmem gesetzt
+[ -n "${hostmem}" ] && writelog "\tHostmem:\t${hostmem} MB"
+writelog "\tMax. res.:\t${xres}x${yres}"
+writelog "\tCD-ROM1:\t${cdrom0}"
+writelog "\tCD-ROM2:\t${cdrom1}"
+writelog "\tFloppy_A:\t${floppy0}"
+if [ "${serial}" = "TRUE" ]; then
+ writelog "\tSerial Port:\t${serialdev}"
+fi
+if [ "${parallel}" = "TRUE" ]; then
+ writelog "\tParallel Port:\t${paraldev}"
+fi
+# image
+writelog "Diskimage:"
+writelog "\tDiskfile:\t${diskfile}"
+writelog "\tDisktype:\t${hddrv}"
+writelog "\tHWVersion:\t${hwver}"
+writelog "\tVMostype:\t${vmostype}"
+# misc
+writelog "Misc:"
+writelog "\tDisplayname:\t${displayname}"
+if [ "${cap3d}" = "TRUE" -a "${enable3d}" = "TRUE" ]; then
+ writelog "\t3D Graphics:\tenabled"
+fi
+# empty line at end
+writelog ""
+
+
+# finally set env for run-virt.sh
+################################################################################
+
+# configure and start samba service to provide user's home directory
+if [ -f /usr/sbin/smbd ] ; then
+ sudo /opt/openslx/rootfs/bin/sed -i /etc/vmware/smb.conf -e "s,USER,$USER,"
+ sudo /usr/sbin/nmbd -s /etc/vmware/smb.conf
+ sudo /usr/sbin/smbd -s /etc/vmware/smb.conf
+fi
+
+# using the modified version of the wrapper script
+VIRTCMD="${OPENSLX_DEFAULT_BINDIR}/vmplayer"
+VIRTCMDOPTS="${vmopt} ${conffile}"
+RMDIRS="${redodir} ${conffile}"
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/vmware.conf b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/vmware.conf
new file mode 100644
index 00000000..a67adc18
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/vmware.conf
@@ -0,0 +1,8 @@
+# configuration file for vmware background services written in stage3 setup
+vmnet0=true
+vmnet1=192.168.101.1/24
+vmnet1nat=true
+vmnet8=192.168.102.1/24
+# stage1 variables produced during plugin install
+version="5.0"
+buildversion="1031769"
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/udhcpd.conf b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/udhcpd.conf
new file mode 100644
index 00000000..b1e02ba2
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/udhcpd.conf
@@ -0,0 +1,37 @@
+# general udhcpd configuration file for virtual machines written by
+# /bin/init-wrapper during OpenSLX stage3 configuration
+
+# start and end of the IP lease block
+start CNETWORK.20
+end CNETWORK.100
+
+# interface that udhcpd will use
+interface NWIF
+
+# how long an offered address is reserved (leased) in seconds
+offer_time 6000
+
+# location of the leases file
+lease_file LEASEFILE
+
+# location of the pid file
+pidfile PIDFILE
+
+option dns 132.230.200.200
+option subnet 255.255.255.0
+option router CNETWORK.1
+option wins CNETWORK.10
+option domain virtual.site
+
+# additional options known to udhcpd
+#subnet #timezone
+#router #timesvr
+#namesvr #dns
+#logsvr #cookiesvr
+#lprsvr #bootsize
+#domain #swapsvr
+#rootpath #ipttl
+#mtu #broadcast
+#wins #lease
+#ntpsrv #tftp
+#bootfile
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/config b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/config
new file mode 100644
index 00000000..eb5d01c0
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/config
@@ -0,0 +1,4 @@
+.encoding = "UTF-8"
+prefvmx.minVmMemPct = "100"
+prefvmx.useRecommendedLockedMemSize = "TRUE"
+libdir = "/usr/lib/vmware"
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/nat.conf b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/nat.conf
new file mode 100644
index 00000000..18dfcc24
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/nat.conf
@@ -0,0 +1,9 @@
+# Linux NAT configuration file
+[host]
+ip = 192.168.102.2/24
+device = /dev/vmnet8
+activeFTP = 1
+[udp]
+timeout = 60
+[incomingtcp]
+[incomingudp]
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/smb.conf b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/smb.conf
new file mode 100644
index 00000000..e7a1d2c1
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/smb.conf
@@ -0,0 +1,25 @@
+# basic samba configuration file for OpenSLX host-internal networking
+[global]
+ workgroup = OPENSLX
+ netbios name = HOMESERVER
+ security = SHARE
+ server string = Home and Print Provider
+ bind interfaces only = Yes
+ interfaces = vmnet1,vmnet8
+ pid directory = /var/run/vmware
+
+[userhome]
+ comment = Home Directory of USER
+ path = /home/USER
+ create mask = 0700
+ guest ok = No
+ read only = No
+
+[scratch]
+ comment = Host System Temp Folder
+ path = /tmp
+ create mask = 0700
+ guest ok = Yes
+ read only = No
+ browseable = Yes
+
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet1.conf b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet1.conf
new file mode 100644
index 00000000..62045d21
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet1.conf
@@ -0,0 +1,37 @@
+# general udhcpd configuration file for virtual machines written by
+# /bin/init-wrapper during OpenSLX stage3 configuration
+
+# start and end of the IP lease block
+start 192.168.101.20
+end 192.168.101.100
+
+# interface that udhcpd will use
+interface vmnet1
+
+# how long an offered address is reserved (leased) in seconds
+offer_time 6000
+
+# location of the leases file
+lease_file /var/run/vmware/udhcpd-vmnet1.leases
+
+# location of the pid file
+pidfile /var/run/vmware/udhcpd-vmnet1.pid
+
+option dns 132.230.200.200
+option subnet 255.255.255.0
+option router 192.168.101.1
+option wins 192.168.101.10
+option domain virtual.site
+
+# additional options known to udhcpd
+#subnet #timezone
+#router #timesvr
+#namesvr #dns
+#logsvr #cookiesvr
+#lprsvr #bootsize
+#domain #swapsvr
+#rootpath #ipttl
+#mtu #broadcast
+#wins #lease
+#ntpsrv #tftp
+#bootfile
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet8.conf b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet8.conf
new file mode 100644
index 00000000..d89a8bee
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet8.conf
@@ -0,0 +1,37 @@
+# general udhcpd configuration file for virtual machines written by
+# /bin/init-wrapper during OpenSLX stage3 configuration
+
+# start and end of the IP lease block
+start 192.168.102.20
+end 192.168.102.100
+
+# interface that udhcpd will use
+interface vmnet8
+
+# how long an offered address is reserved (leased) in seconds
+offer_time 6000
+
+# location of the leases file
+lease_file /var/run/vmware/udhcpd-vmnet8.leases
+
+# location of the pid file
+pidfile /var/run/vmware/udhcpd-vmnet8.pid
+
+option dns 132.230.200.200
+option subnet 255.255.255.0
+option router 192.168.102.1
+option wins 192.168.102.10
+option domain virtual.site
+
+# additional options known to udhcpd
+#subnet #timezone
+#router #timesvr
+#namesvr #dns
+#logsvr #cookiesvr
+#lprsvr #bootsize
+#domain #swapsvr
+#rootpath #ipttl
+#mtu #broadcast
+#wins #lease
+#ntpsrv #tftp
+#bootfile
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/usbarb.rules b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/usbarb.rules
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/usbarb.rules
diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/vmnet-natd-8.mac b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/vmnet-natd-8.mac
new file mode 100644
index 00000000..ef6cc5ce
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/vmnet-natd-8.mac
@@ -0,0 +1 @@
+00:50:56:F1:30:50
diff --git a/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/run-virt.sh b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/run-virt.sh
new file mode 100755
index 00000000..070581d2
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/run-virt.sh
@@ -0,0 +1,440 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Copyright (c) 2007..2010 - RZ Uni FR
+# Copyright (c) 2007..2011 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# run-virt.sh
+# - This is the generic wrapper for the several virtualization solutions.
+# The idea is to setup a set of variables used by at least two different
+# tools and then include the specific plugin which configures the speci-
+# fied virtualization tool.
+################################################################################
+
+. /etc/opt/openslx/openslx.conf
+
+################################################################################
+### Define default dirs / get configs
+################################################################################
+
+PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins
+PLUGINCONFDIR=${PLUGINCONFROOT}/vmchooser
+# include general configuration from vmchooser
+[ -f ${PLUGINCONFROOT}/vmchooser/vmchooser.conf ] && \
+ . ${PLUGINCONFROOT}/vmchooser/vmchooser.conf
+# load general virtualization information
+[ -f ${PLUGINCONFROOT}/virtualization/virtualization.conf ] && \
+ . ${PLUGINCONFROOT}/virtualization/virtualization.conf
+
+################################################################################
+### Functions used throughout the script
+################################################################################
+
+# function to write to stdout and logfile
+LOGFILE=${OPENSLX_DEFAULT_LOGDIR}/run-virt.${USER}.$$.log
+writelog () {
+ # write to stdout
+ echo -e "$1"
+ # log into file
+ echo -e "$1" >> ${LOGFILE}
+}
+
+# remove config dirs when exit
+cleanexit () {
+ if echo "${RMDIRS}" 2>/dev/null | grep -q ${xmlvirt}; then
+ writelog "${xmlvirt} exited. Cleanning up... \c"
+ rm -rf ${RMDIRS} >/dev/null 2>&1
+ writelog "done"
+ fi
+
+ exit "$1"
+}
+
+# check for important files used
+filecheck ()
+{
+ filecheck=$(LANG=us ls -lh ${diskfile} 2>&1)
+ writelog "Filecheck:\n${filecheck}\n"
+ noimage=$(echo ${filecheck} | grep -i "no such file or directory" | wc -l)
+ rightsfile=${diskfile}
+
+ # check if link
+ if [ -L "${diskfile}" ]; then
+ # take link target
+ rightsfile=$(ls -lh ${diskfile} 2>&1 | awk -F '-> *' '{print $2}')
+ rightsfile=${vmdir}/${rightsfile}
+ filecheck=$(LANG=us ls -lh ${rightsfile} 2>&1)
+ fi
+
+ # does file exist
+ if [ "${noimage}" -ge "1" ]; then
+ writelog "Virtual Machine Image Problem:\c "
+ writelog "\tThe image you've specified doesn't exist."
+ writelog "Filecheck says:\c "
+ writelog "\t\t${diskfile}:\n\t\t\tNo such file or directory"
+ writelog "Hint:\c "
+ writelog "\t\t\tCompare spelling of the image with your options.\n"
+ exit 1
+ fi
+
+ # readable by calling user
+ if ! [ -r "${diskfile}" >/dev/null 2>&1 \
+ -o -r "${diskfile}" >/dev/null 2>&1 ]; then
+ writelog "Vmware Image Problem:\c "
+ writelog "\tThe image you've specified has wrong rights."
+ writelog "Filecheck says:\t\t$(echo ${filecheck} \
+ | awk '{print $1" "$3" "$4}') ${rightsfile}"
+ writelog "Hint:\t\t\tChange rights with: chmod a+r ${rightsfile}\n"
+ exit 1
+ fi
+
+ # writable (for persistent-mode)?
+ if ! [ -w "${diskfile}" >/dev/null 2>&1 \
+ -o -w "${diskfile}" >/dev/null 2>&1 ] \
+ && [ "${np}" = "independent-persistent" ]; then
+ writelog "Vmware Image Problem:\c "
+ writelog "\tThe image you have specified has wrong rights."
+ writelog "Filecheck says:\t\t$(echo ${filecheck} \
+ | awk '{print $1" "$3" "$4}') ${rightsfile}"
+ writelog "Hint:\t\t\tUse nonpersistent-mode or change rights to rw\n"
+ exit 1
+ fi
+}
+
+################################################################################
+### Get XML file and dir
+################################################################################
+
+# absolute or relative path?
+xmlfile=$1
+if ls ${xmlfile} 2>/dev/null | grep '/' >/dev/null 2>&1; then
+ xmlpath=$(dirname ${xmlfile})
+ xmlfile=$(basename ${xmlfile})
+else
+ xmlpath=${vmchooser_xmlpath}
+fi
+# full path
+xmlfile="${xmlpath}/${xmlfile%.xml}.xml"
+
+################################################################################
+### Sanity checks
+################################################################################
+
+# test if the xml file is valid
+if ! [ -r "${xmlfile}" ]; then
+ writelog "${xmlfile} not a readable XML file!"
+ exit 1
+fi
+
+# test if XML file
+if ! grep '<?xml' "${xmlfile}" >/dev/null 2>&1; then
+ writelog \
+ "Submitted configuration file ${xmlfile} seems to have wrong XML format"
+ exit 1
+fi
+
+# check for running in graphical environment otherwise no much use here
+[ -z "$DISPLAY" ] && echo -e "\n\tStart only within a graphical desktop!\n" \
+ && exit 1
+
+################################################################################
+### Logo for console
+################################################################################
+
+cat <<EOL
+ __ __
+ .----.--.--.-----.___.--.--.|__|.----.| |_
+ | _| | | |___| | || || _|| _|
+ |__| |_____|__|__| \___/ |__||__| |____|
+ OpenSLX virtual machine environment preparation script ...
+
+EOL
+
+################################################################################
+### Read needed variables from XML file
+################################################################################
+
+writelog "Starting configuration..."
+writelog "\tLogfile:\t\t${LOGFILE}"
+writelog "\t/tmp info:\t\t$(df -h | grep " /tmp$" | awk '{print $2}') \c"
+writelog "$(grep "/tmp " /proc/mounts | awk '{print $1" "$2" "$3" "$4}')"
+writelog "\tVM XML dir:\t\t$(dirname ${xmlfile})"
+writelog "\tXML file:\t\t${xmlfile}"
+writelog "VM config:"
+
+# Name of the virt image
+imgname=$(grep -io '<image_name param=.*"' ${xmlfile} \
+ | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }')
+
+# Imagename /w full path
+if echo ${imgname} 2>/dev/null | grep -q '^/' >/dev/null 2>&1; then
+ imgpath=$(dirname ${imgname})
+ imgname=$(basename ${imgname})
+ vmpath=${imgpath}/${imgname}
+# If old vmchooser binary stuff
+# We do not need folder name as it is already included by vmchooser
+elif echo ${xmlfile} 2>/dev/null | grep -q '^/tmp/' >/dev/null 2>&1; then
+ vmpath=$imgname
+ imgname=$(basename ${imgname})
+# Else use same path as xml
+else
+ imgpath=${xmlpath}
+ vmpath=${imgpath}/${imgname}
+fi
+
+# Check if virtual machine container file exists
+if ! [ -e "${vmpath}" ]; then
+ writelog "Virtual machine image ${vmpath} not found!"
+ exit 1
+fi
+
+# Name of the virt machine, sed because of Windows formatting
+vm_name=$(grep -o 'short_description param=.*"' ${xmlfile} \
+ | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}')
+# If ${vm_name} not defined use ${xmlfile}
+vm_name=${vm_name:-${xmlfile%.xml}}
+
+# Define vm_shortname since vm_name can be very long
+vm_shortname=$(basename ${xmlfile%.xml} | sed -e "s, ,-,g")
+
+# vm_name = displayname, define for old scripts
+displayname=${vm_name}
+
+# image is for the following virtual machine
+xmlvirt=$(grep -o 'virtualmachine param=.*"' ${xmlfile} \
+ | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}')
+
+# choose the proper virtualization/emulator plugin
+[ "x${xmlvirt}" != "x" -a "x${xmlvirt}" != "xqemukvm" -a \
+ "x${xmlvirt}" != "xvirtualbox" -a "x${xmlvirt}" != "xvmware" ] && \
+ xmlvirt="emufe"
+
+# make a guess from the filename extension if ${xmlvirt} is empty
+# (not set within the XML file)
+# TODO: implement possibility to submit own configuration files
+if [ -z "${xmlvirt}" ] && [ -n "${additional_config}" ]; then
+ writelog "No virtual machine parameter defined in ${xmlfile}"
+ writelog "Trying to guess VM...\c"
+ case "$(cat ${additional_config} | tr \"[A-Z]\" \"[a-z]\")" in
+ *config.version*|*virtualhw.version*|*independent-nonpersistent*|*vmdk*)
+ xmlvirt="vmware"
+ ;;
+ *innotek*|*virtualbox*)
+ xmlvirt="virtualbox"
+ ;;
+ *qemu*|*kvm*)
+ xmlvirt="qemukvm"
+ ;;
+ *)
+ xmlvirt="none"
+ ;;
+ esac
+elif [ -z "${xmlvirt}" ]; then
+ case "$(echo ${imgname##*.} | tr \"[A-Z]\" \"[a-z]\")" in
+ vmdk)
+ xmlvirt="vmware"
+ ;;
+ vbox|vdi)
+ xmlvirt="virtualbox"
+ ;;
+ qcow*)
+ xmlvirt="qemukvm"
+ ;;
+ *)
+ xmlvirt="emufe"
+ ;;
+ esac
+ writelog "result:\t${xmlvirt}"
+fi
+
+# Definition of the client system
+vmostype=$(grep -io '<os param=.*"' ${xmlfile} | awk -F '"' '{ print $2 }' |\
+ tr "[A-Z]" "[a-z]")
+
+# Definition of the networking the client system is connected to
+network_kind=$(grep -io '<network param=.*"' ${xmlfile} \
+ | awk -F '"' '{ print $2 }' | tr "[A-Z]" "[a-z]")
+network_card=$(grep -io '<netcard param=.*"' ${xmlfile} \
+ | awk -F '"' '{ print $2 }'| tr "[A-Z]" "[a-z]")
+
+# Set redirects to 0, see vmgrid if you want to define some
+redirects=0
+
+# Serial/parallel ports defined (e.g. "ttyS0" or "autodetect")
+serial=$(grep -io '<serialport param=.*"' ${xmlfile} \
+ | awk -F '"' '{ print $2 }')
+parallel=$(grep -io '<parport param=.*"' ${xmlfile} \
+ | awk -F '"' '{ print $2 }')
+
+writelog "\tVirtualization:\t\t$xmlvirt"
+writelog "\tVM name:\t\t$vm_name"
+writelog "\tVM short name:\t\t$vm_shortname"
+
+###############################################################################
+### Declaration of default variables
+###############################################################################
+
+# VM-ID static (00)
+VM_ID="00"
+# take last two digits of current pid...
+VM_ID=$(expr substr $$ $(expr ${#$} - 1) 2)
+
+# Make sure cpu_cores is not empty
+cpu_cores=${cpu_cores:-"1"}
+
+# Total amount of memory defined in stage 3
+# TODO: Should be dependent on the setup (if diff is written to RAM ...)
+permem=60
+if [ "x${VMCHOOSER_FORCE_HALF_MEM}" == "x1" ]; then
+ permem=30
+fi
+# Get a result which can be divided through 4
+mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4)
+if [ -n "${mainvirtmem}" ]; then
+ forcemem=$(expr ${mainvirtmem} / 4 \* 4)
+ mem=${forcemem}
+fi
+hostmem=$(expr ${totalmem} - ${mem})
+
+# Configuring ethernet mac address: first 3 bytes are fixed (00:50:56)
+# 4th byte is the VM-ID (0D)
+# last two bytes are taken from the bridge of the host
+# define one MAC per guest
+macguestpart="00:50:56:${VM_ID}"
+machostpart=$(echo ${hostmacaddr} | awk -F ":" '{print $(NF-1)":"$NF}')
+macaddr=$(echo "${macguestpart}:${machostpart}" | tr "[a-z]" "[A-Z]")
+
+# Virtual fd/cd/dvd and drive devices, floppy b: for configuration
+# if $floppy_0 from run-virt.include set then fdtest="TRUE"
+fdtest=
+fdtest=${floppy_0:+"TRUE"}
+# if $fdtest not set floppy0="FALSE", else "TRUE"
+floppy0=${fdtest:-"FALSE"}
+floppy1="TRUE"
+floppy1name="${PLUGINCONFDIR}/loopimg/fd.img"
+# if $cdrom_0 from run-virt.include set then cdtest="TRUE"
+cdtest=
+cdtest=${cdrom_0:+"TRUE"}
+# if $cdtest not set cdrom0="FALSE", else "TRUE"
+cdrom0=${cdtest:-"FALSE"}
+# if $cdrom_1 from run-virt.include set then cdtest="TRUE"
+cdtest=
+cdtest=${cdrom_1:+"TRUE"}
+# if $cdtest not set cdrom1="FALSE", else "TRUE"
+cdrom1=${cdtest:-"FALSE"}
+# IDE is expected default, test for the virtual disk image type should
+# be done while creating the runscripts ...
+ide="TRUE"
+scsi="FALSE"
+hddrv="ide"
+audio="true"
+remotedesktopport="590${VM_ID}"
+
+# Display resolution within the host system
+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'} | tr "[A-Z]" "[a-z]")
+
+# Add rw share
+sharepath="${HOME}"
+sharename="home"
+
+# Set hostname: using original hostname and adding string
+hostname="virt-$(hostname)"
+
+writelog "\tVM Hostname:\t\t$hostname"
+
+################################################################################
+### Setup the rest of the environment and run the configured vm
+################################################################################
+
+# Adjust sound volume
+writelog "Unmuting sound...\c "
+amixer -q sset Master 100% unmute 2>/dev/null
+amixer -q sset PCM 100% unmute 2>/dev/null
+amixer -q sset CD 100% unmute 2>/dev/null
+amixer -q sset Headphone 100% unmute 2>/dev/null
+amixer -q sset Front 100% unmute 2>/dev/null # in SUSE 11.0 it's headphone
+amixer -q sset Speaker 100% unmute 2>/dev/null # annoying built-in speaker
+writelog "finished\n"
+
+# Copy guest configuration (with added information) config.xml to be accessed
+# via virtual floppy
+# fixme -> to be changed (vmchooser adapts the file content!?)
+#TODO: wozu echo?
+#echo "Please fix the config.xml generation"
+cp ${xmlfile} ${PLUGINCONFDIR}/fd-loop/config.xml
+
+# Get all virtual machine specific stuff from the respective include file
+if [ -e ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include ] ; then
+ self=${xmlvirt}
+ . ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include
+ # start a windowmanager for easier handling
+ # (expect problems /w windows opening in background /w vmware without wm)
+ for dm in xfwm4 metacity openbox blackbox kwin fvwm2 ; do
+ if which $dm >/dev/null 2>&1 ; then
+ if [ "$dm" = "fvwm2" ] ; then
+ echo "EdgeScroll 0 0" > ${redodir}/fvwm
+ fvwm2 -f ${redodir}/fvwm >/dev/null 2>&1 &
+ else
+ $dm >/dev/null 2>&1 &
+ fi
+ break
+ fi
+ done
+ # Start poolvideoswitch if we find the autostarter file
+ if [ -e /etc/xdg/autostart/pvsgui.desktop ]; then
+ /usr/local/bin/pvsgui -p 2 -b >/dev/null 2>&1 &
+ 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 commands after virtualization finishes
+if [ -n "${POSTRUN}" ]; then
+ eval ${POSTRUN} >/dev/null 2>&1
+fi
+
+cleanexit 0
+exit 0
diff --git a/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/vmchooser b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/vmchooser
new file mode 100755
index 00000000..c4ec59e2
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/vmchooser
Binary files differ
diff --git a/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/xmlfilter.sh b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/xmlfilter.sh
new file mode 100755
index 00000000..ded5d114
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/xmlfilter.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Copyright (c) 2007..2009 - RZ Uni FR
+# Copyright (c) 2007..2011 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# xmlfilter.sh
+# - This script is invoked by the vmchooser tool. It simply filters xml-
+# files (taking the path to these files in $1). You might modify it in any
+# way to match your needs, e.g. ask some database instead. You can re-
+# implement it in any other programming language too. You simply have to
+# return a list of proper xml files to be interpreted by the vmchooser
+# binary). Please check for vmchooser.sh too ...
+# -----------------------------------------------------------------------------
+
+# This script .
+#
+# currently:
+# - filter for slxgrp (which comes from /etc/machine-setup)
+#
+
+# include default directories
+. /etc/opt/openslx/openslx.conf
+
+if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf ]; then
+ . ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf
+fi
+
+for FILE in $(find $1 -iname "*.xml"); do
+ # filter all xmls which aren't set active
+ if [ $(grep "<active param=.*true.*" ${FILE} | wc -l) -eq 1 ]; then
+ if [ -n ${vmchooser_env} ]; then
+ # filter all xmls with pool-param not equal to vmchooser::env
+ if [ $(grep "<pools param=\"${vmchooser_env}\"" ${FILE} | wc -l) -eq 1 ];\
+ then
+ echo ${FILE};
+ fi
+ else
+ # if there is no pool set, just take all available xmls
+ echo -e ${active}
+ fi
+ fi
+done
diff --git a/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmware/run-virt.include b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmware/run-virt.include
new file mode 100644
index 00000000..603c8e9b
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmware/run-virt.include
@@ -0,0 +1,532 @@
+# run-virt.include
+# -----------------------------------------------------------------------------
+# Copyright (c) 2009..2012 - RZ Uni Freiburg
+# Copyright (c) 2009..2013 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# run-virt.include
+# - component for vmware/player of the vmchooser plugin run-virt.sh
+################################################################################
+
+# configuration writer functions
+################################################################################
+
+runvmwareconfheader ()
+{
+echo "# This configuration file was generated by $0" >${conffile}
+
+# check for the ostype
+case "${vmostype}" in
+ win31*)
+ mem="32"
+ cpu_cores="1"
+ sound="sb16"
+ shfolders="FALSE"
+ ;;
+ win95*)
+ mem="92"
+ cpu_cores="1"
+ shfolders="FALSE"
+ ;;
+ win98*|winme*)
+ mem="256"
+ cpu_cores="1"
+ shfolders="FALSE"
+ ;;
+ winxp*|windowsxp*)
+ shfolders="TRUE"
+ ;;
+ winvista*|windowsvista*)
+ shfolders="TRUE"
+ ;;
+ windows7*)
+ shfolders="TRUE"
+ ;;
+ windows8*)
+ shfolders="TRUE"
+ ;;
+ linux*|*ubuntu*|*suse*|debian*|*sci*)
+ vmostype="linux"
+ shfolders="TRUE"
+ ;;
+ macos*)
+ cpu_cores="1"
+ vmostype="other"
+ shfolders="FALSE"
+ ;;
+ beos*)
+ cpu_cores="1"
+ vmostype="other"
+ shfolders="FALSE"
+ ;;
+ *)
+ vmostype="other"
+ shfolders="FALSE"
+ ;;
+esac
+case "$vmversion" in
+ *)
+ svga_autodetect="TRUE"
+ numvcpus="1"
+ echo ".encoding = \"UTF-8\"
+# version specific stuff - all versions
+config.version = \"8\"" >>${conffile}
+ ;;
+esac
+case "$vmversion" in
+ 2.*|3.*|4.*|5.*|6.*|7.*|8.*|9.*)
+ [ ${shfolders} == FALSE ] || echo "
+# version specific stuff - ver. 2.*|3.*|6.*|7.*|8.*|9.*
+sharedFolder.option = \"alwaysEnabled\"" >>${conffile}
+ ;;
+esac
+case "$vmversion" in
+ 2.5|3.*|4.*|5.*|6.5|7.*|8.*|9.*)
+ if [ "${cpu_cores}" -ge "2" 2>/dev/null ]; then
+ numvcpus="2"
+ fi
+ if [ "${mem}" -ge "8000" 2>/dev/null ]; then
+ mem=8000
+ fi
+ cap3d="TRUE" # helper var for loging output
+ echo "
+# version specific stuff - ver. 2.5|3.*|6.5|7.*
+ehci.present = \"TRUE\"
+mks.enable3d = \"${enable3d}\"" >>${conffile}
+ ;;
+esac
+case "$vmversion" in
+ 3.*|4.*|7.*|8.*|9.*)
+ numvcpus="${cpu_cores}"
+ if [ "${cpu_cores}" -ge "4" 2>/dev/null ]; then
+ numvcpus="4"
+ fi
+ # svga_autodetect="FALSE" # if defined manual, see below
+ echo "
+# version specific stuff - ver. 3.*|7.*
+cpuid.coresPerSocket = \"${cpu_cores}\"
+maxvcpus = \"4\"
+monitor.virtual_mmu = \"automatic\"
+monitor.virtual_exec = \"automatic\"
+floppy1.clientDevice = \"FALSE\"
+floppy1.readonly = \"TRUE\"" >>${conffile}
+ ;;
+esac
+
+echo "
+# id
+virtualHW.version = \"${hwver}\"
+displayName = \"${displayname}\"
+guestOS = \"${vmostype}\"
+
+# CPU/MEM
+numvcpus = \"${numvcpus}\"
+memsize = \"${mem}\"
+MemAllowAutoScaleDown = \"FALSE\"
+MemTrimRate = \"-1\"
+
+# ide-disks
+ide0:0.present = \"${ide}\"
+ide0:0.fileName = \"${diskfile}\"
+ide0:0.mode = \"independent-nonpersistent\"
+ide1:0.present = \"${cdrom0}\"
+ide1:0.autodetect = \"TRUE\"
+ide1:0.fileName = \"auto detect\"
+ide1:0.deviceType = \"cdrom-raw\"
+ide1:1.present = \"${cdrom1}\"
+ide1:1.autodetect = \"TRUE\"
+ide1:1.fileName = \"auto detect\"
+ide1:1.deviceType = \"cdrom-raw\"
+
+# scsi-disks
+scsi0.present = \"${scsi}\"
+scsi0:0.present = \"${scsi}\"
+scsi0:0.fileName = \"${diskfile}\"
+scsi0.virtualDev = \"${hddrv}\"
+scsi0:0.mode = \"independent-nonpersistent\"
+
+# floppies
+floppy0.present = \"${floppy0}\"
+floppy0.startConnected = \"FALSE\"
+floppy0.autodetect = \"TRUE\"
+floppy0.fileName = \"auto detect\"
+# we need floppy b: for our windows client configuration
+floppy1.present = \"${floppy1}\"
+floppy1.startConnected = \"TRUE\"
+floppy1.fileType = \"file\"
+floppy1.fileName = \"${floppy1name}\"
+
+# nics
+ethernet0.present = \"TRUE\"
+ethernet0.addressType = \"static\"
+${network_virtualDev}
+ethernet0.connectionType = \"${network_kind}\"
+#ethernet1.connectionType = \"custom\"
+#ethernet1.vnet = \"/dev/vmnet2\"
+ethernet0.address = \"00:50:56:${VM_ID}:${machostpart}\"
+ethernet0.wakeOnPcktRcv = \"FALSE\"
+
+# sound
+sound.present = \"TRUE\"
+sound.fileName = \"-1\"
+sound.autodetect = \"TRUE\"
+sound.virtualdev = \"${sound}\"
+
+# svga
+svga.autodetect = \"${svga_autodetect}\"
+
+# usb
+usb.present = \"TRUE\"
+usb.generic.autoconnect = \"TRUE\"
+
+# pci configuration
+usb.pciSlotNumber = "16"
+ethernet0.pciSlotNumber = "17"
+sound.pciSlotNumber = "18"
+ehci.pciSlotNumber = "19"
+scsi0.pciSlotNumber = "20"
+
+# shared folders
+sharedFolder0.present = \"${shfolders}\"
+sharedFolder0.enabled = \"${shfolders}\"
+sharedFolder0.expiration = \"never\"
+sharedFolder0.guestName = \"${sharename}\"
+sharedFolder0.hostPath = \"${sharepath}\"
+sharedFolder0.readAccess = \"TRUE\"
+sharedFolder0.writeAccess = \"TRUE\"
+sharedFolder.maxNum = \"1\"
+
+# dirs/configs
+tmpDirectory = \"${redodir}\"
+redoLogDir = \"${redodir}\"
+mainMem.useNamedFile = \"TRUE\"
+snapshot.disabled = \"TRUE\"
+tools.syncTime = \"TRUE\"
+isolation.tools.hgfs.disable = \"FALSE\"
+hgfs.mapRootShare = \"TRUE\"
+isolation.tools.dnd.disable = \"FALSE\"
+isolation.tools.copy.enable = \"TRUE\"
+isolation.tools.paste.enabled = \"TRUE\"
+
+# serial port
+serial0.present = \"${serial}\"
+${serialdev}
+
+# parallel port
+parallel0.present = \"${parallel}\"
+parallel0.bidirectional = \"${paralbidi}\"
+${paraldev}" >>${conffile}
+
+# set the appropriate permissions for the vmware config file
+chmod u+rwx ${conffile} >/dev/null 2>&1
+}
+
+preferencesheader ()
+{
+echo ".encoding = \"UTF-8\"
+# This configuration file was generated by $0
+
+# updates/tips
+webUpdate.enabled = \"FALSE\"
+pref.downloadPermission = \"deny\"
+pref.vmplayer.downloadPermission = \"deny\"
+pref.vmplayer.webUpdateOnStartup = \"FALSE\"
+pref.tip.startup = \"FALSE\"
+hints.hideAll = \"TRUE\"
+hint.vmui.showAllUSBDevs = \"FALSE\"
+
+# configs
+prefvmx.defaultVMPath = \"${vmhome}\"
+prefvmx.mru.config = \"${conffile}:\"
+
+# hot keys
+pref.hotkey.control = \"true\"
+pref.hotkey.alt = \"true\"
+pref.hotkey.shift = \"true\"
+pref.hotkey.gui = \"true\"
+gui.restricted = \"true\"
+
+# fullscreen/mouse/keyboard
+pref.fullscreen.toolbarPixels = \"0\"
+pref.vmplayer.fullscreen.autohide = \"TRUE\"
+pref.grabOnMouseClick = \"TRUE\"
+pref.grabOnKeyPress = \"FALSE\"
+pref.motionGrab = \"TRUE\"
+pref.motionUngrab = \"TRUE\"
+pref.hideCursorOnUngrab = \"TRUE\"
+pref.autoFit = \"TRUE\"
+pref.autoFitFullScreen = \"fitGuestToHost\"
+pref.vmplayer.exit.vmAction = \"poweroff\"
+pref.vmplayer.confirmOnExit = \"TRUE\"
+
+# shared folders
+pref.enableAllSharedFolders = \"TRUE\"
+
+# eula" >${vmhome}/preferences
+
+# different eula parameters from Workstation 9+/ Player 5+
+case "$vmversion" in
+ 3.*|4.*|7.*|8.*)
+ echo "
+pref.eula.size = \"2\"
+pref.eula.0.appName = \"VMware Player\"
+pref.eula.0.buildNumber = \"${vmbuild}\"
+pref.eula.1.appName = \"VMware Workstation\"
+pref.eula.1.buildNumber = \"${vmbuild}\"" >>${vmhome}/preferences
+ ;;
+ 5.*|9.*)
+ # code
+ echo "
+pref.eula.count = \"2\"
+pref.eula0.product = \"VMware Player\"
+pref.eula0.build = \"${vmbuild}\"
+pref.eula1.product = \"VMware Workstation\"
+pref.eula1.build = \"${vmbuild}\"" >>${vmhome}/preferences
+ ;;
+esac
+
+}
+
+
+# declaration of default variables
+################################################################################
+
+# VM-ID static (0D), remove if changed to 00
+VM_ID="0D"
+# should be dynamic
+if [ "x$(which bc)" != "x" ]; then
+ VM_ID=$(echo "obase=16; $$" | bc)
+ VM_ID=$(expr substr $VM_ID $(expr ${#VM_ID} - 1) 2)
+fi
+# temporary disk space for logs, etc...
+redodir=/tmp/vmware/${USER}.$$
+# dir for configs and vmem file
+confdir=/tmp/vmware/${USER}.$$
+# configfile
+conffile="${confdir}/run-vmware.conf"
+# diskfile
+diskfile=${vmpath}
+# users vmware config folder
+vmhome="${HOME}/.vmware"
+
+# get several version infos for vmware/player
+. ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf
+vmbuild=$buildversion
+vmversion=$version
+
+# VMware start options
+# "-X": start in fullscreen
+vmopt="-X"
+
+
+# hardware checks
+################################################################################
+
+# use different network card (default e1000, vlance, vmxnet)
+if [ -n "${network_card}" ]; then
+ network_virtualDev="ethernet0.virtualDev = \"${network_card}\""
+else
+ network_virtualDev='# using default virtualDev for ethernet0'
+fi
+
+# set standard sound card, overwrite depending on OS (options sb16, es1371, hdaudio)
+sound="es1371"
+
+# check for 3D configuration setting
+case "${enable3d}" in
+ *true*|*yes*)
+ enable3d="TRUE"
+ ;;
+ *)
+ enable3d="FALSE"
+ ;;
+esac
+
+# serial/parallel port defined (e.g. "ttyS0, lp0" or "autodetect")
+case "$serial" in
+ tty*)
+ serialdev="serial0.filename = \"/dev/${serial}\""
+ serial="TRUE"
+ ;;
+ auto*)
+ serialdev="serial0.autodetect = \"TRUE\""
+ serial="TRUE"
+ ;;
+ *)
+ serialdev="# no serial port configured"
+ serial="FALSE"
+ ;;
+esac
+case "$parallel" in
+ lp*|parport*)
+ paraldev="parallel0.filename = \"/dev/${parallel}\""
+ paralbidi="TRUE"
+ parallel="TRUE"
+ ;;
+ auto*)
+ paraldev="parallel0.autodetect = \"TRUE\""
+ paralbidi="TRUE"
+ parallel="TRUE"
+ ;;
+ *)
+ paraldev="# no parallel port configured"
+ paralbidi="FALSE"
+ parallel="FALSE"
+ ;;
+esac
+
+# adjust memory available for vmware guests
+#if [ -n "${forcemem}" ]; then
+# mem="${forcemem}"
+#else
+# case "$vmversion" in
+# 2.*|6.*)
+# permem=30
+# ;;
+# 3.*|7.*)
+# permem=25
+# ;;
+# esac
+# if [ "${totalmem}" -ge "2500" ]; then
+# permem=40
+# fi
+# # check if /tmp is on harddisk
+# if grep -qe "/dev/.* /tmp " /proc/mounts ; then
+# permem=60
+# id44="1"
+# # Hack, if more than 2,5G RAM use 40% of Ram and write vmem into Ram as well
+# # (40% vmware | 40% confdir(vmem...) | 20% host
+# # VMplayer 2+ issue
+# if [ "${totalmem}" -ge "2500" ]; then
+# permem=40
+# confdir=/dev/shm/vmware/$USER
+# conffile=${confdir}/run-vmware.conf
+# mkdir -p /dev/shm/vmware/$USER
+# fi
+# fi
+# mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4)
+# if [ "${id44}" = "1" ]; then
+# hostmem=$(expr ${totalmem} - ${mem})
+# else
+# hostmem=$(expr ${totalmem} - ${mem} - ${mem})
+# fi
+#fi
+
+# check if ide/scsi and hwver of image
+# read only the first 30 lines to be shure
+imghead=$(head -30 ${diskfile})
+hddrv=$(echo "${imghead}" | grep -m1 -ia "ddb.adapterType" |\
+ awk -F '"' '{print $2}')
+hwver=$(echo "${imghead}" | grep -m1 -ia "ddb.virtualHWVersion" |\
+ awk -F '"' '{print $2}')
+case "${hddrv}" in
+ ide)
+ ide="TRUE"
+ scsi="FALSE"
+ ;;
+ lsilogic|buslogic)
+ ide="FALSE"
+ scsi="TRUE"
+ ;;
+esac
+
+# write configuration files
+################################################################################
+
+# create vmware directories
+mkdir -p ${redodir} >/dev/null 2>&1
+mkdir -p ${confdir} >/dev/null 2>&1
+mkdir -p ${vmhome}/dndlogs >/dev/null 2>&1
+touch ${vmhome}/dndlogs/dndlog.conf >/dev/null 2>&1
+
+# create preferences
+preferencesheader
+
+# create VMware startup file
+runvmwareconfheader
+# link to conffile if confdir != redodir
+ln -s ${conffile} ${redodir}/run-vmware.conf >/dev/null 2>&1
+
+# sync is needed to ensure that data is really written to virtual disk
+sync
+
+# own nvram. We need it for floppy drive b, default nvram has just drive a
+# TODO: optimize, currently kinda inefficient, too much copys, but we
+# don't know which one is installed...
+for i in /opt/openslx/plugin-repo/vmware/*; do
+ cp ${i}/nvram ${confdir}/nvram 2>/dev/null
+done
+
+
+# logging and stdout
+################################################################################
+
+# log script information
+writelog "# File created by $0 (VMversion ${vmversion})\n# on $(date)\n"
+writelog "Starting with non-persistent mode ...\n"
+
+# write all results to logfile
+# log disksetup
+writelog "Directories:"
+writelog "\tConfdir:\t${confdir}"
+writelog "\tConffile:\t${conffile}"
+writelog "\tRedodir:\t${redodir}"
+writelog "\tVMhome:\t\t${vmhome}"
+writelog "\t/tmp info: \
+ $(grep "/tmp " /proc/mounts) $(df -h | grep " /tmp$" | awk '{print $2}')"
+# hw setup
+writelog "Hardware:"
+writelog "\tMAC:\t\t00:50:56:${VM_ID}:${machostpart}"
+if [ -n "${network_card}" ]; then
+ writelog "\tNet Adaptor:\t${network_card}"
+fi
+writelog "\tMem:\t\t${mem} MB"
+# echo nur wenn hostmem gesetzt
+[ -n "${hostmem}" ] && writelog "\tHostmem:\t${hostmem} MB"
+writelog "\tMax. res.:\t${xres}x${yres}"
+writelog "\tCD-ROM1:\t${cdrom0}"
+writelog "\tCD-ROM2:\t${cdrom1}"
+writelog "\tFloppy_A:\t${floppy0}"
+if [ "${serial}" = "TRUE" ]; then
+ writelog "\tSerial Port:\t${serialdev}"
+fi
+if [ "${parallel}" = "TRUE" ]; then
+ writelog "\tParallel Port:\t${paraldev}"
+fi
+# image
+writelog "Diskimage:"
+writelog "\tDiskfile:\t${diskfile}"
+writelog "\tDisktype:\t${hddrv}"
+writelog "\tHWVersion:\t${hwver}"
+writelog "\tVMostype:\t${vmostype}"
+# misc
+writelog "Misc:"
+writelog "\tDisplayname:\t${displayname}"
+if [ "${cap3d}" = "TRUE" -a "${enable3d}" = "TRUE" ]; then
+ writelog "\t3D Graphics:\tenabled"
+fi
+# empty line at end
+writelog ""
+
+
+# finally set env for run-virt.sh
+################################################################################
+
+# configure and start samba service to provide user's home directory
+if [ -f /usr/sbin/smbd ] ; then
+ sudo /opt/openslx/rootfs/bin/sed -i /etc/vmware/smb.conf -e "s,USER,$USER,"
+ sudo /usr/sbin/nmbd -s /etc/vmware/smb.conf
+ sudo /usr/sbin/smbd -s /etc/vmware/smb.conf
+fi
+
+# using the modified version of the wrapper script
+VIRTCMD="${OPENSLX_DEFAULT_BINDIR}/vmplayer"
+VIRTCMDOPTS="${vmopt} ${conffile}"
+RMDIRS="${redodir} ${conffile}"
diff --git a/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/run-virt.sh b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/run-virt.sh
new file mode 120000
index 00000000..39d83f46
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/run-virt.sh
@@ -0,0 +1 @@
+/opt/openslx/plugin-repo/vmchooser/run-virt.sh \ No newline at end of file
diff --git a/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmchooser b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmchooser
new file mode 120000
index 00000000..b247c383
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmchooser
@@ -0,0 +1 @@
+/opt/openslx/plugin-repo/vmchooser/vmchooser \ No newline at end of file
diff --git a/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmplayer b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmplayer
new file mode 100755
index 00000000..c9b57a65
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmplayer
@@ -0,0 +1,8 @@
+#!/bin/sh
+# written by OpenSLX-plugin 'vmware' in Stage1
+# radically simplified version of the original script vmplayer by VMware Inc.
+PREFIX=/usr/lib/vmware # depends on the vmware location
+exec "$PREFIX"'/lib/wrapper-gtk24.sh' \
+ "$PREFIX"'/lib' \
+ "$PREFIX"'/bin/vmplayer' \
+ "$PREFIX"'/libconf' "$@"
diff --git a/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmware b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmware
new file mode 100755
index 00000000..8b568f53
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmware
@@ -0,0 +1,8 @@
+#!/bin/sh
+# written by OpenSLX-plugin 'vmware' in Stage1
+# radically simplified version of the original script vmware by VMware Inc.
+PREFIX=/usr/lib/vmware # depends on the vmware location
+exec "$PREFIX"'/lib/wrapper-gtk24.sh' \
+ "$PREFIX"'/lib' \
+ "$PREFIX"'/bin/vmware' \
+ "$PREFIX"'/libconf' "$@"
diff --git a/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/xmlfilter.sh b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/xmlfilter.sh
new file mode 120000
index 00000000..809dc7b7
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/xmlfilter.sh
@@ -0,0 +1 @@
+/opt/openslx/plugin-repo/vmchooser/xmlfilter.sh \ No newline at end of file
diff --git a/remote/modules/vmchooser/vmchooser-temp/vmchooser/default.desktop b/remote/modules/vmchooser/vmchooser-temp/vmchooser/default.desktop
new file mode 100755
index 00000000..91540228
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/vmchooser/default.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=virtual machine chooser (default)
+Name[de]=Virtuelle Maschine auswählen
+Comment=This session starts the vm session chooser
+Comment[de]=Diese Sitzung startet das Auswahlmenü für die vorhandenen Sitzungen
+Exec=/opt/openslx/plugin-repo/vmchooser/vmchooser
+TryExec=/opt/openslx/plugin-repo/vmchooser/vmchooser
+Icon=
+Type=Application
diff --git a/remote/modules/vmchooser/vmchooser-temp/vmchooser/mesgdisp b/remote/modules/vmchooser/vmchooser-temp/vmchooser/mesgdisp
new file mode 100755
index 00000000..41e3721c
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/vmchooser/mesgdisp
Binary files differ
diff --git a/remote/modules/vmchooser/vmchooser-temp/vmchooser/printer.sh b/remote/modules/vmchooser/vmchooser-temp/vmchooser/printer.sh
new file mode 100755
index 00000000..8f1d5ffa
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/vmchooser/printer.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+#echo "<printer name=\"info\" path=\"//printserver/info\"> some pseudo printer </printer>"
+
+for(( i=0; $i<10; i=$i+1)); do
+ echo -e "printserver$i\tprinter$i\tPrinter Description $i"
+done
+
+echo -e "printserver.ruf.uni-freiburg.de\treal-printer-name\tSome really long printer Description"
+
diff --git a/remote/modules/vmchooser/vmchooser-temp/vmchooser/scanner.sh b/remote/modules/vmchooser/vmchooser-temp/vmchooser/scanner.sh
new file mode 100755
index 00000000..dcb94c68
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/vmchooser/scanner.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+
+echo -e "scanserver\tscanner1hp\tThis is a test Scanner"
diff --git a/remote/modules/vmchooser/vmchooser-temp/vmchooser/smb.conf b/remote/modules/vmchooser/vmchooser-temp/vmchooser/smb.conf
new file mode 100755
index 00000000..ec757ce4
--- /dev/null
+++ b/remote/modules/vmchooser/vmchooser-temp/vmchooser/smb.conf
@@ -0,0 +1,25 @@
+# basic samba configuration file for OpenSLX host-internal networking
+[global]
+ workgroup = OPENSLX
+ netbios name = HOMESERVER
+ security = SHARE
+ server string = Home and Print Provider
+ bind interfaces only = Yes
+ interfaces = NWIF
+ pid directory = PIDDIR
+
+[userhome]
+ comment = Home Directory of USER
+ path = /home/USER
+ create mask = 0700
+ guest ok = No
+ read only = No
+
+[scratch]
+ comment = Host System Temp Folder
+ path = /tmp
+ create mask = 0700
+ guest ok = Yes
+ read only = No
+ browseable = Yes
+
diff --git a/remote/modules/vmchooser/vmchooser.conf b/remote/modules/vmchooser/vmchooser.conf
index ec1ceb86..4054d59b 100644
--- a/remote/modules/vmchooser/vmchooser.conf
+++ b/remote/modules/vmchooser/vmchooser.conf
@@ -1,5 +1,5 @@
GIT=git://git.openslx.org/openslx/tools/vmchooser.git
REQUIRED_DEPENDENCIES=" cmake
libqt4-dev"
-TARGET_DIR="openslx"
+TARGET_DIR="opt/openslx/vmchooser/bin"
REQUIRED_BINARIES="vmchooser"
diff --git a/remote/targets/stage32-vmchooser/busybox b/remote/targets/stage32-vmchooser/busybox
new file mode 120000
index 00000000..4f45cedf
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/busybox
@@ -0,0 +1 @@
+../../modules/busybox \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/consolekit b/remote/targets/stage32-vmchooser/consolekit
new file mode 120000
index 00000000..261968c7
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/consolekit
@@ -0,0 +1 @@
+../../modules/consolekit \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/dbus b/remote/targets/stage32-vmchooser/dbus
new file mode 120000
index 00000000..dd148715
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/dbus
@@ -0,0 +1 @@
+../../modules/dbus \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/debug b/remote/targets/stage32-vmchooser/debug
new file mode 120000
index 00000000..c05237d6
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/debug
@@ -0,0 +1 @@
+../../modules/debug \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/kdm b/remote/targets/stage32-vmchooser/kdm
new file mode 120000
index 00000000..727ed5b5
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/kdm
@@ -0,0 +1 @@
+../../modules/kdm \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/kernel b/remote/targets/stage32-vmchooser/kernel
new file mode 120000
index 00000000..044f086d
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/kernel
@@ -0,0 +1 @@
+../../modules/kernel \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/pam b/remote/targets/stage32-vmchooser/pam
new file mode 120000
index 00000000..588acdbf
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/pam
@@ -0,0 +1 @@
+../../modules/pam \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/plymouth b/remote/targets/stage32-vmchooser/plymouth
new file mode 120000
index 00000000..66a16832
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/plymouth
@@ -0,0 +1 @@
+../../modules/plymouth \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/policykit b/remote/targets/stage32-vmchooser/policykit
new file mode 120000
index 00000000..39b77c7f
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/policykit
@@ -0,0 +1 @@
+../../modules/policykit \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/rootfs-stage32 b/remote/targets/stage32-vmchooser/rootfs-stage32
new file mode 120000
index 00000000..96dcbb86
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/rootfs-stage32
@@ -0,0 +1 @@
+../../rootfs/rootfs-stage32 \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/rsyslogd b/remote/targets/stage32-vmchooser/rsyslogd
new file mode 120000
index 00000000..339d02f8
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/rsyslogd
@@ -0,0 +1 @@
+../../modules/rsyslogd \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/sshd b/remote/targets/stage32-vmchooser/sshd
new file mode 120000
index 00000000..56b4e4b5
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/sshd
@@ -0,0 +1 @@
+../../modules/sshd \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/systemd b/remote/targets/stage32-vmchooser/systemd
new file mode 120000
index 00000000..2dc58bd3
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/systemd
@@ -0,0 +1 @@
+../../modules/systemd \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/vmchooser b/remote/targets/stage32-vmchooser/vmchooser
new file mode 120000
index 00000000..4d883e71
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/vmchooser
@@ -0,0 +1 @@
+../../modules/vmchooser/ \ No newline at end of file
diff --git a/remote/targets/stage32-vmchooser/xorg b/remote/targets/stage32-vmchooser/xorg
new file mode 120000
index 00000000..a9494860
--- /dev/null
+++ b/remote/targets/stage32-vmchooser/xorg
@@ -0,0 +1 @@
+../../modules/xorg \ No newline at end of file