summaryrefslogtreecommitdiffstats
path: root/remote
diff options
context:
space:
mode:
Diffstat (limited to 'remote')
-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"