summaryrefslogtreecommitdiffstats
path: root/remote/modules/vbox
diff options
context:
space:
mode:
authorChristian Rößler2013-09-10 14:55:17 +0200
committerJonathan Bauer2013-09-30 13:22:05 +0200
commit73ad67ba1f7fd64900bf7364eb89d9b08382fbf9 (patch)
treeb9b1dc41092d943b6264e21007944cbe9c88c855 /remote/modules/vbox
parent[setup_target] Check config files for invalid variable names (diff)
downloadtm-scripts-73ad67ba1f7fd64900bf7364eb89d9b08382fbf9.tar.gz
tm-scripts-73ad67ba1f7fd64900bf7364eb89d9b08382fbf9.tar.xz
tm-scripts-73ad67ba1f7fd64900bf7364eb89d9b08382fbf9.zip
[vbox] Standardization for run-virt
Diffstat (limited to 'remote/modules/vbox')
-rwxr-xr-xremote/modules/vbox/data/opt/openslx/etc/virtualbox/run-virt.include642
1 files changed, 642 insertions, 0 deletions
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
new file mode 100755
index 00000000..b755133f
--- /dev/null
+++ b/remote/modules/vbox/data/opt/openslx/etc/virtualbox/run-virt.include
@@ -0,0 +1,642 @@
+# 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}"