summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDirk2013-12-13 20:52:00 +0100
committerDirk2013-12-13 20:52:00 +0100
commitefd86cc8b5b138e4076bf1657ea888dc52e62901 (patch)
treedde241d9c0041f10584415e97c6b6f326e03cd3f
parentMerge branch 'master' of git.openslx.org:openslx-ng/tm-scripts (diff)
downloadtm-scripts-efd86cc8b5b138e4076bf1657ea888dc52e62901.tar.gz
tm-scripts-efd86cc8b5b138e4076bf1657ea888dc52e62901.tar.xz
tm-scripts-efd86cc8b5b138e4076bf1657ea888dc52e62901.zip
Heavily reworked the networking for the various virtual machines:
There will be three types of network interfaces for virtual machines available all will be configured for every type of virtualization tool a) br0 is the direct host bridge into the local LAN (br0 already exists) vmnet0 for VMware vboxnet0 for VirtualBox kvmnet0* for Qemu/KVM b) nat1 is an internal bridge which "NATes" into the local LAN (with DHCP) vmnet1 for VMware vboxnet1 for VirtualBox kvmnet1* for Qemu/KVM c) vsw2 is an internal host bridge to connect software defined LANs to vmnet2 for VMware vboxnet2 for VirtualBox kvmnet2* for Qemu/KVM
-rw-r--r--remote/modules/qemukvm/data/opt/openslx/scripts/systemd-qemukvm_env27
-rw-r--r--remote/modules/qemukvm/data/opt/openslx/vmchooser/qemukvm/run-virt.include245
-rwxr-xr-xremote/modules/vbox/data/opt/openslx/etc/virtualbox/run-virt.include642
-rwxr-xr-xremote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env291
-rw-r--r--remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/empty-diff.vdi.gzbin0 -> 285 bytes
-rw-r--r--remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/machine.include124
-rwxr-xr-xremote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/run-virt.include430
-rw-r--r--remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/rwimg.vdi.gzbin0 -> 268 bytes
-rw-r--r--remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/virtualbox.conf (renamed from remote/modules/vbox/data/opt/openslx/etc/virtualbox/virtualbox.conf)0
-rw-r--r--remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/virtualbox.include57
-rwxr-xr-xremote/modules/vmchooser/data/opt/openslx/scripts/systemd-vmchooser_env52
-rwxr-xr-xremote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt10
-rw-r--r--remote/modules/vmchooser/data/opt/openslx/vmchooser/config/smb.conf21
-rw-r--r--remote/modules/vmchooser/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf (renamed from remote/modules/vmchooser/data/opt/openslx/vmchooser/config/udhcpd.conf)4
-rwxr-xr-xremote/modules/vmware/data/opt/openslx/scripts/systemd-vmware_env227
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include39
16 files changed, 1044 insertions, 1125 deletions
diff --git a/remote/modules/qemukvm/data/opt/openslx/scripts/systemd-qemukvm_env b/remote/modules/qemukvm/data/opt/openslx/scripts/systemd-qemukvm_env
new file mode 100644
index 00000000..3173ca45
--- /dev/null
+++ b/remote/modules/qemukvm/data/opt/openslx/scripts/systemd-qemukvm_env
@@ -0,0 +1,27 @@
+#!/bin/ash
+# -----------------------------------------------------------------------------
+# Copyright (c) 2013 - 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
+# -----------------------------------------------------------------------------
+# systemd-qemukvm_env
+# - This is the preparation script for the configuration of Linux Qemu/KVM.
+################################################################################
+
+# check for Linux kvm modules (if required at all)
+# lsmod |grep kvm || slxlog "qemukvm-modules" "Cannot find any kvm kernel module(s)"
+
+cat >> /etc/sudoers << EOF
+# allow to start and stop kvm services / load-/unload kvm modules
+ALL ALL=NOPASSWD: /opt/openslx/sbin/tunctl -t kvmnet*
+ALL ALL=NOPASSWD: /opt/openslx/sbin/tunctl -d kvmnet*
+ALL ALL=NOPASSWD: /opt/openslx/usr/sbin/brctl addif br0 kvmnet*
+ALL ALL=NOPASSWD: /opt/openslx/bin/ip link set dev kvmnet* *
+EOF
+
diff --git a/remote/modules/qemukvm/data/opt/openslx/vmchooser/qemukvm/run-virt.include b/remote/modules/qemukvm/data/opt/openslx/vmchooser/qemukvm/run-virt.include
new file mode 100644
index 00000000..29360159
--- /dev/null
+++ b/remote/modules/qemukvm/data/opt/openslx/vmchooser/qemukvm/run-virt.include
@@ -0,0 +1,245 @@
+# -----------------------------------------------------------------------------
+# Copyright (c) 2009..2013 - 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 QEMU/Linux KVM virtual machine on an
+# OpenSLX client via the run-virt.sh or run-vmgrid.sh
+################################################################################
+
+################################################################################
+### Script functions
+################################################################################
+
+setup_if ()
+{
+ kvmdev=$1
+ hostdev=$2
+ sudo /opt/openslx/rootfs/sbin/tunctl -t ${kvmdev} -u ${USER} >/dev/null 2>&1
+ sudo /opt/openslx/rootfs/bin/ip link set dev ${kvmdev} up
+ sudo /opt/openslx/rootfs/usr/sbin/brctl addif ${hostdev} ${kvmdev}
+}
+
+################################################################################
+### Declaration of default variables
+################################################################################
+
+VMCHOOSERQK="/opt/openslx/vmchooser/${self}"
+# create TMPDIR for all users
+mkdir -m 1777 /tmp/${self} 2>/dev/null
+# TMPDIR
+QKTMPDIR="/tmp/${self}/${USER}/${VM_ID}"
+# define dirs and files which can be removed after exit, be carefull!
+RMDIRS="${QKTMPDIR}"
+rm -rf ${RMDIRS} 2>/dev/null
+mkdir -m 1777 -p ${QKTMPDIR} 2>/dev/null
+# vmpath is the path to the vm, here an image (img|qcow*|vmdk)
+diskfile=${vmpath}
+
+# check the file type
+if echo ${imgname} | grep -iE "img|qcow|vmdk" >/dev/null 2>&1; then
+ imgtype=$(echo ${imgname##*.} | tr "[a-z]" "[A-Z]")
+else
+ writelog "${imgname} is not a valid image type (img|qcow*|vmdk), exiting!"
+ exit 1
+fi
+
+# set the emulator/virtualization options for various operating systems
+sound="es1370"
+case "${vmostype}" in
+ beos*)
+ VIRTCMDOPTS="qemu-system-i386 -machine accel=tcg"
+ sound="sb16"
+ if [ "${totalmem}" -ge "1000" ]; then
+ forcemem=512
+ else
+ forcemem=256
+ fi
+ ;;
+ win3*|win*3*|Win*3*)
+ VIRTCMDOPTS="qemu-system-i386 -machine accel=tcg"
+ sound="sb16"
+ forcemem=32
+ ;;
+ win95*|Win*95)
+ VIRTCMDOPTS="qemu-system-i386 -machine accel=tcg"
+ forcemem=96
+ ;;
+ win98)
+ VIRTCMDOPTS="qemu-system-i386 -machine accel=tcg"
+ forcemem=256
+ ;;
+ winme*|windowsme*)
+ VIRTCMDOPTS="qemu-system-i386 -machine accel=tcg"
+ sound="ac97"
+ forcemem=384
+ ;;
+ winxp*64|windowsxp*64)
+ VIRTCMDOPTS="qemu-system-x86_64 -machine accel=kvm"
+ sound="ac97"
+ ;;
+esac
+
+# hot keys ALT+CTRL+SHIFT (does not work properly!?)
+#VIRTCMDOPTS="${VIRTCMDOPTS} -alt-grab"
+
+# display name, remove blanks because of cmdline problems
+displayname=$(echo ${displayname} | sed -e "s, ,-,g;s,(,[,g;s,),],g")
+VIRTCMDOPTS="${VIRTCMDOPTS} -name ${displayname}"
+
+writelog "Directories:"
+writelog "\tTMPDIR:\t\t\t$QKTMPDIR"
+writelog "Diskimage:"
+writelog "\tDisk type:\t\t$imgtype"
+writelog "\tDisk file:\t\t$diskfile"
+
+################################################################################
+### Hardware checks
+################################################################################
+
+# 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"
+# #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
+ memhost=$(expr ${totalmem} - ${mem})
+ else
+ memhost=$(expr ${totalmem} - ${mem} - ${mem})
+ fi
+ # static first
+ permem=50
+ mem=$(expr ${totalmem} / 100 \* ${permem})
+ if [ "${mem}" -lt "256" ] || [ "${memhost}" -lt "256" ]; then
+ writelog "Memory out of range: ${mem} MB (guest) / ${memhost} MB (host)!"
+ writelog "Min. 256 MB for host and guest!"
+ exit 1
+ fi
+fi
+
+VIRTCMDOPTS="${VIRTCMDOPTS} -m ${mem}"
+
+# network adaptor alternatives: rtl8139, pcnet, e1000
+network_card=${network_card:=pcnet}
+VIRTCMDOPTS="${VIRTCMDOPTS} -net nic,macaddr=${macaddr},model=${network_card}"
+
+# define network kind and configure the interfaces
+case "${network_kind}" in
+ bridge*)
+ VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=kvmnet0${VM_ID}"
+ setup_if kvmnet0${VM_ID} br0
+ POSTRUN="sudo /opt/openslx/rootfs/sbin/tunctl -d kvmnet0${VM_ID}"
+ ;;
+ nat)
+ VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=kvmnet1${VM_ID}"
+ setup_if kvmnet1${VM_ID} nat1
+ POSTRUN="sudo /opt/openslx/rootfs/sbin/tunctl -d kvmnet1${VM_ID}"
+ ;;
+ host*)
+ VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=kvmnet2${VM_ID}"
+ setup_if kvmnet2${VM_ID} vsw2
+ POSTRUN="sudo /opt/openslx/rootfs/sbin/tunctl -d kvmnet2${VM_ID}"
+ ;;
+ *)
+ network_kind="user"
+ VIRTCMDOPTS="${VIRTCMDOPTS} -net user"
+ ;;
+esac
+
+# translate boot, use if set else set to HardDisk
+if [ -n "${boot}" ]; then
+ case ${boot} in
+ n*) # usually support for a,c,d,n, stands for Floppy, HD, CD-ROM, Network
+ boot="n"
+ # TODO: does not work yet, can be removed if tap1 solution better
+ if [ "${network_kind}" = "user" ] && [ -n "${virtualbox_tftpdir}" ]; then
+ VIRTCMDOPTS="${VIRTCMDOPTS},tftp=${virtualbox_tftpdir}"
+ fi
+ ;;
+ # later maybe c|disk|hd*|sd*) for HD and d|cd*) for CD-ROM
+ *)
+ boot="c"
+ ;;
+ esac
+else
+ boot="c"
+fi
+
+# external GUI port
+vncport="590${VM_ID}"
+
+# ide is expected default, test for the virtual disk image type should
+# be done while creating the runscripts ...
+ide="TRUE"
+hddrv="ide"
+
+# special feature for real and virtual floppy disks
+[ -n "${floppy_0}" ] && VIRTCMDOPTS="${VIRTCMDOPTS} -fda ${floppy_0}"
+VIRTCMDOPTS="${VIRTCMDOPTS} -fdb /opt/openslx/vmchooser/data/loopimg/fd.img"
+
+# add optical drive if available
+[ -n "${cdrom_0}" ] && VIRTCMDOPTS="${VIRTCMDOPTS} -cdrom ${cdrom_0}"
+
+# audio
+VIRTCMDOPTS="${VIRTCMDOPTS} -soundhw ${sound}"
+
+# serial
+[ "x${serial}" == "xttyS0" ] && VIRTCMDOPTS="${VIRTCMDOPTS} -serial /dev/ttyS0"
+
+writelog "Virtual Hardware:"
+writelog "\tGuest RAM:\t\t${mem} MB"
+# echo nur wenn memhost gesetzt
+[ -n "${memhost}" ] && writelog "\tHost RAM:\t\t${memhost} MB"
+writelog "\tMAC address:\t\t$macaddr"
+writelog "\tNetwork card:\t\t${network_card}"
+writelog "\tNetwork kind:\t\t${network_kind}"
+writelog "\tCD-ROM1:\t${cdrom0}"
+#writelog "\tCD-ROM2:\t${cdrom1}"
+writelog "\tFloppy_A:\t${floppy_0}"
+writelog "\tFloppy_B:\t/opt/openslx/vmchooser/data/loopimg/fd.img"
+#writelog "\tShared Folders 'home':\t/home/${USER}"
+
+################################################################################
+### finally set env for run-virt.sh
+################################################################################
+
+# using snapshots
+VIRTCMDOPTS="${VIRTCMDOPTS} -snapshot"
+
+# TODO: boot als var, -boot n, tftp...
+VIRTCMDOPTS="${VIRTCMDOPTS} -boot c"
+
+# set headless mode
+# define first, you do not want VIRTCMDOPTS from graphical start
+VIRTCMDHL=${VIRTCMD}
+VIRTCMDOPTSHL="${VIRTCMDOPTS} -nographic ${diskfile}"
+
+# graphical start
+# vga std/cirrus/vmware?
+#VIRTCMDOPTS="${VIRTCMDOPTS} -vga std -full-screen ${diskfile}"
+VIRTCMDOPTS="${VIRTCMDOPTS} ${diskfile}"
diff --git a/remote/modules/vbox/data/opt/openslx/etc/virtualbox/run-virt.include b/remote/modules/vbox/data/opt/openslx/etc/virtualbox/run-virt.include
deleted file mode 100755
index b755133f..00000000
--- a/remote/modules/vbox/data/opt/openslx/etc/virtualbox/run-virt.include
+++ /dev/null
@@ -1,642 +0,0 @@
-# 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
-################################################################################
-
-function clean_string ()
-{
- if [ "$#" -ge 1 ]; then
- echo "$@" | tr '[A-Z]' '[a-z]' | tr -d '\t _./'
- else
- cat - | tr '[A-Z]' '[a-z]' | tr -d '\t _./'
- fi
-}
-
-vmostype=$(clean_string "$vmostype")
-
-runvmwareconfheader ()
-{
- echo "# This configuration file was generated by $0" > "$conffile"
-
- MAXMEM="9999999"
- MAXCORES="256"
-
- # check for the ostype
- # 1) memory limits
- case "$vmostype" in
- win31*|windows31*)
- MAXMEM="32"
- vmostype="win31"
- ;;
- winnt*|windowsnt*)
- MAXMEM="1000"
- vmostype="winnt"
- ;;
- win95*|windows95*)
- MAXMEM="96"
- vmostype="win95"
- ;;
- win98*|windows98*)
- MAXMEM="384"
- vmostype="win98"
- ;;
- winme*|windowsme*)
- MAXMEM="384"
- vmostype="winme"
- ;;
- win2000|windows2000|win2000pro*)
- MAXMEM="4000"
- vmostype="win2000pro"
- ;;
- win2000srv*|windows2000srv*|win2000serv*|windows2000serv*)
- MAXMEM="4000"
- vmostype="win2000serv"
- ;;
- win2000adv*|windows2000adv*|win2000dat*|windows2000dat*)
- MAXMEM="8000"
- vmostype="win2000advserv"
- ;;
- winnet*64|win*2003*64|windowsnet*64)
- MAXMEM="8000"
- vmostype="winnetstandard-64"
- ;;
- winnet*|win*2003*|windowsnet*)
- MAXMEM="4000"
- vmostype="winnetstandard"
- ;;
- winxphome*|windowsxphome*)
- MAXMEM="4000"
- vmostype="winxphome"
- ;;
- winxp*64|windowsxp*64)
- MAXMEM="8000"
- vmostype="winxppro-64"
- ;;
- winxp*|windowsxp*)
- MAXMEM="4000"
- vmostype="winxppro"
- ;;
- winvista*64|windowsvista*64)
- MAXMEM="16000"
- vmostype="winvista-64"
- ;;
- winvista*|windowsvista*)
- MAXMEM="8000"
- vmostype="winvista"
- ;;
- win7*64|windows7*64)
- MAXMEM="32000"
- vmostype="windows7-64"
- ;;
- win7*|windows7*)
- MAXMEM="8000"
- vmostype="windows7"
- ;;
- win*64)
- MAXMEM="16000"
- ;;
- win*)
- MAXMEM="8000"
- ;;
- dos|msdos*|ms-dos*)
- MAXMEM="128"
- vmostype="dos"
- ;;
- *64)
- MAXMEM="123456"
- ;;
- *)
- MAXMEM="8000"
- ;;
- esac
-
- # 2) other hardware + capabilities
- shfolders="FALSE"
- case "$vmostype" in
- win31)
- MAXCORES="1"
- sound="sb16"
- ;;
- winnt)
- MAXCORES="2"
- sound="sb16"
- ;;
- win95|win98|winme)
- MAXCORES="1"
- ;;
- win2000pro) # Don't know if Win 2000 supports shared folders, disabled to be safe
- MAXCORES="2"
- ;;
- win2000serv)
- MAXCORES="4"
- ;;
- win2000advserv)
- MAXCORES="8"
- ;;
- winxphome)
- MAXCORES="1"
- shfolders="TRUE"
- ;;
- winxp*|winvista*|windows7*)
- shfolders="TRUE"
- ;;
- winnet*)
- shfolders="TRUE"
- ;;
- linux*|ubuntu*|suse*|debian*)
- shfolders="TRUE"
- ;;
- macos*64)
- MAXCORES="2"
- vmostype="freebsd-64"
- ;;
- macos*)
- MAXCORES="1"
- vmostype="freebsd"
- ;;
- beos*)
- vmostype="other"
- ;;
- # Unknown guestOS setting in .xml - use conservative defaults
- *64)
- vmostype="other-64"
- ;;
- *)
- vmostype="other"
- ;;
- esac
-
- svga_autodetect="TRUE"
-
- real_core_count="$cpu_cores"
- [ "$cpu_cores" -gt "$MAXCORES" ] && cpu_cores="$MAXCORES"
- # It currently makes no sense to set the virtual number of cores
- # to a different value than the virtual number of cores per virtual CPU.
- cores_per_socket="$cpu_cores"
-
- if [ "x$shfolders" != "xFALSE" ]; then
- ENABLE_SHARE='sharedFolder.option = "alwaysEnabled"'
- else
- ENABLE_SHARE=''
- fi
-
- [ "$mem" -ge "$MAXMEM" ] && mem="$MAXMEM"
- [ "$hwver" -lt "7" -a "$mem" -gt "3500" ] && mem="3500"
-
- cap3d="WHAT IS THIS VAR USED FOR?" # helper var for loging output
-
- cat >> "$conffile" <<HEREEND
-.encoding = "UTF-8"
-config.version = "8"
-
-# general hardware (ehci, 3d accel)
-ehci.present = "TRUE"
-$FORCE3D
-mks.enable3d = "$enable3d"
-
-monitor.virtual_mmu = "automatic"
-monitor.virtual_exec = "automatic"
-floppy1.clientDevice = "FALSE"
-floppy1.readonly = "TRUE"
-
-# id
-virtualHW.version = "$hwver"
-displayName = "$displayname"
-guestOS = "$vmostype"
-
-# CPU/MEM
-numvcpus = "$cpu_cores"
-cpuid.coresPerSocket = "$cores_per_socket"
-maxvcpus = "$real_core_count"
-memsize = "$mem"
-MemAllowAutoScaleDown = "FALSE"
-MemTrimRate = "-1"
-
-# ide-disks
-ide0:0.present = "$ide"
-ide0:0.fileName = "$vm_diskfile"
-## Edited for persistent mode.
-ide0:0.mode = "independent-${diskmode}"
-##
-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 = "$vm_diskfile"
-scsi0.virtualDev = "$hddrv"
-## Edited for persistent mode.
-scsi0:0.mode = "independent-${diskmode}"$stateFileConfiguration
-##
-
-# 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:$macaddrsuffix"
-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
-$ENABLE_SHARE
-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
-HEREEND
-
- # set the appropriate permissions for the vmware config file
- chmod u+rwx ${conffile} >/dev/null 2>&1
-}
-
-preferencesheader ()
-{
- cat > "$vmhome/preferences" <<HEREEND
-.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
-
-HEREEND
-
- # different eula parameters from Workstation 9+/ Player 5+
- case "$vmversion" in
- 3.*|4.*|7.*|8.*)
- cat >> "$vmhome/preferences" <<HEREEND
-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"
-HEREEND
- ;;
- 5.*|9.*)
- # code
- cat >> "$vmhome/preferences" <<HEREEND
-pref.eula.count = "2"
-pref.eula0.product = "VMware Player"
-pref.eula0.build = "$vmbuild"
-pref.eula1.product = "VMware Workstation"
-pref.eula1.build = "$vmbuild"
-HEREEND
- ;;
- esac
-
-}
-
-
-# declaration of default variables
-################################################################################
-
-
-[ "$mem" -gt 3800 -a "$(uname -m)" != "x86_64" ] && mem=3800
-
-# 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)
-else
- VM_ID=$[ $$ % 100 ]
-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
-. /opt/openslx/etc/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 "$(clean_string "$enable3d")" in
- true|yes)
- enable3d="TRUE"
- ;;
- *)
- enable3d="FALSE"
- ;;
-esac
-
-# check for whitelisted HW-3D
-. /opt/openslx/config
-FORCE3D=""
-if [ -n "$SLX_VMWARE_3D" ]; then
- FORCE3D='mks.gl.allowBlacklistedDrivers = "TRUE"'
-fi
-
-# serial/parallel port defined (e.g. "ttyS0, lp0" or "autodetect")
-case "$serial" in
- tty*)
- if [ -e "/dev/$serial" ]; then
- serialdev="serial0.filename = \"/dev/${serial}\""
- serial="TRUE"
- else
- serialdev="# no serial port configured"
- serial="FALSE"
- fi
- ;;
- auto*)
- serialdev="serial0.autodetect = \"TRUE\""
- serial="TRUE"
- ;;
- *)
- serialdev="# no serial port configured"
- serial="FALSE"
- ;;
-esac
-
-case "$parallel" in
- lp*|parport*)
- if [ -e "/dev/$parallel" ]; then
- paraldev="parallel0.filename = \"/dev/${parallel}\""
- paralbidi="TRUE"
- parallel="TRUE"
- else
- paraldev="# no parallel port configured"
- paralbidi="FALSE"
- parallel="FALSE"
- fi
- ;;
- auto*)
- paraldev="parallel0.autodetect = \"TRUE\""
- paralbidi="TRUE"
- parallel="TRUE"
- ;;
- *)
- paraldev="# no parallel port configured"
- paralbidi="FALSE"
- parallel="FALSE"
- ;;
-esac
-
-# check if ide/scsi and hwver of image
-# read only the first 30 lines to be sure
-imghead=$(head -n 30 "${diskfile}")
-## Added to handle persistent snapshots.
-if [[ "$originalVMDKFilePath" ]]; then
- echo "Select \"${originalVMDKFilePath}\" as information base for \"${diskfile}\"."
- imghead=$(head -n 30 "$originalVMDKFilePath") && \
- # Support suspend mode.
- stateFilePath="$(readlink -f "$(dirname "$diskfile")/"*.vmss)" && \
- if [ -f "$stateFilePath" ]; then
- echo "Found state file \"$stateFilePath\"." && \
- stateFileConfiguration="
-checkpoint.vmState = \"$stateFilePath\""
- fi
- POSTRUN="stateFilePath=\"\$(readlink -f \"${confdir}/\"*.vmss)\" && memoryFilePath=\"\$(readlink -f \"${confdir}/\"*.vmem)\" && [ -f \"\$stateFilePath\" ] && echo \"Saving state and memory file \\\"\$stateFilePath\\\" and \\\"\$memoryFilePath\\\".\" && mv -f \"\$stateFilePath\" \"$(dirname "$diskfile")/\" && mv -f \"\$memoryFilePath\" \"$(dirname "$diskfile")/\""
-fi
-##
-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...
-cp "/opt/openslx/etc/vmware/nvram" "$confdir/nvram" 2>/dev/null
-
-
-# logging and stdout
-################################################################################
-
-# log script information
-writelog "# File created by $0 (VMversion ${vmversion})\n# on $(date)\n"
-## Edited for persistent mode.
-writelog "Starting with ${diskmode} 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/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
-
-# For debugging
-cp "$conffile" "/tmp/vmware-last-config"
-
-# using the modified version of the wrapper script
-VIRTCMD="/opt/openslx/bin/vmplayer"
-VIRTCMDOPTS="${vmopt} ${conffile}"
-RMDIRS="${redodir} ${conffile}"
diff --git a/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env b/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
index 8bdfc515..a69719ac 100755
--- a/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
+++ b/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/ash
# -----------------------------------------------------------------------------
# Copyright (c) 2007..2013 - RZ Uni FR
# Copyright (c) 2007..2013 - OpenSLX GmbH
@@ -19,271 +19,28 @@ export PATH="$PATH":/opt/openslx/bin:/opt/openslx/sbin:/opt/openslx/usr/bin:/opt
VBOX_CONF_DIR=/opt/openslx/etc/vbox
VBOXMANAGE=$(which vboxmanage)
-
-for wait in 1 1 2 2 3 end; do
- grep '^SLX_DNS' /opt/openslx/config > /dev/null && break
- [ "$wait" == "end" ] && echo "No DNS config found, using google dns" && break
- echo "Waiting for DNS config.."
- sleep "$wait"
+# load required Vbox modules
+for module in vboxdrv.ko vboxnetadp.ko vboxnetflt.ko vboxpci.ko ; do
+ insmod /lib/modules/vbox/${module} || slxlog "vbox-systemd" "Loading of ${module} failed."
done
-#source config file
-. /opt/openslx/config
-# . ${VMWARE_CONF_DIR}/vmware.conf
-. ${VBOX_CONF_DIR}/vbox.conf
-
-vm_dhcpd() {
-
- #from plugins/vmware/init-hooks/60-have-servconfig/vm-dhcpd.sh
-
- # read the DNS configuration and if available set WPAD configuration
- [ -z "${SLX_DNS}" ] && SLX_DNS="8.8.8.8"
- [ -n "${wpad}" ] && wpad_config="option wpad ${wpad}"
-
- # configuring dhcpd stub for virtual networks
-cat > ${VMWARE_CONF_DIR}/udhcpd.conf << EOF
-# general udhcpd configuration file for virtual machines written by $0
-
-# 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 ${SLX_DNS}
-option subnet 255.255.255.0
-option router CNETWORK.1
-option wins CNETWORK.10
-option domain virtual.site ${domain_name}
-${wpad_config}
-
-# 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 #wpad
-EOF
-
-}
-
-setup_network() {
- #from plugins/vmware/XX_vmware.sh
-
- mkdir -p /tmp/virt/vmware -m 1777
- mkdir -p /dev/shm/vmware -m 1777
- mkdir -p /var/run/vmware -m 1777
- mkdir -p /etc/vmware/udhcpd
-
- # variable might contain ",NAT" which is to be taken off
- if [ -n "$vmnet1" ] ; then
- local vmip=${vmnet1%/*} # x.x.x.x/yy => 'x.x.x.x'">
- local vmsub=$(echo $vmip |sed 's,\(.*\)\..*,\1,') # x.x.x.x => x.x.x
- # setting up the udhcpd configuration
- sed -e "s,NWIF,vmnet1,;s,/misc/,/vmware/," \
- -e "s,CNETWORK,$vmsub,;s,PIDFILE,/var/run/vmware/udhcpd-vmnet1.pid," \
- -e "s,LEASEFILE,/var/run/vmware/udhcpd-vmnet1.leases," \
- ${VMWARE_CONF_DIR}/udhcpd.conf >/etc/vmware/udhcpd/udhcpd-vmnet1.conf
- # setting the base samba configuration if available
- if [ -f /etc/openslx/vmchooser/smb.conf \
- -a -f /usr/sbin/smbd ] ; then
- sed -e "s#NWIF#vmnet1,vmnet8#;s,PIDDIR,/var/run/vmware," \
- ${VMCHOOSER_CONF_DIR}/smb.conf \
- >/etc/vmware/smb.conf
- fi
- fi
-
- # vmware nat interface configuration
- if [ -n "$vmnet8" ] ; then
- local vmnet8ip=${vmnet8%/*}
- local vmpx=${vmnet8#*/}
- local vmsub=$(echo $vmnet8ip |sed 's,\(.*\)\..*,\1,') # x.x.x.x => x.x.x">
- # vmip is user for vmnet8 device
- # vmnet is user for config files nat.conf/dhcp
- local vmip="${vmsub}.1"
- local vmnet="${vmsub}.2"
- # setting up the udhcpd configuration
- sed -e "s,NWIF,vmnet8,;s,/misc/,/vmware/," \
- -e "s,CNETWORK,$vmsub,;s,PIDFILE,/var/run/vmware/udhcpd-vmnet8.pid," \
- -e "s,LEASEFILE,/var/run/vmware/udhcpd-vmnet8.leases," \
- ${VMWARE_CONF_DIR}/udhcpd.conf >/etc/vmware/udhcpd/udhcpd-vmnet8.conf
- # might be not needed any more ...
- echo -e "# Linux NAT configuration file" \
- > /etc/vmware/nat.conf
- echo -e "[host]" \
- >> /etc/vmware/nat.conf
- echo -e "ip = $vmnet/$vmpx" \
- >> /etc/vmware/nat.conf
- echo -e "device = /dev/vmnet8" \
- >> /etc/vmware/nat.conf
- echo -e "activeFTP = 1" \
- >> /etc/vmware/nat.conf
- echo -e "[udp]" \
- >> /etc/vmware/nat.conf
- echo -e "timeout = 60" \
- >> /etc/vmware/nat.conf
- echo -e "[incomingtcp]" \
- >> /etc/vmware/nat.conf
- echo -e "[incomingudp]" \
- >> /etc/vmware/nat.conf
- echo "00:50:56:F1:30:50" > /etc/vmware/vmnet-natd-8.mac
- fi
-
- ############################################################################
- # vmware stuff second part: setting up the environment
- # make udhcpd more silent
- touch /var/run/vmware/udhcpd-vmnet1.leases \
- /var/run/vmware/udhcpd-vmnet8.leases
-
- # create the needed devices which effects all vmware options
- # they are not created automatically via module load
- for i in "/dev/vmnet0 c 119 0" "/dev/vmnet1 c 119 1" \
- "/dev/vmnet8 c 119 8" "/dev/vmmon c 10 165"; do
- mknod $i
- done
-
- chmod 0700 /dev/vmnet*
-}
-
-adapt_tmpfs() {
- # from plugins/vmware/init-hooks/80-after-plugins/adapt-tmpfs.sh
- # Init hook to adapt the tmpfs size for VMware/Player
- # (should be kept identical to the files of virtualbox plugin)
- #############################################################################
-
- # adapt tmpfs size (overbook)
- case $(grep tmpfs /proc/mounts) in
- */tmp*)
- mount -o remount,size=175% /tmp
- ;;
- */uniontmp*)
- mount -o remount,size=175% /uniontmp
- ;;
- esac
-}
-
-#from /etc/init.d/vmware-env
-
-#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/vbox/vboxdrv.ko
- insmod /lib/modules/vbox/vboxnetadp.ko
- insmod /lib/modules/vbox/vboxnetflt.ko
- insmod /lib/modules/vbox/vboxpci.ko
-}
-
-unload_modules () {
- rmmod vboxpci vboxnetflt vboxnetadp vboxdrv
-}
-
-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
- echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null
- fi
- /opt/openslx/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
- 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 # or logfile
- /opt/openslx/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
- # vm_dhcpd
- # setup_network
- # adapt_tmpfs
- # 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
- # 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
- echo "Listing loaded kernel modules:"
- lsmod | grep vbox
- echo "Running VMs:"
- $VBOXMANAGE list vms
- ;;
- *)
- #usage: defines usage function for initscript
- ## print out usage
- echo "Usage: $0 {start, stop, restart, status}" >&2
- exit 1
- ;;
-esac
-
+# unload modules if proper systemd shutdown is provided
+#unload_modules () {
+# rmmod vboxpci vboxnetflt vboxnetadp vboxdrv
+#}
+
+mknod -m 0660 /dev/vboxdrv c 10 59
+chown root:vboxusers /dev/vboxdrv
+
+
+# pretty dumb you can just create host-only interfaces, but not assign a specific
+# name/number
+vboxmanage hostonlyif create
+ip link set dev vboxnet0 up
+brctl addif br0 vboxnet0
+vboxmanage hostonlyif create
+ip link set dev vboxnet1 up
+brctl addif nat1 vboxnet1
+vboxmanage hostonlyif create
+ip link set dev vboxnet2 up
+brctl addif vsw2 vboxnet2
diff --git a/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/empty-diff.vdi.gz b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/empty-diff.vdi.gz
new file mode 100644
index 00000000..c6abbd57
--- /dev/null
+++ b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/empty-diff.vdi.gz
Binary files differ
diff --git a/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/machine.include b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/machine.include
new file mode 100644
index 00000000..d1c77f02
--- /dev/null
+++ b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/machine.include
@@ -0,0 +1,124 @@
+# -----------------------------------------------------------------------------
+# 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="${vdemacaddr}" cable="true" speed="0" type="${vb_network_card}">
+ <GenericInterface driver="VDE">
+ <Properties name="network" value="/tmp/vde-switch"/>
+ </GenericInterface>
+ </Adapter>
+ <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/vbox/data/opt/openslx/vmchooser/virtualbox/run-virt.include b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/run-virt.include
new file mode 100755
index 00000000..1a87e01b
--- /dev/null
+++ b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/run-virt.include
@@ -0,0 +1,430 @@
+# -----------------------------------------------------------------------------
+# Copyright (c) 2009..2011 - RZ Uni Freiburg
+# Copyright (c) 2009..2013 - 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
+# - component for virtualbox of the vmchooser plugin vmchooser-run_virt
+################################################################################
+
+################################################################################
+### declaration of default variables
+################################################################################
+
+VMCHOOSERVBOX="/opt/openslx/vmchooser/${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 (Am79C970A, Am79C973, 82540EM)
+vb_network_card="82540EM"
+# 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 /opt/openslx/vmchooser/virtualbox/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|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|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"
+ vb_network_card="Am79C973"
+ vmostype="Windows31"
+ mem="32"
+ vram="16"
+ cpu_cores=1
+ enablevt="false"
+ ;;
+ win95*)
+ vmostype="Windows95"
+ guestaudio="SB16"
+ vb_network_card="Am79C973"
+ mem="92"
+ vram="32"
+ cpu_cores=1
+ enablevt="false"
+ ;;
+ win98*)
+ vmostype="Windows98"
+ guestaudio="SB16"
+ vb_network_card="Am79C973"
+ mem="256"
+ vram="64"
+ cpu_cores=1
+ ;;
+ winme*)
+ vmostype="WindowsMe"
+ guestaudio="AC97"
+ vb_network_card="Am79C973"
+ mem="256"
+ vram="64"
+ cpu_cores=1
+ ;;
+ winxp*|windowsxp*)
+ vmostype="WindowsXP"
+ guestaudio="AC97"
+ ;;
+ winvista*|windowsvista*)
+ vmostype="WindowsVista"
+ ;;
+ windows7*)
+ vmostype="Windows7"
+ ;;
+ windows8*)
+ vmostype="Windows8"
+ ;;
+ 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 and generate a VDE (virtual device ethernet)
+# MAC addr from the first one (put in prefix 0DE)
+macaddr=$(echo ${macaddr} | sed 's/://g')
+vdemacaddr=$(echo ${macaddr} | sed 's/^..../00DE/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 ${VMCHOOSERVBOX}/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='HostOnlyInterface name="vboxnet0"'
+ ;;
+ host*)
+ network_kind='HostOnlyInterface name="vboxnet2"'
+ ;;
+ *)
+ network_kind='HostOnlyInterface name="vboxnet1"'
+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
+. ${VMCHOOSERVBOX}/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
+. ${VMCHOOSERVBOX}/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
+
+################################################################################
+### Set env for vmchooser-run_virt
+################################################################################
+
+# 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/vbox/data/opt/openslx/vmchooser/virtualbox/rwimg.vdi.gz b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/rwimg.vdi.gz
new file mode 100644
index 00000000..e2133d6d
--- /dev/null
+++ b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/rwimg.vdi.gz
Binary files differ
diff --git a/remote/modules/vbox/data/opt/openslx/etc/virtualbox/virtualbox.conf b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/virtualbox.conf
index 8a7a58e4..8a7a58e4 100644
--- a/remote/modules/vbox/data/opt/openslx/etc/virtualbox/virtualbox.conf
+++ b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/virtualbox.conf
diff --git a/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/virtualbox.include b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/virtualbox.include
new file mode 100644
index 00000000..477eebde
--- /dev/null
+++ b/remote/modules/vbox/data/opt/openslx/vmchooser/virtualbox/virtualbox.include
@@ -0,0 +1,57 @@
+# -----------------------------------------------------------------------------
+# Copyright (c) 2010..2013 - 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/HostScreenSaverDisabled" value="false"/>
+ <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="0.0.0.0" networkMask="0.0.0.0" lowerIP="0.0.0.0" upperIP="0.0.0.0" enabled="0"/>
+ <!--
+ <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/data/opt/openslx/scripts/systemd-vmchooser_env b/remote/modules/vmchooser/data/opt/openslx/scripts/systemd-vmchooser_env
index c796b3db..913d9de6 100755
--- a/remote/modules/vmchooser/data/opt/openslx/scripts/systemd-vmchooser_env
+++ b/remote/modules/vmchooser/data/opt/openslx/scripts/systemd-vmchooser_env
@@ -36,7 +36,7 @@ mkdir -p "${VMCHOOSER_DIR}/fd-loop" -m 1777
grep -qE "unionfs |aufs " /proc/mounts && \
mount -n -o size=1500k -t tmpfs vm-loopimg "${VMCHOOSER_DIR}/data/loopimg"
-# create an empty floppy image of 1.4MByte size
+# create an empty floppy image of 1.44 MByte size
dd "if=/dev/zero" "of=${VMCHOOSER_DIR}/data/loopimg/fd.img" count=2880 bs=512 2>/dev/null
chmod 0777 "${VMCHOOSER_DIR}/data/loopimg/fd.img"
@@ -51,8 +51,7 @@ mount -n -t msdos -o loop,umask=000 "${VMCHOOSER_DIR}/data/loopimg/fd.img" "${VM
#fi
# setup more scratch space for virtual machines, if configured
-mkdir -p /tmp/virt
-mkdir -p /var/log/samba
+mkdir -p /tmp/virt /var/log/samba /run/samba
# enable normal users to setup the extended virtual machine redo file space
# and image source via network block device (NBD only at the moment)
@@ -131,3 +130,50 @@ for floppy in $(dmesg|grep -i "Floppy drive"|sed "s,.*(s): ,,;s, is .*,,"); do
j=$(expr $j + 1)
done
+################################################################################
+### Setup VM networking
+################################################################################
+
+# there will be three types of network interfaces for virtual machines available
+# all will be configured for every type of virtualization tool
+# a) br0 is the direct host bridge into the local LAN (br0 already exists)
+# vmnet0 for VMware
+# vboxnet0 for VirtualBox
+# kvmnet0* for Qemu/KVM
+# b) nat1 is an internal bridge which "NATes" into the local LAN (with DHCP)
+# vmnet1 for VMware
+# vboxnet1 for VirtualBox
+# kvmnet1* for Qemu/KVM
+# c) vsw2 is an internal host bridge to connect software defined LANs to
+# vmnet2 for VMware
+# vboxnet2 for VirtualBox
+# kvmnet2* for Qemu/KVM
+
+# creating and configuring nat0
+brctl addbr nat1
+ip link set dev nat1 up
+ip addr add 192.168.101.1/24 dev nat1
+echo "1" >/proc/sys/net/ipv4/conf/nat1/forwarding
+echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null
+iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
+
+for wait in 1 1 2 2 3 end; do
+ grep '^SLX_DNS' "/opt/openslx/config" > /dev/null && break
+ [ "$wait" == "end" ] && echo "No DNS config found, using google dns" && break
+ echo "Waiting for DNS config.."
+ sleep "$wait"
+done
+
+# read the DNS configuration and configure the udhcpd
+[ -z "${SLX_DNS}" ] && SLX_DNS="8.8.8.8"
+sed -i "s,DNSSERVER,${SLX_DNS},;s,DOMAIN,${SLX_NET_DOMAIN}," \
+ /opt/openslx/vmchooser/config/udhcpd-nat1.conf
+
+mkdir -p /var/lib/udhcpd
+udhcpd -S /opt/openslx/vmchooser/config/udhcpd-nat1.conf
+
+# creating and configuring vsw2
+brctl addbr vsw2
+ip link set dev vsw2 up
+echo "1" >/proc/sys/net/ipv4/conf/vsw2/forwarding
+
diff --git a/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt b/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt
index 2d6dfb41..bef43dd1 100755
--- a/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt
+++ b/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt
@@ -439,7 +439,8 @@ SPOOLDIR="/var/spool"
QUEUE="STANDARD"
# Start the lpdaemon listening on the given port
-tcpsvd -E 0.0.0.0 5515 \
+# FixMe: Solution for general printer redirection in other cases (iptables on outgoing port)
+tcpsvd -E 192.168.101.1 5515 \
lpd "$SPOOLDIR" \
sh -c "printergui $USER $SPOOLDIR/$QUEUE/\$DATAFILE" &
@@ -542,6 +543,13 @@ if ! kill -0 "$PID_LPD"; then
slxlog "virt-lpd" "Could not start tcpsvd/lpd for virtual machine session"
fi
+# Configure and start samba service to provide user's home directory
+#if [ -f /usr/sbin/smbd ] ; then
+# sudo /opt/openslx/bin/sed -i /opt/openslx/vmchooser/smb.conf -e "s,USER,$USER,"
+# sudo /usr/sbin/nmbd -s /opt/openslx/vmchooser/config/smb.conf
+# sudo /usr/sbin/smbd -s /opt/openslx/vmchooser/config/smb.conf
+#fi
+
# This will start the VM
eval ${VIRTCMD} ${VIRTCMDOPTS}
#
diff --git a/remote/modules/vmchooser/data/opt/openslx/vmchooser/config/smb.conf b/remote/modules/vmchooser/data/opt/openslx/vmchooser/config/smb.conf
index ec757ce4..d8966f71 100644
--- a/remote/modules/vmchooser/data/opt/openslx/vmchooser/config/smb.conf
+++ b/remote/modules/vmchooser/data/opt/openslx/vmchooser/config/smb.conf
@@ -1,16 +1,29 @@
-# basic samba configuration file for OpenSLX host-internal networking
+# -----------------------------------------------------------------------------
+# Copyright (c) 2009..2013 - 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
+# -----------------------------------------------------------------------------
+# smb.conf
+# - 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
+ interfaces = nat1
+ pid directory = /run/samba
[userhome]
comment = Home Directory of USER
- path = /home/USER
+ path = /home/USER/PERSISTENT
create mask = 0700
guest ok = No
read only = No
diff --git a/remote/modules/vmchooser/data/opt/openslx/vmchooser/config/udhcpd.conf b/remote/modules/vmchooser/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf
index eb510098..ee862e79 100644
--- a/remote/modules/vmchooser/data/opt/openslx/vmchooser/config/udhcpd.conf
+++ b/remote/modules/vmchooser/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf
@@ -17,6 +17,7 @@
# start and end of the IP lease block
start 192.168.101.20
end 192.168.101.100
+max_leases 80
# interface that udhcpd will use
interface nat1
@@ -35,7 +36,8 @@ option subnet 255.255.255.0
option router 192.168.101.1
option wins 192.168.101.10
option domain DOMAIN virtual.site
-
+option lprsvr 192.168.101.1
+#option ntpsrv NTPSERVER
# additional options known to udhcpd not used in OpenSLX at the moment
#subnet #timezone
diff --git a/remote/modules/vmware/data/opt/openslx/scripts/systemd-vmware_env b/remote/modules/vmware/data/opt/openslx/scripts/systemd-vmware_env
index dc60e3d5..d80b28a6 100755
--- a/remote/modules/vmware/data/opt/openslx/scripts/systemd-vmware_env
+++ b/remote/modules/vmware/data/opt/openslx/scripts/systemd-vmware_env
@@ -1,5 +1,6 @@
-#!/opt/openslx/bin/ash
-# Copyright (c) 2009 - OpenSLX GmbH
+#!/bin/ash
+# -----------------------------------------------------------------------------
+# Copyright (c) 2013 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -9,154 +10,19 @@
#
# General information about OpenSLX can be found at http://openslx.org/
# -----------------------------------------------------------------------------
+# systemd-vmware_env
+# - This is the systemd configuration and provisioning script for the various
+# VMware modules and services
+################################################################################
VMWARE_CONF_DIR=/opt/openslx/vmchooser/vmware
VMCHOOSER_CONF_DIR=/opt/openslx/vmchooser/config
-for wait in 1 1 2 2 3 end; do
- grep '^SLX_DNS' "/opt/openslx/config" > /dev/null && break
- [ "$wait" == "end" ] && echo "No DNS config found, using google dns" && break
- echo "Waiting for DNS config.."
- sleep "$wait"
-done
-
-#source config file
-. "/opt/openslx/config"
-. "${VMWARE_CONF_DIR}/vmware.conf" || slxlog "vmware-conf" "Could not source '${VMWARE_CONF_DIR}/vmware.conf' in $0" "${VMWARE_CONF_DIR}/vmware.conf"
-
-vm_dhcpd() {
-
- #from plugins/vmware/init-hooks/60-have-servconfig/vm-dhcpd.sh
-
- # read the DNS configuration and if available set WPAD configuration
- [ -z "${SLX_DNS}" ] && SLX_DNS="8.8.8.8"
- [ -n "${wpad}" ] && wpad_config="option wpad ${wpad}"
-
- # configuring dhcpd stub for virtual networks
-cat > "${VMWARE_CONF_DIR}/udhcpd.conf" << EOF
-# general udhcpd configuration file for virtual machines written by $0
-
-# 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 ${SLX_DNS}
-option subnet 255.255.255.0
-option router CNETWORK.1
-option wins CNETWORK.10
-option domain ${SLX_NET_DOMAIN} virtual.site
-${wpad_config}
-
-# 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 #wpad
-EOF
-
-}
-
-setup_network() {
- #from plugins/vmware/XX_vmware.sh
-
- mkdir -p "/tmp/virt/vmware" -m 1777
- mkdir -p "/dev/shm/vmware" -m 1777
- mkdir -p "/var/run/vmware" -m 1777
- mkdir -p "/etc/vmware/udhcpd"
-
- # variable might contain ",NAT" which is to be taken off
- if [ -n "$vmnet1" ] ; then
- local vmip="${vmnet1%/*}" # x.x.x.x/yy => 'x.x.x.x'">
- local vmsub=$(echo $vmip |sed 's,\(.*\)\..*,\1,') # x.x.x.x => x.x.x
- # setting up the udhcpd configuration
- sed -e "s,NWIF,vmnet1,;s,/misc/,/vmware/," \
- -e "s,CNETWORK,$vmsub,;s,PIDFILE,/var/run/vmware/udhcpd-vmnet1.pid," \
- -e "s,LEASEFILE,/var/run/vmware/udhcpd-vmnet1.leases," \
- "${VMWARE_CONF_DIR}/udhcpd.conf" > "/etc/vmware/udhcpd/udhcpd-vmnet1.conf"
- # setting the base samba configuration if available
- if [ -f "$VMCHOOSER_CONF_DIR/smb.conf" -a -f "/usr/sbin/smbd" ] ; then
- sed -e "s#NWIF#vmnet1,vmnet8#;s,PIDDIR,/var/run/vmware," \
- "${VMCHOOSER_CONF_DIR}/smb.conf" > "/etc/vmware/smb.conf"
- fi
- fi
-
- # vmware nat interface configuration
- if [ -n "$vmnet8" ] ; then
- local vmnet8ip="${vmnet8%/*}"
- local vmpx="${vmnet8#*/}"
- local vmsub=$(echo "$vmnet8ip" | sed 's,\(.*\)\..*,\1,') # x.x.x.x => x.x.x">
- # vmip is user for vmnet8 device
- # vmnet is user for config files nat.conf/dhcp
- local vmip="${vmsub}.1"
- local vmnet="${vmsub}.2"
- # setting up the udhcpd configuration
- sed -e "s,NWIF,vmnet8,;s,/misc/,/vmware/," \
- -e "s,CNETWORK,$vmsub,;s,PIDFILE,/var/run/vmware/udhcpd-vmnet8.pid," \
- -e "s,LEASEFILE,/var/run/vmware/udhcpd-vmnet8.leases," \
- ${VMWARE_CONF_DIR}/udhcpd.conf >/etc/vmware/udhcpd/udhcpd-vmnet8.conf
- # might be not needed any more ...
- echo "# Linux NAT configuration file" \
- > /etc/vmware/nat.conf
- echo "[host]" \
- >> /etc/vmware/nat.conf
- echo "ip = $vmnet/$vmpx" \
- >> /etc/vmware/nat.conf
- echo "device = /dev/vmnet8" \
- >> /etc/vmware/nat.conf
- echo "activeFTP = 1" \
- >> /etc/vmware/nat.conf
- echo "[udp]" \
- >> /etc/vmware/nat.conf
- echo "timeout = 60" \
- >> /etc/vmware/nat.conf
- echo "[incomingtcp]" \
- >> /etc/vmware/nat.conf
- echo "[incomingudp]" \
- >> /etc/vmware/nat.conf
- echo "00:50:56:F1:30:50" > /etc/vmware/vmnet-natd-8.mac
- fi
-
- ############################################################################
- # vmware stuff second part: setting up the environment
- # make udhcpd more silent
- touch "/var/run/vmware/udhcpd-vmnet1.leases" \
- "/var/run/vmware/udhcpd-vmnet8.leases"
-
- # create the needed devices which effects all vmware options
- # they are not created automatically via module load
- for i in "/dev/vmnet0 c 119 0" "/dev/vmnet1 c 119 1" \
- "/dev/vmnet8 c 119 8" "/dev/vmmon c 10 165"; do
- mknod $i # no ""
- done
-
- chmod 0700 /dev/vmnet*
-}
-
load_modules () {
local FAILED=""
- # VMplayer common stuff
+ # module stuff
insmod /lib/modules/vmware/vmmon.ko || FAILED="$FAILED vmmon"
insmod /lib/modules/vmware/vmnet.ko || FAILED="$FAILED vmnet"
- # VMplayer 3.X specific stuff
insmod /lib/modules/vmware/vmci.ko || FAILED="$FAILED vmci"
insmod /lib/modules/vmware/vmblock.ko || FAILED="$FAILED vmblock"
insmod /lib/modules/vmware/vsock.ko || FAILED="$FAILED vsock"
@@ -168,41 +34,30 @@ unload_modules () {
}
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
- if ! $location/vmnet-bridge -d /var/run/vmnet-bridge-0.pid -n 0; then
- slxlog "vmware-bridge" "Launching $location/vmnet-bridge failed."
- fi
+ # create the needed devices which effects all vmware options
+ # they are not created automatically via module load
+ for device in "/dev/vmnet0 c 119 0" "/dev/vmnet1 c 119 1" \
+ "/dev/vmnet2 c 119 2" "/dev/vmmon c 10 165"; do
+ mknod ${device}
+ done
+ chmod 0700 /dev/vmnet*
+
+ # setup bridge (vmnet0), nat (vmnet1) and software defined networking (vmnet2) interfaces
+ if ! /usr/bin/vmnet-netifup -d /var/run/vmnet-netifup-vmnet0.pid /dev/vmnet0 vmnet0 ; then
+ slxlog "vmware-netifup" "Launching /usr/bin/vmnet-netifup for vmnet0 failed."
fi
- if [ -n "$vmnet1" ] ; then
- if ! $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid /dev/vmnet1 vmnet1; then
- slxlog "vmware-netifup" "Launching $location/vmnet-netifup for vmnet1 failed."
- fi
- ip addr add $vmnet1 dev vmnet1
- ip link set vmnet1 up
- if [ -n "$vmnet1nat" ] ; then
- echo "1" >/proc/sys/net/ipv4/conf/vmnet1/forwarding
- echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null
- fi
- /opt/openslx/usr/sbin/udhcpd -S /etc/vmware/udhcpd/udhcpd-vmnet1.conf
+ ip link set dev vmnet0 up
+ brctl addif br0 vmnet0
+ if ! /usr/bin/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid /dev/vmnet1 vmnet1; then
+ slxlog "vmware-netifup" "Launching /usr/bin/vmnet-netifup for vmnet1 failed."
fi
- if [ -n "$vmnet8" ] ; then
- if ! $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet8.pid /dev/vmnet8 vmnet8; then
- slxlog "vmware-netifup" "Launching $location/vmnet-netifup for vmnet8 failed."
- fi
- ip addr add $vmnet8 dev vmnet8
- ip link set vmnet8 up
- echo "1" >/proc/sys/net/ipv4/conf/vmnet8/forwarding
- 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
- if ! $location/vmnet-natd -d /var/run/vmnet-natd-8.pid -m /etc/vmware/vmnet-natd-8.mac -c /etc/vmware/nat.conf; then
- slxlog "vmware-natd" "Launching $location/vmnet-natd for vmnet8 failed."
- fi
- /opt/openslx/usr/sbin/udhcpd -S /etc/vmware/udhcpd/udhcpd-vmnet8.conf
+ ip link set dev vmnet1 up
+ brctl addif nat1 vmnet1
+ if ! /usr/bin/vmnet-netifup -d /var/run/vmnet-netifup-vmnet2.pid /dev/vmnet2 vmnet2; then
+ slxlog "vmware-netifup" "Launching /usr/bin/vmnet-netifup for vmnet2 failed."
fi
+ ip link set dev vmnet2 up
+ brctl addif vsw2 vmnet2
}
vmblock () {
@@ -211,28 +66,24 @@ vmblock () {
fi
}
+# create required standard directories
+mkdir -p "/tmp/virt/vmware" "/dev/shm/vmware" "/run/vmware" -m 1777
-
+# FixMe: Should be rewritten for proper systemd operation
case "$1" in
start)
- #start: defines start function for initscript
- vm_dhcpd
- setup_network
# hack to access the first serial/parallel port
- chmod a+rw /dev/ttyS0
- chmod a+rw /dev/parport0
- mkdir -m 1777 -p /tmp/vmware
+ [ -c /dev/ttyS0 ] && chmod a+rw /dev/ttyS0
+ [ -c /dev/parport0 ] && chmod a+rw /dev/parport0
load_modules
vmnetif
vmblock
;;
stop)
#stop: defines stop function for initscript
- killall vmnet-netifup vmnet-natd vmnet-bridge vmware vmplayer \
- vmware-tray vmnet-dhcpd
+ killall vmnet-netifup vmnet-bridge vmware vmplayer vmware-tray
# might take a while until all services are shut down
- sleep 1
- umount -l /tmp/vmware 2>/dev/null
+ sleep 0.5
unload_modules
;;
@@ -244,11 +95,5 @@ case "$1" in
#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
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include
index a4e03b7f..3f24e9d5 100644
--- a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include
@@ -1,4 +1,3 @@
-# run-virt.include
# -----------------------------------------------------------------------------
# Copyright (c) 2009..2012 - RZ Uni Freiburg
# Copyright (c) 2009..2013 - OpenSLX GmbH
@@ -12,10 +11,11 @@
# 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
+# - component for vmware/player of the vmchooser plugin vmchooser-run_virt
################################################################################
-# configuration writer functions
+################################################################################
+### configuration writer functions
################################################################################
function clean_string ()
@@ -258,9 +258,9 @@ floppy1.fileName = "$floppy1name"
ethernet0.present = "TRUE"
ethernet0.addressType = "static"
$network_virtualDev
-ethernet0.connectionType = "$network_kind"
+ethernet0.connectionType = "hostonly"
#ethernet1.connectionType = "custom"
-#ethernet1.vnet = "/dev/vmnet2"
+ethernet0.vnet = "$hostdev"
ethernet0.address = "00:50:56:$macaddrsuffix"
ethernet0.wakeOnPcktRcv = "FALSE"
@@ -396,7 +396,6 @@ HEREEND
# declaration of default variables
################################################################################
-
[ "$mem" -gt 3800 -a "$(uname -m)" != "x86_64" ] && mem=3800
# VM-ID static (0D), remove if changed to 00
@@ -409,9 +408,9 @@ else
VM_ID=$[ $$ % 100 ]
fi
# temporary disk space for logs, etc...
-redodir=/tmp/vmware/${USER}.$$
+redodir=/tmp/virt/vmware/${USER}.$$
# dir for configs and vmem file
-confdir=/tmp/vmware/${USER}.$$
+confdir=/tmp/virt/vmware/${USER}.$$
# configfile
conffile="${confdir}/run-vmware.conf"
# diskfile
@@ -439,6 +438,20 @@ else
network_virtualDev='# using default virtualDev for ethernet0'
fi
+# use different network card (default e1000, vlance, vmxnet)
+hostdev="/dev/vmnet1"
+case "${network_kind}" in
+ bridge)
+ hostdev="/dev/vmnet0"
+ ;;
+ nat)
+ hostdev="/dev/vmnet1"
+ ;;
+ hostonly|host-only)
+ hostdev="/dev/vmnet2"
+ ;;
+esac
+
# set standard sound card, overwrite depending on OS (options sb16, es1371, hdaudio)
sound="es1371"
@@ -617,15 +630,9 @@ fi
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/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
+### Set env for vmchooser-run_virt
+################################################################################
# For debugging
cp "$conffile" "/tmp/vmware-last-config"