summaryrefslogtreecommitdiffstats
path: root/remote/modules/vmware
diff options
context:
space:
mode:
Diffstat (limited to 'remote/modules/vmware')
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmhome_preferences_file.inc53
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmware_config_file.inc175
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmware_config_file_legacy.inc312
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/logging.inc57
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/parse_vmx.inc78
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include657
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_hardware.inc71
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_hardware_legacy.inc180
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_vmware_include_variables.inc43
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/write_config_files.inc26
-rw-r--r--remote/modules/vmware/data/opt/openslx/vmchooser/vmware/write_config_files_legacy.inc29
11 files changed, 1051 insertions, 630 deletions
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmhome_preferences_file.inc b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmhome_preferences_file.inc
new file mode 100644
index 00000000..a5f2cbee
--- /dev/null
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmhome_preferences_file.inc
@@ -0,0 +1,53 @@
+create_vmhome_preferences_file() {
+ cat > "$vmhome/preferences" <<-HEREEND
+ .encoding = "UTF-8"
+ # This configuration file was generated by $0
+
+ # updates/tips
+ webUpdate.enabled = "FALSE"
+ webUpdate.lastCheck.status = "done_updates"
+ webUpdate.checkPeriod = "manual"
+ 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.vmplayer.fullscreen.nobar = 1
+ pref.grabOnMouseClick = "TRUE"
+ pref.grabOnKeyPress = "TRUE"
+ pref.motionGrab = "TRUE"
+ pref.motionUngrab = "TRUE"
+ pref.hideCursorOnUngrab = "TRUE"
+ pref.autoFit = "TRUE"
+ pref.autoFitFullScreen = "fitGuestToHost"
+ pref.autoFitGuestToWindow = "TRUE"
+ pref.vmplayer.exit.vmAction = "poweroff"
+ pref.vmplayer.confirmOnExit = "TRUE"
+
+ # shared folders
+ pref.enableAllSharedFolders = "TRUE"
+
+ # eula
+ pref.eula.count = "2"
+ pref.eula0.product = "VMware Player"
+ pref.eula0.build = "$vmbuild"
+ pref.eula1.product = "VMware Workstation"
+ pref.eula1.build = "$vmbuild"
+ HEREEND
+}
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmware_config_file.inc b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmware_config_file.inc
new file mode 100644
index 00000000..bac61be6
--- /dev/null
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmware_config_file.inc
@@ -0,0 +1,175 @@
+########################################
+# Include: Create vmware startup files #
+########################################
+
+writelog "create_vmware_config_file.inc: conffile: -$conffile-"
+
+MAXMEM="9999999"
+MAXCORES="4"
+shfolders="TRUE"
+sound="es1371"
+
+# define hardware configuration depending on the guest OS used
+# this needs to be fixed and is the base for the creation of new VMs
+case "$vmostype" in
+ win31*|windows31*)
+ vmostype="win31"
+ shfolders="FALSE"
+ sound="sb16"
+ MAXMEM="32"
+ MAXCORES="1"
+ ;;
+ winnt*|windowsnt*)
+ vmostype="winnt"
+ shfolders="FALSE"
+ sound="sb16"
+ MAXMEM="1000"
+ MAXCORES="2"
+ ;;
+ win95*|windows95*)
+ vmostype="win95"
+ shfolders="FALSE"
+ MAXMEM="96"
+ MAXCORES="1"
+ ;;
+ win98*|windows98*)
+ vmostype="win98"
+ MAXMEM="256"
+ MAXCORES="1"
+ ;;
+ winme*|windowsme*)
+ vmostype="winme"
+ MAXMEM="384"
+ MAXCORES="1"
+ ;;
+ win2000|windows2000|win2000pro*)
+ vmostype="win2000pro"
+ MAXMEM="4000"
+ MAXCORES="2"
+ ;;
+ win2000srv*|windows2000srv*|win2000serv*|windows2000serv*)
+ vmostype="win2000serv"
+ shfolders="FALSE"
+ MAXMEM="4000"
+ MAXCORES="4"
+ ;;
+ win2000adv*|windows2000adv*|win2000dat*|windows2000dat*)
+ vmostype="win2000advserv"
+ shfolders="FALSE"
+ MAXMEM="8000"
+ MAXCORES="8"
+ ;;
+ winnet*64|win*2003*64|windowsnet*64)
+ vmostype="winnetstandard-64"
+ MAXMEM="8000"
+ ;;
+ winnet*|win*2003*|windowsnet*)
+ vmostype="winnetstandard"
+ MAXMEM="4000"
+ ;;
+ winxphome*|windowsxphome*)
+ vmostype="winxphome"
+ MAXMEM="4000"
+ MAXCORES="1"
+ ;;
+ winxp*64|windowsxp*64)
+ vmostype="winxppro-64"
+ MAXMEM="8000"
+ MAXCORES="2"
+ ;;
+ winxp*|windowsxp*)
+ vmostype="winxppro"
+ MAXMEM="4000"
+ MAXCORES="1"
+ ;;
+ winvista*64|windowsvista*64)
+ vmostype="winvista-64"
+ MAXMEM="16000"
+ MAXCORES="2"
+ ;;
+ winvista*|windowsvista*)
+ vmostype="winvista"
+ MAXMEM="8000"
+ MAXCORES="2"
+ ;;
+ win7*64|windows7*64)
+ vmostype="windows7-64"
+ MAXMEM="32000"
+ MAXCORES="4"
+ ;;
+ win7*|windows7*)
+ vmostype="windows7"
+ MAXMEM="8000"
+ MAXCORES="4"
+ ;;
+ win8*64|windows8*64)
+ vmostype="windows8-64"
+ MAXMEM="32000"
+ MAXCORES="4"
+ ;;
+ win8*|windows8*)
+ vmostype="windows8"
+ MAXMEM="8000"
+ MAXCORES="4"
+ ;;
+ win*64)
+ MAXMEM="16000"
+ MAXCORES="4"
+ ;;
+ win*)
+ MAXMEM="8000"
+ ;;
+ dos|msdos*|ms-dos*)
+ vmostype="dos"
+ shfolders="FALSE"
+ MAXMEM="128"
+ ;;
+ macos*64)
+ vmostype="freebsd-64"
+ MAXMEM="4000"
+ MAXCORES="2"
+ ;;
+ macos*)
+ vmostype="freebsd"
+ MAXMEM="4000"
+ MAXCORES="1"
+ ;;
+ beos*)
+ vmostype="other"
+ shfolders="FALSE"
+ ;;
+ # Unknown guestOS setting in .xml - use conservative defaults
+ *64)
+ vmostype="other-64"
+ shfolders="FALSE"
+ MAXMEM="123456"
+ MAXCORES="4"
+ ;;
+ *)
+ vmostype="other"
+ shfolders="FALSE"
+ MAXMEM="8000"
+ MAXCORES="1"
+ ;;
+esac
+
+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"
+
+# set the appropriate permissions for the vmware config file
+chmod u+rwx "${conffile}" >/dev/null 2>&1
+
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmware_config_file_legacy.inc b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmware_config_file_legacy.inc
new file mode 100644
index 00000000..1d6b2185
--- /dev/null
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/create_vmware_config_file_legacy.inc
@@ -0,0 +1,312 @@
+########################################
+# Include: Create vmware startup files #
+########################################
+
+create_vmware_config_file_legacy() {
+ echo "# This configuration file was generated by $0" > "$conffile"
+
+ MAXMEM="9999999"
+ MAXCORES="4"
+ shfolders="TRUE"
+ sound="es1371"
+
+ # define hardware configuration depending on the guest OS used
+ # this needs to be fixed and is the base for the creation of new VMs
+ case "$vmostype" in
+ win31*|windows31*)
+ vmostype="win31"
+ shfolders="FALSE"
+ sound="sb16"
+ MAXMEM="32"
+ MAXCORES="1"
+ ;;
+ winnt*|windowsnt*)
+ vmostype="winnt"
+ shfolders="FALSE"
+ sound="sb16"
+ MAXMEM="1000"
+ MAXCORES="2"
+ ;;
+ win95*|windows95*)
+ vmostype="win95"
+ shfolders="FALSE"
+ MAXMEM="96"
+ MAXCORES="1"
+ ;;
+ win98*|windows98*)
+ vmostype="win98"
+ MAXMEM="256"
+ MAXCORES="1"
+ ;;
+ winme*|windowsme*)
+ vmostype="winme"
+ MAXMEM="384"
+ MAXCORES="1"
+ ;;
+ win2000|windows2000|win2000pro*)
+ vmostype="win2000pro"
+ MAXMEM="4000"
+ MAXCORES="2"
+ ;;
+ win2000srv*|windows2000srv*|win2000serv*|windows2000serv*)
+ vmostype="win2000serv"
+ shfolders="FALSE"
+ MAXMEM="4000"
+ MAXCORES="4"
+ ;;
+ win2000adv*|windows2000adv*|win2000dat*|windows2000dat*)
+ vmostype="win2000advserv"
+ shfolders="FALSE"
+ MAXMEM="8000"
+ MAXCORES="8"
+ ;;
+ winnet*64|win*2003*64|windowsnet*64)
+ vmostype="winnetstandard-64"
+ MAXMEM="8000"
+ ;;
+ winnet*|win*2003*|windowsnet*)
+ vmostype="winnetstandard"
+ MAXMEM="4000"
+ ;;
+ winxphome*|windowsxphome*)
+ vmostype="winxphome"
+ MAXMEM="4000"
+ MAXCORES="1"
+ ;;
+ winxp*64|windowsxp*64)
+ vmostype="winxppro-64"
+ MAXMEM="8000"
+ MAXCORES="2"
+ ;;
+ winxp*|windowsxp*)
+ vmostype="winxppro"
+ MAXMEM="4000"
+ MAXCORES="1"
+ ;;
+ winvista*64|windowsvista*64)
+ vmostype="winvista-64"
+ MAXMEM="16000"
+ MAXCORES="2"
+ ;;
+ winvista*|windowsvista*)
+ vmostype="winvista"
+ MAXMEM="8000"
+ MAXCORES="2"
+ ;;
+ win7*64|windows7*64)
+ vmostype="windows7-64"
+ MAXMEM="32000"
+ MAXCORES="4"
+ ;;
+ win7*|windows7*)
+ vmostype="windows7"
+ MAXMEM="8000"
+ MAXCORES="4"
+ ;;
+ win8*64|windows8*64)
+ vmostype="windows8-64"
+ MAXMEM="32000"
+ MAXCORES="4"
+ ;;
+ win8*|windows8*)
+ vmostype="windows8"
+ MAXMEM="8000"
+ MAXCORES="4"
+ ;;
+ win*64)
+ MAXMEM="16000"
+ MAXCORES="4"
+ ;;
+ win*)
+ MAXMEM="8000"
+ ;;
+ dos|msdos*|ms-dos*)
+ vmostype="dos"
+ shfolders="FALSE"
+ MAXMEM="128"
+ ;;
+ macos*64)
+ vmostype="freebsd-64"
+ MAXMEM="4000"
+ MAXCORES="2"
+ ;;
+ macos*)
+ vmostype="freebsd"
+ MAXMEM="4000"
+ MAXCORES="1"
+ ;;
+ beos*)
+ vmostype="other"
+ shfolders="FALSE"
+ ;;
+ # Unknown guestOS setting in .xml - use conservative defaults
+ *64)
+ vmostype="other-64"
+ shfolders="FALSE"
+ MAXMEM="123456"
+ MAXCORES="4"
+ ;;
+ *)
+ vmostype="other"
+ shfolders="FALSE"
+ MAXMEM="8000"
+ MAXCORES="1"
+ ;;
+ esac
+ 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 the 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 = "hostonly"
+ ethernet0.connectionType = "custom"
+ ethernet0.vnet = "$hostdev"
+ ethernet0.address = "00:50:56:$macaddrsuffix"
+ ethernet0.wakeOnPcktRcv = "FALSE"
+
+ # sound
+ sound.present = "TRUE"
+ $sound_fileName
+ sound.virtualdev = "$sound"
+ pciSound.enableVolumeControl = "FALSE"
+ sound.enableVolumeControl = "FALSE"
+
+ # svga
+ svga.autodetect = "TRUE"
+
+ # 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"
+
+ $PCIE
+
+ # shared folders
+ $ENABLE_SHARE
+ sharedFolder0.present = "$shfolders"
+ sharedFolder0.enabled = "$shfolders"
+ sharedFolder0.expiration = "never"
+ sharedFolder0.guestName = "$homesharename"
+ sharedFolder0.hostPath = "$homesharepath"
+ sharedFolder0.readAccess = "TRUE"
+ sharedFolder0.writeAccess = "TRUE"
+ sharedFolder1.present = "$shfolders"
+ sharedFolder1.enabled = "$shfolders"
+ sharedFolder1.expiration = "never"
+ sharedFolder1.guestName = "$commonsharename"
+ sharedFolder1.hostPath = "$commonsharepath"
+ sharedFolder1.readAccess = "TRUE"
+ sharedFolder1.writeAccess = "TRUE"
+ sharedFolder.maxNum = "2"
+
+ # 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
+}
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/logging.inc b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/logging.inc
new file mode 100644
index 00000000..62b1c691
--- /dev/null
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/logging.inc
@@ -0,0 +1,57 @@
+###############################
+# Include: Logging and stdout #
+###############################
+
+logging() {
+ # 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:$macaddrsuffix" # TODO: Make var at top for this, it's hard coded twice
+ 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 ""
+
+}
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/parse_vmx.inc b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/parse_vmx.inc
new file mode 100644
index 00000000..7b9f46c3
--- /dev/null
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/parse_vmx.inc
@@ -0,0 +1,78 @@
+######################################################################
+# Include: Parsing the non-legacy delivered vmxfile $TMPDIR/$IMGUUID #
+######################################################################
+
+writelog "Now in parse_vmx.inc."
+
+# check for vmdk file marker %VM_DISK_PATH% and put vmdk path in it's place: also VM_DISK_MODE
+# and VM_DISK_REDOLOGDIR.
+# IMAGE=$(grep -io '<image_path.*"' "${xmlfile}" | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }')
+sed -i 's#%VM_DISK_PATH%#'"$vm_diskfile"'#g' "$TMPDIR/$IMGUUID"
+sed -i 's#%VM_DISK_MODE%#'"independent-nonpersistent"'#g' "$TMPDIR/$IMGUUID"
+sed -i 's#%VM_DISK_REDOLOGDIR%#'"$redodir"'#g' "$TMPDIR/$IMGUUID"
+
+# Ethernet: All we do is entering a generated MAC, as we do not want to interfere
+# in the possible case no networking is wanted.
+writelog "Guest MAC: $macaddr"
+echo 'ethernet0.address = "'"${macaddr}"'"' >> "$TMPDIR/$IMGUUID"
+
+# Massenspeicher: DVD, CDROM
+cat >> "$TMPDIR/$IMGUUID" <<-HEREEND
+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"
+HEREEND
+
+# Floppies:
+cat >> "$TMPDIR/$IMGUUID" <<-HEREEND
+floppy0.present = "$floppy0"
+floppy0.startConnected = "FALSE"
+floppy0.autodetect = "TRUE"
+floppy0.fileName = "auto detect"
+floppy1.present = "$floppy1"
+floppy1.startConnected = "TRUE"
+floppy1.fileType = "file"
+floppy1.fileName = "$floppy1name"
+HEREEND
+
+# RAM, CPUs
+cat >> "$TMPDIR/$IMGUUID" <<-HEREEND
+numvcpus = "$cpu_cores"
+cpuid.coresPerSocket = "$cores_per_socket"
+maxvcpus = "$real_core_count"
+memsize = "$mem"
+MemAllowAutoScaleDown = "FALSE"
+MemTrimRate = "-1"
+HEREEND
+
+# USB
+cat >> "$TMPDIR/$IMGUUID" <<-HEREEND
+usb.present = "TRUE"
+usb.generic.autoconnect = "TRUE"
+HEREEND
+
+# Seriell, Parallel: Empty, nothing is being currently set. TODO later.
+
+# rausziehen: Hardwareversion
+# hwver=$(echo "${imghead}" | grep -m1 -ia "ddb.virtualHWVersion" | awk -F '"' '{print $2}')
+# writelog "hwver: $hwver"
+# sed -i "s/virtualHW.version.*/virtualHW.version = $hwver/g" "$TMPDIR/$IMGUUID"
+# cleanexit 1
+
+# rausziehen: GuestOS
+
+# Killing duplicate lines (output much nicer as sort -u):
+awk '!a[$0]++' "${TMPDIR}/${IMGUUID}" > "${TMPDIR}/${IMGUUID}.tmp" && mv "${TMPDIR}/${IMGUUID}.tmp" "${TMPDIR}/${IMGUUID}"
+
+# At last_ Let's copy it to $confdir/run-vmware.conf
+cp -p "$TMPDIR/$IMGUUID" "$conffile" && writelog "Copied TMPDIR/IMGUUID -$TMPDIR/$IMGUUID- to conffile -$conffile-" || \
+ ( writelog "Could not copy TMPDIR/IMGUUID -$TMPDIR/$IMGUUID- to conffile -$conffile-!"; cleanexit 1 )
+
+# TODO: Move this to cleanexit.
+rm -f "$TMPDIR/$IMGUUID" || writelog "Could not delete $TMPDIR/$IMGUUID."
+rmdir "$TMPDIR" || writelog "Could not rmdir $TMPDIR"
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 ae978036..806d9921 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
@@ -19,644 +19,41 @@
### This needs bash, not dash or ash! (indented HEREDOC)
################################################################################
+VMWAREINCLUDEDIR=/opt/openslx/vmchooser/vmware
vmostype=$(rv_clean_string "$vmostype")
-runvmwareconfheader ()
-{
- echo "# This configuration file was generated by $0" > "$conffile"
-
- MAXMEM="9999999"
- MAXCORES="4"
- shfolders="TRUE"
- sound="es1371"
-
- # define hardware configuration depending on the guest OS used
- # this needs to be fixed and is the base for the creation of new VMs
- case "$vmostype" in
- win31*|windows31*)
- vmostype="win31"
- shfolders="FALSE"
- sound="sb16"
- MAXMEM="32"
- MAXCORES="1"
- ;;
- winnt*|windowsnt*)
- vmostype="winnt"
- shfolders="FALSE"
- sound="sb16"
- MAXMEM="1000"
- MAXCORES="2"
- ;;
- win95*|windows95*)
- vmostype="win95"
- shfolders="FALSE"
- MAXMEM="96"
- MAXCORES="1"
- ;;
- win98*|windows98*)
- vmostype="win98"
- MAXMEM="256"
- MAXCORES="1"
- ;;
- winme*|windowsme*)
- vmostype="winme"
- MAXMEM="384"
- MAXCORES="1"
- ;;
- win2000|windows2000|win2000pro*)
- vmostype="win2000pro"
- MAXMEM="4000"
- MAXCORES="2"
- ;;
- win2000srv*|windows2000srv*|win2000serv*|windows2000serv*)
- vmostype="win2000serv"
- shfolders="FALSE"
- MAXMEM="4000"
- MAXCORES="4"
- ;;
- win2000adv*|windows2000adv*|win2000dat*|windows2000dat*)
- vmostype="win2000advserv"
- shfolders="FALSE"
- MAXMEM="8000"
- MAXCORES="8"
- ;;
- winnet*64|win*2003*64|windowsnet*64)
- vmostype="winnetstandard-64"
- MAXMEM="8000"
- ;;
- winnet*|win*2003*|windowsnet*)
- vmostype="winnetstandard"
- MAXMEM="4000"
- ;;
- winxphome*|windowsxphome*)
- vmostype="winxphome"
- MAXMEM="4000"
- MAXCORES="1"
- ;;
- winxp*64|windowsxp*64)
- vmostype="winxppro-64"
- MAXMEM="8000"
- MAXCORES="2"
- ;;
- winxp*|windowsxp*)
- vmostype="winxppro"
- MAXMEM="4000"
- MAXCORES="1"
- ;;
- winvista*64|windowsvista*64)
- vmostype="winvista-64"
- MAXMEM="16000"
- MAXCORES="2"
- ;;
- winvista*|windowsvista*)
- vmostype="winvista"
- MAXMEM="8000"
- MAXCORES="2"
- ;;
- win7*64|windows7*64)
- vmostype="windows7-64"
- MAXMEM="32000"
- MAXCORES="4"
- ;;
- win7*|windows7*)
- vmostype="windows7"
- MAXMEM="8000"
- MAXCORES="4"
- ;;
- win8*64|windows8*64)
- vmostype="windows8-64"
- MAXMEM="32000"
- MAXCORES="4"
- ;;
- win8*|windows8*)
- vmostype="windows8"
- MAXMEM="8000"
- MAXCORES="4"
- ;;
- win*64)
- MAXMEM="16000"
- MAXCORES="4"
- ;;
- win*)
- MAXMEM="8000"
- ;;
- dos|msdos*|ms-dos*)
- vmostype="dos"
- shfolders="FALSE"
- MAXMEM="128"
- ;;
- macos*64)
- vmostype="freebsd-64"
- MAXMEM="4000"
- MAXCORES="2"
- ;;
- macos*)
- vmostype="freebsd"
- MAXMEM="4000"
- MAXCORES="1"
- ;;
- beos*)
- vmostype="other"
- shfolders="FALSE"
- ;;
- # Unknown guestOS setting in .xml - use conservative defaults
- *64)
- vmostype="other-64"
- shfolders="FALSE"
- MAXMEM="123456"
- MAXCORES="4"
- ;;
- *)
- vmostype="other"
- shfolders="FALSE"
- MAXMEM="8000"
- MAXCORES="1"
- ;;
- esac
-
- 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 the 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 = "hostonly"
- ethernet0.connectionType = "custom"
- ethernet0.vnet = "$hostdev"
- ethernet0.address = "00:50:56:$macaddrsuffix"
- ethernet0.wakeOnPcktRcv = "FALSE"
-
- # sound
- sound.present = "TRUE"
- $sound_fileName
- sound.virtualdev = "$sound"
- pciSound.enableVolumeControl = "FALSE"
- sound.enableVolumeControl = "FALSE"
-
- # svga
- svga.autodetect = "TRUE"
-
- # 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"
-
- $PCIE
-
- # shared folders
- $ENABLE_SHARE
- sharedFolder0.present = "$shfolders"
- sharedFolder0.enabled = "$shfolders"
- sharedFolder0.expiration = "never"
- sharedFolder0.guestName = "$homesharename"
- sharedFolder0.hostPath = "$homesharepath"
- sharedFolder0.readAccess = "TRUE"
- sharedFolder0.writeAccess = "TRUE"
- sharedFolder1.present = "$shfolders"
- sharedFolder1.enabled = "$shfolders"
- sharedFolder1.expiration = "never"
- sharedFolder1.guestName = "$commonsharename"
- sharedFolder1.hostPath = "$commonsharepath"
- sharedFolder1.readAccess = "TRUE"
- sharedFolder1.writeAccess = "TRUE"
- sharedFolder.maxNum = "2"
-
- # 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"
-webUpdate.lastCheck.status = "done_updates"
-webUpdate.checkPeriod = "manual"
-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.vmplayer.fullscreen.nobar = 1
-pref.grabOnMouseClick = "TRUE"
-pref.grabOnKeyPress = "TRUE"
-pref.motionGrab = "TRUE"
-pref.motionUngrab = "TRUE"
-pref.hideCursorOnUngrab = "TRUE"
-pref.autoFit = "TRUE"
-pref.autoFitFullScreen = "fitGuestToHost"
-pref.autoFitGuestToWindow = "TRUE"
-pref.vmplayer.exit.vmAction = "poweroff"
-pref.vmplayer.confirmOnExit = "TRUE"
-
-# shared folders
-pref.enableAllSharedFolders = "TRUE"
-
-# eula
-pref.eula.count = "2"
-pref.eula0.product = "VMware Player"
-pref.eula0.build = "$vmbuild"
-pref.eula1.product = "VMware Workstation"
-pref.eula1.build = "$vmbuild"
-HEREEND
-}
-
-
-# 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/virt/vmware/${USER}.$$
-# dir for configs and vmem file
-confdir=/tmp/virt/vmware/${USER}.$$
-# configfile
-conffile="${confdir}/run-vmware.conf"
-# diskfile
-diskfile="${vmpath}"
-# users vmware config folder
-[ -z "${HOME}" ] && HOME=$(getent passwd "$(/usr/bin/whoami)" | awk -F ':' '{print $6}')
-vmhome="${HOME}/.vmware"
-
-# get several version infos for vmware/player
-. /opt/openslx/vmchooser/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
-
-# use different network card (default e1000, vlance, vmxnet)
-hostdev="/dev/vmnet1"
-case "${network_kind}" in
- bridge|bridged)
- 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"
-
-# set sound card explicitly if there is more than one card in the host system
-if [ -n "$SOUND_CARD_INDEX" ] && [ "$SOUND_CARD_INDEX" -ne 0 ]; then
- sound_fileName="sound.fileName = \"sysdefault:CARD=${SOUND_CARD_INDEX}\"
-sound.autodetect = \"FALSE\""
-else
- sound_fileName='sound.fileName = "-1"
-sound.autodetect = "TRUE"'
-fi
-
-# check for 3D configuration setting
-case "$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
-##
-hwver=$(echo "${imghead}" | grep -m1 -ia "ddb.virtualHWVersion" | awk -F '"' '{print $2}')
-
-
-if [ -z "$override_hddtype" ]; then
- hddrv=$(echo "${imghead}" | grep -m1 -ia "ddb.adapterType" | awk -F '"' '{print $2}')
+if [ "$LEGACY" ]; then
+ # declaration of default variables for vmware
+ source "${VMWAREINCLUDEDIR}/set_vmware_include_variables.inc" && set_vmware_include_variables
+ # hardware checks
+ # sources /opt/openslx/config to check for whitelisted HW-3D
+ source "${VMWAREINCLUDEDIR}/set_hardware_legacy.inc" && set_hardware_legacy
+ # write configuration files
+ # write_config_files calls:
+ # set_vmhome_preferences_header
+ # set_vmware_startup_file
+ source "${VMWAREINCLUDEDIR}/write_config_files_legacy.inc" && write_config_files_legacy
+ # logging and stdout
+ # needs writelog() from vmchooser-run_virt
+ source "${VMWAREINCLUDEDIR}/logging.inc" && logging
else
- hddrv=$override_hddtype
-fi
+ # declaration of default variables for vmware
+ source "${VMWAREINCLUDEDIR}/set_vmware_include_variables.inc" && set_vmware_include_variables
-PCIE=
-case "${hddrv}" in
- ide)
- ide="TRUE"
- scsi="FALSE"
- ;;
- lsisas*)
- ide="FALSE"
- scsi="TRUE"
- PCIE='pciBridge4.present = "TRUE"
- pciBridge4.virtualDev = "pcieRootPort"
- pciBridge4.functions = "8"'
- ;;
- lsilogic|buslogic)
- ide="FALSE"
- scsi="TRUE"
- ;;
- scsi)
- ide="FALSE"
- scsi="TRUE"
- hddrv="lsilogic"
- ;;
- *)
- slxlog "virt-vmware-hdd" "vmware: Unknown HDD adapter type $hddrv"
- ;;
-esac
+ # hardware checks: sources /opt/openslx/config to check for whitelisted HW-3D
+ source "${VMWAREINCLUDEDIR}/set_hardware.inc"
-# 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
+ # write configuration files
+ source "${VMWAREINCLUDEDIR}/write_config_files.inc"
-# link to conffile if confdir != redodir
-ln -s "$conffile" "$redodir/run-vmware.conf" >/dev/null 2>&1
+ # parse the given vmx file
+ source "${VMWAREINCLUDEDIR}/parse_vmx.inc"
-# sync is needed to ensure that data is really written to virtual disk
-# TODO: Move to general run-virt, right before exec of vm
-sync
+ # logging and stdout
+ # needs writelog() from vmchooser-run_virt
+ source "${VMWAREINCLUDEDIR}/logging.inc" && logging
-# own nvram. We need it for floppy drive b, default nvram has just drive a
-if ! cp "/opt/openslx/vmchooser/vmware/nvram" "$confdir/nvram"; then
- slxlog "virt-vmware-nvram" "Could not copy nvram from '/opt/openslx/vmchooser/vmware/nvram' '$confdir/nvram'"
-fi
-
-
-# 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:$macaddrsuffix" # TODO: Make var at top for this, it's hard coded twice
-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 ""
-
-
-################################################################################
-### Set env for vmchooser-run_virt
-################################################################################
+fi
# For debugging
cp "$conffile" "/tmp/vmware-last-config"
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_hardware.inc b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_hardware.inc
new file mode 100644
index 00000000..174bf314
--- /dev/null
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_hardware.inc
@@ -0,0 +1,71 @@
+#########################################
+# Include: Hardware checks and settings #
+#########################################
+
+# check for 3D configuration setting
+case "$enable3d" in
+ true|yes)
+ enable3d="TRUE"
+ ;;
+ *)
+ enable3d="FALSE"
+ ;;
+esac
+
+# set standard sound card, overwrite depending on OS (options sb16, es1371, hdaudio)
+sound="es1371"
+
+# set sound card explicitly if there is more than one card in the host system
+if [ -n "$SOUND_CARD_INDEX" ] && [ "$SOUND_CARD_INDEX" -ne 0 ]; then
+ sound_fileName="sound.fileName = \"sysdefault:CARD=${SOUND_CARD_INDEX}\"
+ sound.autodetect = \"FALSE\""
+else
+ sound_fileName='sound.fileName = "-1"
+ sound.autodetect = "TRUE"'
+fi
+
+# check for whitelisted HW-3D
+source /opt/openslx/config
+FORCE3D=""
+if [ -n "$SLX_VMWARE_3D" ]; then
+ FORCE3D='mks.gl.allowBlacklistedDrivers = "TRUE"'
+fi
+
+# read only the first 30 lines to be sure
+imghead=$(head -n 30 "${diskfile}")
+hwver=$(echo "${imghead}" | grep -m1 -ia "ddb.virtualHWVersion" | awk -F '"' '{print $2}')
+
+
+if [ -z "$override_hddtype" ]; then
+ hddrv=$(echo "${imghead}" | grep -m1 -ia "ddb.adapterType" | awk -F '"' '{print $2}')
+else
+ hddrv=$override_hddtype
+fi
+
+PCIE=
+case "${hddrv}" in
+ ide)
+ ide="TRUE"
+ scsi="FALSE"
+ ;;
+ lsisas*)
+ ide="FALSE"
+ scsi="TRUE"
+ PCIE='pciBridge4.present = "TRUE"
+ pciBridge4.virtualDev = "pcieRootPort"
+ pciBridge4.functions = "8"'
+ ;;
+ lsilogic|buslogic)
+ ide="FALSE"
+ scsi="TRUE"
+ ;;
+ scsi)
+ ide="FALSE"
+ scsi="TRUE"
+ hddrv="lsilogic"
+ ;;
+ *)
+ slxlog "virt-vmware-hdd" "vmware: Unknown HDD adapter type $hddrv"
+ ;;
+esac
+
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_hardware_legacy.inc b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_hardware_legacy.inc
new file mode 100644
index 00000000..f87d43cf
--- /dev/null
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_hardware_legacy.inc
@@ -0,0 +1,180 @@
+#########################################
+# Include: Hardware checks and settings #
+#########################################
+
+set_hardware_legacy() {
+
+# 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
+
+# use different network card (default e1000, vlance, vmxnet)
+hostdev="/dev/vmnet1"
+case "${network_kind}" in
+ bridge|bridged)
+ 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"
+
+# set sound card explicitly if there is more than one card in the host system
+if [ -n "$SOUND_CARD_INDEX" ] && [ "$SOUND_CARD_INDEX" -ne 0 ]; then
+ sound_fileName="sound.fileName = \"sysdefault:CARD=${SOUND_CARD_INDEX}\"
+sound.autodetect = \"FALSE\""
+else
+ sound_fileName='sound.fileName = "-1"
+sound.autodetect = "TRUE"'
+fi
+
+# check for 3D configuration setting
+case "$enable3d" in
+ true|yes)
+ enable3d="TRUE"
+ ;;
+ *)
+ enable3d="FALSE"
+ ;;
+esac
+
+# set standard sound card, overwrite depending on OS (options sb16, es1371, hdaudio)
+sound="es1371"
+
+# set sound card explicitly if there is more than one card in the host system
+if [ -n "$SOUND_CARD_INDEX" ] && [ "$SOUND_CARD_INDEX" -ne 0 ]; then
+ sound_fileName="sound.fileName = \"sysdefault:CARD=${SOUND_CARD_INDEX}\"
+sound.autodetect = \"FALSE\""
+else
+ sound_fileName='sound.fileName = "-1"
+sound.autodetect = "TRUE"'
+fi
+
+# check for 3D configuration setting
+case "$enable3d" in
+ true|yes)
+ enable3d="TRUE"
+ ;;
+ *)
+ enable3d="FALSE"
+ ;;
+esac
+
+# check for whitelisted HW-3D
+source /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
+
+##
+hwver=$(echo "${imghead}" | grep -m1 -ia "ddb.virtualHWVersion" | awk -F '"' '{print $2}')
+
+
+if [ -z "$override_hddtype" ]; then
+ hddrv=$(echo "${imghead}" | grep -m1 -ia "ddb.adapterType" | awk -F '"' '{print $2}')
+else
+ hddrv=$override_hddtype
+fi
+
+PCIE=
+case "${hddrv}" in
+ ide)
+ ide="TRUE"
+ scsi="FALSE"
+ ;;
+ lsisas*)
+ ide="FALSE"
+ scsi="TRUE"
+ PCIE='pciBridge4.present = "TRUE"
+ pciBridge4.virtualDev = "pcieRootPort"
+ pciBridge4.functions = "8"'
+ ;;
+ lsilogic|buslogic)
+ ide="FALSE"
+ scsi="TRUE"
+ ;;
+ scsi)
+ ide="FALSE"
+ scsi="TRUE"
+ hddrv="lsilogic"
+ ;;
+ *)
+ slxlog "virt-vmware-hdd" "vmware: Unknown HDD adapter type $hddrv"
+ ;;
+esac
+
+}
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_vmware_include_variables.inc b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_vmware_include_variables.inc
new file mode 100644
index 00000000..78f8c634
--- /dev/null
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/set_vmware_include_variables.inc
@@ -0,0 +1,43 @@
+#####################################################################
+# Include: Declaration of vmware run-virt-include default variables #
+#####################################################################
+
+set_vmware_include_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/virt/vmware/${USER}.$$
+
+ # dir for configs and vmem file
+ confdir=/tmp/virt/vmware/${USER}.$$
+
+ # configfile
+ conffile="${confdir}/run-vmware.conf"
+
+ # diskfile
+ diskfile="${vmpath}"
+
+ # users vmware config folder
+ [ -z "${HOME}" ] && HOME=$(getent passwd "$(/usr/bin/whoami)" | awk -F ':' '{print $6}')
+ vmhome="${HOME}/.vmware"
+
+ # get several version infos for vmware/player
+ source /opt/openslx/vmchooser/vmware/vmware.conf
+ vmbuild=$buildversion
+ vmversion=$version
+
+ # VMware start options
+ # "-X": start in fullscreen
+ vmopt="-X"
+}
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/write_config_files.inc b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/write_config_files.inc
new file mode 100644
index 00000000..05ee1dd5
--- /dev/null
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/write_config_files.inc
@@ -0,0 +1,26 @@
+###############################
+# Include: Write config files #
+###############################
+
+writelog "redodir: -$redodir- confdir: -$confdir- vmhome/dndlogs: -$vmhome/dndlogs- conffile: -$conffile-"
+
+# 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 file ${vmhome}/preferences
+source "${VMWAREINCLUDEDIR}/create_vmhome_preferences_file.inc" && create_vmhome_preferences_file
+
+# create VMware config file (conffile)
+source "${VMWAREINCLUDEDIR}/create_vmware_config_file.inc"
+
+# link to conffile if confdir != redodir
+[ "$confdir" != "$redodir" ] && ln -s "$conffile" "$redodir/run-vmware.conf" >/dev/null 2>&1
+
+# own nvram. We need it for floppy drive b, default nvram has just drive a
+if ! cp "/opt/openslx/vmchooser/vmware/nvram" "$confdir/nvram"; then
+ slxlog "virt-vmware-nvram" "Could not copy nvram from '/opt/openslx/vmchooser/vmware/nvram' '$confdir/nvram'"
+fi
+
diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/write_config_files_legacy.inc b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/write_config_files_legacy.inc
new file mode 100644
index 00000000..52a341ba
--- /dev/null
+++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/write_config_files_legacy.inc
@@ -0,0 +1,29 @@
+###############################
+# Include: Write config files #
+###############################
+
+write_config_files_legacy() {
+ # 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 file ${vmhome}/preferences
+ source "${VMWAREINCLUDEDIR}/create_vmhome_preferences_file.inc" && create_vmhome_preferences_file
+
+ # create VMware config file (conffile)
+ source "${VMWAREINCLUDEDIR}/create_vmware_config_file_legacy.inc" && create_vmware_config_file_legacy
+
+ # link to conffile if confdir != redodir
+ [ "$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
+ # TODO: Move to general run-virt, right before exec of vm
+ sync
+
+ # own nvram. We need it for floppy drive b, default nvram has just drive a
+ if ! cp "/opt/openslx/vmchooser/vmware/nvram" "$confdir/nvram"; then
+ slxlog "virt-vmware-nvram" "Could not copy nvram from '/opt/openslx/vmchooser/vmware/nvram' '$confdir/nvram'"
+ fi
+}