diff options
author | Jonathan Bauer | 2017-01-25 18:32:35 +0100 |
---|---|---|
committer | Jonathan Bauer | 2017-01-25 18:32:35 +0100 |
commit | eea5898961a40fc50f01356f90c42904a73a3f74 (patch) | |
tree | 52c19d11efc2d7d904ac89e36ff271de305cfc5a /core/modules/vmware | |
parent | [pam] Include cifs.upcall for DFS support (diff) | |
download | mltk-eea5898961a40fc50f01356f90c42904a73a3f74.tar.gz mltk-eea5898961a40fc50f01356f90c42904a73a3f74.tar.xz mltk-eea5898961a40fc50f01356f90c42904a73a3f74.zip |
major run-virt restructure, only vmware plugin tested!
Diffstat (limited to 'core/modules/vmware')
23 files changed, 615 insertions, 1357 deletions
diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_vmhome_preferences_file.inc b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/create_vmhome_preferences_file.inc index d50402f3..ed76490b 100644 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_vmhome_preferences_file.inc +++ b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/create_vmhome_preferences_file.inc @@ -1,8 +1,13 @@ +########################################### +# Include: Create VMware preferences file # +########################################### +## Functions ## create_vmhome_preferences_file() { - cat > "$vmhome/preferences" <<-HEREEND + cat > "${VM_HOME}/preferences" <<-HEREEND .encoding = "UTF-8" - # This configuration file was generated by $0 - + # This configuration file was generated on $(date) + # by $0 for VMWare version $vmware_version + # updates webUpdate.enabled = "FALSE" webUpdate.lastCheck.status = "done_updates" @@ -27,8 +32,8 @@ create_vmhome_preferences_file() { hint.buslogic.needDriver = "FALSE" # configs - prefvmx.defaultVMPath = "$vmhome" - prefvmx.mru.config = "$conffile:" + prefvmx.defaultVMPath = "${VM_HOME}" + prefvmx.mru.config = "$VM_RUN_FILE:" # hot keys pref.hotkey.control = "true" @@ -65,8 +70,9 @@ create_vmhome_preferences_file() { pref.eula1.build = "$vmware_build" HEREEND if [ -n "$SLX_EXAM" ]; then - echo 'pref.hotkey.rightControl = "true"' >> "$vmhome/preferences" + echo 'pref.hotkey.rightControl = "true"' >> "${VM_HOME}/preferences" fi - writelog "Vmware preferences file created in $vmhome." - true + writelog "Vmware preferences file created in $VM_HOME." } + +call_post_source create_vmhome_preferences_file diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/determine_hardware_limitations.inc b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/determine_hardware_limitations.inc new file mode 100644 index 00000000..f5fdf669 --- /dev/null +++ b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/determine_hardware_limitations.inc @@ -0,0 +1,196 @@ +########################################################################## +# Include: Determine limitations caused by hardware version and guest os # +########################################################################## +## Functions +set_vm_hardware_limits() { + # Sanity checks + if isempty VM_OS_TYPE; then + writelog "VM_OS_TYPE is empty! This should have been parsed from the VM metadata." + EXIT_TYPE="user" EXIT_REASON="Konnte Gastbetriebsystems der gewählten virtuellen Maschine nicht ermitteln!" cleanexit 1 + fi + + declare -g MAXMEM="9999999" + declare -g MAXCORES="4" + declare -g SHARED_FOLDERS="TRUE" + declare -g SOUND_DEV="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 "$VM_OS_TYPE" in + win31*|windows31*) + VM_OS_TYPE="win31" + SHARED_FOLDERS="FALSE" + SOUND_DEV="sb16" + MAXMEM="32" + MAXCORES="1" + ;; + winnt*|windowsnt*) + VM_OS_TYPE="winnt" + SHARED_FOLDERS="FALSE" + SOUND_DEV="sb16" + MAXMEM="1000" + MAXCORES="2" + ;; + win95*|windows95*) + VM_OS_TYPE="win95" + SHARED_FOLDERS="FALSE" + MAXMEM="96" + MAXCORES="1" + ;; + win98*|windows98*) + VM_OS_TYPE="win98" + MAXMEM="256" + MAXCORES="1" + ;; + winme*|windowsme*) + VM_OS_TYPE="winme" + MAXMEM="384" + MAXCORES="1" + ;; + win2000|windows2000|win2000pro*) + VM_OS_TYPE="win2000pro" + MAXMEM="4000" + MAXCORES="2" + ;; + win2000srv*|windows2000srv*|win2000serv*|windows2000serv*) + VM_OS_TYPE="win2000serv" + SHARED_FOLDERS="FALSE" + MAXMEM="4000" + MAXCORES="4" + ;; + win2000adv*|windows2000adv*|win2000dat*|windows2000dat*) + VM_OS_TYPE="win2000advserv" + SHARED_FOLDERS="FALSE" + MAXMEM="8000" + MAXCORES="8" + ;; + winnet*64|win*2003*64|windowsnet*64) + VM_OS_TYPE="winnetstandard-64" + MAXMEM="8000" + MAXCORES="8" + ;; + winnet*|win*2003*|windowsnet*) + VM_OS_TYPE="winnetstandard" + MAXMEM="4000" + MAXCORES="8" + ;; + winxphome*|windowsxphome*) + VM_OS_TYPE="winxphome" + MAXMEM="4000" + MAXCORES="2" + ;; + winxp*64|windowsxp*64) + VM_OS_TYPE="winxppro-64" + MAXMEM="8000" + MAXCORES="8" + ;; + winxp*|windowsxp*) + VM_OS_TYPE="winxppro" + MAXMEM="4000" + MAXCORES="4" + ;; + winvista-64) + VM_OS_TYPE="winvista-64" + MAXMEM="16000" + MAXCORES="4" + ;; + windows7-64) + VM_OS_TYPE="windows7-64" + MAXMEM="32000" + MAXCORES="8" + ;; + windows8-64) + VM_OS_TYPE="windows8-64" + MAXMEM="32000" + MAXCORES="8" + ;; + windows9-64) + VM_OS_TYPE="windows9-64" + MAXMEM="64000" + MAXCORES="8" + ;; + winvista) + VM_OS_TYPE="winvista" + MAXMEM="8000" + MAXCORES="2" + ;; + windows7) + VM_OS_TYPE="windows7" + MAXMEM="8000" + MAXCORES="4" + ;; + windows8) + VM_OS_TYPE="windows8" + MAXMEM="8000" + MAXCORES="4" + ;; + windows9) + VM_OS_TYPE="windows9" + MAXMEM="8000" + MAXCORES="4" + ;; + win*64) + MAXMEM="16000" + MAXCORES="4" + ;; + win*) + MAXMEM="8000" + MAXCORES="1" + ;; + dos|msdos*|ms-dos*) + VM_OS_TYPE="dos" + SHARED_FOLDERS="FALSE" + MAXMEM="128" + MAXCORES="1" + ;; + macos*64) + VM_OS_TYPE="freebsd-64" + MAXMEM="4000" + MAXCORES="2" + ;; + macos*) + VM_OS_TYPE="freebsd" + MAXMEM="4000" + MAXCORES="1" + ;; + beos*) + VM_OS_TYPE="other" + SHARED_FOLDERS="FALSE" + ;; + # Unknown guestOS setting in .xml - this encompasses linux too, + # as there is a multitude of different distributions. Perhaps further + # action will be needed if this leads to problems with exotic OSs. + *64) + VM_OS_TYPE="other-64" + # SHARED_FOLDERS="FALSE" + MAXMEM="123456" + MAXCORES="4" + ;; + *) + VM_OS_TYPE="other" + # SHARED_FOLDERS="FALSE" + MAXMEM="8000" + MAXCORES="1" + ;; + esac + + declare -rg HOST_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. + declare -rg VM_CORES_PER_SOCKET="$CPU_CORES" + + if [ "x$SHARED_FOLDERS" != "xFALSE" ] && [ "$SHARE_REMAP_MODE" != 1 ]; then + declare -rg HGFS_DISABLED="FALSE" + else + declare -rg HGFS_DISABLED="TRUE" + fi + + [ "${VM_MEM}" -ge "${MAXMEM}" ] && VM_MEM="${MAXMEM}" + [ "${VM_HW_VERSION}" -lt "7" -a "${VM_MEM}" -gt "3500" ] && VM_MEM="3500" + return 0 +} + +## MAIN ## +call_post_source set_vm_hardware_limits diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc new file mode 100644 index 00000000..63318589 --- /dev/null +++ b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc @@ -0,0 +1,44 @@ +####################################################################### +# Include: Declaration of core functions and variables of this plugin # +####################################################################### +# This core include just executes stuff! No post source calls! +# For now define helpers here, maybe use a dedicated include later on +vmw_cap_hw_version() { + [ -z "$1" ] && writelog "cap_hw_version called without parameter!" && return 1 + [ "$1" -lt "$maxhardwareversion" ] && maxhardwareversion="$1" +} + +# Temporary disk space for logs, etc... +declare -rg VM_REDO_DIR="/tmp/virt/vmware/${USER}.$$" + +# Dir for configs and vmem file +declare -rg VM_CONF_DIR="/tmp/virt/vmware/${USER}.$$" + +# The VMX file of the starting VM +declare -rg VM_RUN_FILE="${VM_CONF_DIR}/run-vmware.conf" + +# Users vmware config folder +[ -z "${HOME}" ] && declare -rg HOME=$(getent passwd "$(whoami)" | awk -F ':' '{print $6}') +declare -rg VM_HOME="${HOME}/.vmware" + +# mltk generates a vmware config file with several version infos for vmware/player, read it +$(safesource "${VMWARE_PLUGIN_DIR}/vmware.conf") + +# VMware start options +# "-X": start in fullscreen +declare -rg VM_START_OPTIONS="-X" + +# create vmware directories +mkdir -p "$VM_REDO_DIR" >/dev/null 2>&1 +mkdir -p "$VM_CONF_DIR" >/dev/null 2>&1 +mkdir -p "$VM_HOME/dndlogs" >/dev/null 2>&1 +touch "$VM_HOME/dndlogs/dndlog.conf" >/dev/null 2>&1 + +# link to VM_RUN_FILE if VM_CONF_DIR != VM_REDO_DIR +[ "$VM_CONF_DIR" != "$VM_REDO_DIR" ] && ln -s "$VM_RUN_FILE" "$VM_REDO_DIR/run-vmware.conf" >/dev/null 2>&1 + +# own nvram. We need it for floppy drive b, default nvram has just drive a +if ! cp "${VMWARE_PLUGIN_DIR}/nvram" "$VM_CONF_DIR/nvram"; then + slxlog "virt-vmware-nvram" "Could not copy nvram from '${VMWARE_PLUGIN_DIR}/nvram' '$VM_CONF_DIR/nvram'" +fi + diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/log_config_summary.inc b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/log_config_summary.inc new file mode 100644 index 00000000..a33a8bc6 --- /dev/null +++ b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/log_config_summary.inc @@ -0,0 +1,59 @@ +################################################## +# Include: Print vm config summary into log file # +################################################## + +log_config_summary() { + # write all results to logfile + # log disksetup + writelog "Directories:" + writelog "\tConfig dir:\t\t${VM_CONF_DIR}" + writelog "\tConfig file:\t\t${VM_RUN_FILE}" + writelog "\tRedo dir:\t\t${VM_REDO_DIR}" + writelog "\tVM home:\t\t${VM_HOME}" + writelog "\tDrag n' drop log:\t${VM_HOME}/dndlogs" + writelog "\t/tmp info:\t\t$(grep "/tmp " /proc/mounts) $(df -h | grep " /tmp$" | awk '{print $2}')" + + # hw setup + writelog "Hardware:" + writelog "\tvCPUs:\t\t\t${CPU_CORES}" + writelog "\tVM RAM:\t\t\t${VM_MEM} MB" + writelog "\tMAC:\t\t\t${VM_MAC_ADDR}" + if [ -n "${network_card}" ]; then + writelog "\tNet Adaptor:\t\t${network_card}" + fi + + writelog "\tCD-ROM 1:\t\t${CDROM0}" + writelog "\tCD-ROM 2:\t\t${CDROM1}" + writelog "\tFloppy A:\t\t${FLOPPY0}" + # echo nur wenn HOST_MEM_REMAINING gesetzt + if isset HOST_MEM_REMAINING; then + writelog "\tRemaining host RAM:\t${HOST_MEM_REMAINING} MB" + fi + + # image + writelog "Disk image:" + writelog "\tDisk file:\t\t${VM_DISKFILE_RO}" + if isset VM_DISKFILE_RW; then + writelog "\tDisk mode:\t\twritable" + writelog "\tRW-Layer:\t\t${VM_DISKFILE_RW}" + else + writelog "\tDisk mode:\t\tread-only" + fi + writelog "\tHardware version:\t${VM_HW_VERSION}" + writelog "\tGuest OS:\t\t${VM_OS_TYPE}" + + # misc + writelog "Misc:" + writelog "\tDisplayname:\t\t${VM_DISPLAYNAME}" + if [ "${cap3d}" = "TRUE" -a "${enable3d}" = "TRUE" ]; then + writelog "\t3D Graphics:\tenabled" + fi + if [ "${HGFS_DISABLED}" = "FALSE" ]; then + writelog "\tShared folders:\t\tdisabled" + else + writelog "\tShared folders:\t\tenabled." + fi + # empty line at end + writelog "" +} +call_post_source log_config_summary diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/parse_vmx.inc b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/parse_vmx.inc new file mode 100644 index 00000000..daa77455 --- /dev/null +++ b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/parse_vmx.inc @@ -0,0 +1,22 @@ +###################################################################### +# Include: Parsing the non-legacy delivered vmxfile ${TMPCONFIG} # +###################################################################### +## Functions +parse_vmx() { + writelog "Parsing virtual machine description file..." + local -i HW_VERSION=$(grep -i -m1 '^virtualHW.version *= *' "${TMPCONFIG}" | awk -F '=' '{print $2}' | sed -r 's/[^0-9]//g') + if notempty HW_VERSION; then + declare -rg VM_HW_VERSION="${HW_VERSION}" + return 0 + fi + return 1 +} + +## MAIN ## +if notempty TMPCONFIG; then + call_post_source parse_vmx +else + writelog "Path to VMX file is not set or empty! Aborting..." + EXIT_TYPE="internal" EXIT_REASON="Konnte Pfad zur VMX-Datei nicht finden!" cleanexit 1 +fi + diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/write_final_vmx.inc b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/write_final_vmx.inc new file mode 100644 index 00000000..5ab1d6e9 --- /dev/null +++ b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/write_final_vmx.inc @@ -0,0 +1,227 @@ +################################################ +# Include: Create final VMX configuration file # +################################################ + + +# check for vmdk file marker %VM_DISK_PATH% and put vmdk path in it's place: also VM_DISK_MODE +# and VM_DISK_REDOLOGDIR. +replace_placeholders() { + sed -i 's#%VM_DISK_PATH%#'"$VM_DISKFILE_RO"'#g' "${TMPCONFIG}" + sed -i 's#%VM_DISK_MODE%#'"independent-nonpersistent"'#g' "${TMPCONFIG}" + sed -i 's#%VM_DISK_REDOLOGDIR%#'"$VM_REDO_DIR"'#g' "${TMPCONFIG}" +} + +# Ethernet: All we do is entering a generated MAC, as we do not want to interfere +# in the possible case no networking is wanted. +setup_ethernet() { + echo 'ethernet0.addressType = "static"' >> "${TMPCONFIG}" + echo 'ethernet0.address = "'"${VM_MAC_ADDR}"'"' >> "${TMPCONFIG}" +} + +# DVD, CDROM +setup_optical_drives() { + # XXX: For now it's safe to assume ide channel 1 is free, as we support only one HDD. + # If it's IDE, it's on channel 0 + cat >> "${TMPCONFIG}" <<-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 +} + +setup_floppies() { + local SLX_FLOPPY + if isset SLX_FLOPPY_IMG; then + SLX_FLOPPY="TRUE" + else + SLX_FLOPPY="FALSE" + fi + + # Floppies: + cat >> "${TMPCONFIG}" <<-HEREEND + floppy0.present = "$FLOPPY0" + floppy0.startConnected = "FALSE" + floppy0.autodetect = "TRUE" + floppy0.fileName = "auto detect" + floppy1.present = "$SLX_FLOPPY" + floppy1.startConnected = "TRUE" + floppy1.fileType = "file" + floppy1.fileName = "$SLX_FLOPPY_IMG" + HEREEND +} + +# CPU and RAM +setup_vcpu_ram() { + #writelog "numvcpus = ${CPU_CORES} - maxvcpus=${HOST_CORE_COUNT}" + cat >> "${TMPCONFIG}" <<-HEREEND + numvcpus = "$CPU_CORES" + cpuid.coresPerSocket = "$VM_CORES_PER_SOCKET" + maxvcpus = "$HOST_CORE_COUNT" + memsize = "${VM_MEM}" + MemAllowAutoScaleDown = "FALSE" + MemTrimRate = "-1" + HEREEND +} + +setup_usb() { + # USB fallback: Only write usb config if there's none + if ! grep -q -i "^usb\.present" "${TMPCONFIG}"; then + # Nothing found, go ahead + if [ -n "$SLX_EXAM" ]; then # TODO better handling of exam mode... + # Exam mode: Default to no USB + sed -i '/^usb\./Id' "${TMPCONFIG}" + echo 'usb.present = "FALSE"' >> "${TMPCONFIG}" + else + echo 'usb.present = "TRUE"' >> "${TMPCONFIG}" + fi + fi + sed -i '/^usb\.generic\.autoconnect/Id' "${TMPCONFIG}" + echo 'usb.generic.autoconnect = "TRUE"' >> "${TMPCONFIG}" + + # USB 3.0 support changes quality and has different side effects + # with every minor release of vmware. Always force 2.0 for now. + # TODO: Get it fixed by vmware? + sed -i '/^ehci\.present/Id;/^usb_xhci\.present/Id' "${TMPCONFIG}" + echo 'ehci.present = "TRUE"' >> "${TMPCONFIG}" + + # See if there are any USB devices connected that we want to pass through immediately + get_usb_devices 'usb.autoConnect.deviceXXXXX = "0x%VENDOR%:0x%PRODUCT%"' \ + | sed -r 's/0x0+/0x/g' \ + | awk '{sub(/XXXXX/,NR-1)}1' \ + >> "${TMPCONFIG}" +} + +setup_shared_folders() { + cat >> "${TMPCONFIG}" <<-HEREEND + sharedFolder.option = "alwaysEnabled" + sharedFolder0.present = "$SHARED_FOLDERS" + sharedFolder0.enabled = "$SHARED_FOLDERS" + sharedFolder0.expiration = "never" + sharedFolder0.guestName = "$homesharename" + sharedFolder0.hostPath = "$homesharepath" + sharedFolder0.readAccess = "TRUE" + sharedFolder0.writeAccess = "TRUE" + sharedFolder1.present = "$SHARED_FOLDERS" + sharedFolder1.enabled = "$SHARED_FOLDERS" + sharedFolder1.expiration = "never" + sharedFolder1.guestName = "$commonsharename" + sharedFolder1.hostPath = "$commonsharepath" + sharedFolder1.readAccess = "TRUE" + sharedFolder1.writeAccess = "FALSE" + sharedFolder.maxNum = "2" + hgfs.mapRootShare = "TRUE" + hgfs.linkRootShare = "TRUE" + HEREEND +} + +setup_isolation() { + # Settings for isolation tools (drag & drop, copy & paste, etc...) + cat >> "${TMPCONFIG}" <<-HEREEND + isolation.tools.hgfs.disable = "$HGFS_DISABLED" + isolation.tools.dnd.disable = "FALSE" + isolation.tools.copy.enable = "TRUE" + isolation.tools.paste.enabled = "TRUE" + HEREEND +} + +# Serial, parallel: Empty, nothing is being currently set. TODO later. + +setup_graphics() { + # Graphics, GPU: 3D will be enabled (even if vmware doesn't support the chip) if we whitelisted it. + if isset SLX_VMWARE_3D; then + writelog "FORCE3D set - overriding 3D in vmx file." + echo 'mks.gl.allowBlacklistedDrivers = "TRUE"' >> "${TMPCONFIG}" + # We override... play safe and cap the hwVersion to 10, since some i915 chips goofed up with 12 + # Investigate if we might have to do this in other cases where we don't override + if grep -qi '^mks.enable3d.*true' "${TMPCONFIG}"; then + vmw_cap_hw_version "10" + fi + else + writelog "FORCE3D not set - 3D will only work if GPU/driver is whitelisted by vmware." + fi + + # Disable DPI scaling information passing via vmware tools + sed -i '/^gui.applyHostDisplayScaling/Id' "${TMPCONFIG}" + echo 'gui.applyHostDisplayScalingToGuest = "FALSE"' >> "${TMPCONFIG}" + + # Additinal exam mode settings + if [ -n "$SLX_EXAM" ]; then + echo 'gui.restricted = "true"' >> "${TMPCONFIG}" + fi + + # Hack resolution if we know the desired one is not in the default list of vmx_svga + # For now, only do it on the odd ones, as we don't know if this has any side effects + # This seems unnecessary on Win7 but is required on WinXP - need more research for other OSs + case "$RESOLUTION" in + 1600x900|2560x1440|2880x1800|3200x1800) + X=${RESOLUTION%x*} + Y=${RESOLUTION#*x} + BYTES=$(( ( ( X * Y * 4 + 65535 ) / 65536 ) * 65536 )) + [ "$BYTES" -lt 16777216 ] && BYTES=16777216 + cat >> "${TMPCONFIG}" <<-EOF + svga.autodetect = "FALSE" + svga.vramSize = $BYTES + svga.maxWidth = $X + svga.maxHeight = $Y + EOF + ;; + esac + + # Killing duplicate lines (output much nicer than sort -u): + awk '!a[$0]++' "${TMPCONFIG}" > "${TMPCONFIG}.tmp" && mv -f "${TMPCONFIG}.tmp" "${TMPCONFIG}" +} + +finalize_hardware() { + # Apply $maxhardwareversion to final VMX + if notempty VM_HW_VERSION && [ "$VM_HW_VERSION" -gt "$maxhardwareversion" ]; then + writelog "Hardware version capped to $maxhardwareversion (was $VM_HW_VERSION)" + sed -i 's/^virtualHW\.version.*$/virtualHW.version = "'$maxhardwareversion'"/I' "${TMPCONFIG}" + VM_HW_VERSION="$maxhardwareversion" + fi + + # Enable nested virtualization if not specified in remote vmx + if [ -e "/run/hwinfo" ] && ! grep -qi '^vhv\.enable' "${TMPCONFIG}" \ + && grep -qE '^flags\s*:.*\b(ept|npt)\b' "/proc/cpuinfo" \ + && [ "$VM_HW_VERSION" -ge "9" ]; then + . "/run/hwinfo" + [ "${HW_KVM}" = "ENABLED" ] && echo 'vhv.enable = "TRUE"' >> "${TMPCONFIG}" + fi + + # Disable space check warnings + sed -i '/^mainMem.freeSpaceCheck/Id' "${TMPCONFIG}" + echo 'mainMem.freeSpaceCheck = "FALSE"' >> "${TMPCONFIG}" + + # TODO: Need a way to check if supported by hardware before enabling! + #grep -qi '^vpmc\.enable' "${TMPCONFIG}" || echo 'vpmc.enable = "TRUE"' >> "${TMPCONFIG}" +} + + +## MAIN ## +write_final_vmx() { + replace_placeholders + setup_ethernet + setup_optical_drives + setup_floppies + setup_vcpu_ram + setup_usb + [ "$HGFS_DISABLED" = "FALSE" ] && setup_shared_folders + setup_isolation + setup_graphics + finalize_hardware + + # At last: Let's copy it to $VM_CONF_DIR/run-vmware.conf + if cp -p "${TMPCONFIG}" "${VM_RUN_FILE}"; then + writelog "Copied '${TMPCONFIG}' to '${VM_RUN_FILE}'" + else + writelog "Could not copy TMPDIR/IMGUUID -${TMPCONFIG}- to VM_RUN_FILE ${VM_RUN_FILE}!" + # cleanexit 1 # that seems not needed! + fi +} +call_post_source write_final_vmx + + diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/nvram b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/nvram Binary files differindex 85125f1e..85125f1e 100644 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/nvram +++ b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/nvram diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/run-virt.include b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/run-virt.include new file mode 100644 index 00000000..9d45becf --- /dev/null +++ b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/run-virt.include @@ -0,0 +1,50 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2009..2017 - RZ Uni Freiburg +# Copyright (c) 2009..2017 - 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 vmchooser-run_virt +################################################################################ + +# BASH_SOURCE[0] contains the file being sourced, namely this one +declare -rg VMWARE_PLUGIN_DIR="$(dirname "${BASH_SOURCE[0]}")" +declare -rg VMWARE_INCLUDE_DIR="${VMWARE_PLUGIN_DIR}/includes" + +# TODO make this part of the metadata coming from the server +# Define which features the VMware plugin supports +declare -rg PLUGIN_FEATURES="firewall printer usb slxfloppy sound" + +run_plugin() { + # declaration of default functions and variables for vmware + $(safesource --exit "${VMWARE_INCLUDE_DIR}/init_core.inc") + + # get information from downloaded vmx + $(safesource "${VMWARE_INCLUDE_DIR}/parse_vmx.inc") + + # determine limitations wrt RAM and CPU count of VM + $(safesource "${VMWARE_INCLUDE_DIR}/determine_hardware_limitations.inc") + + # create preferences file ${HOME}/.vmware/preferences + $(safesource "${VMWARE_INCLUDE_DIR}/create_vmhome_preferences_file.inc") + + # parse the given vmx file + $(safesource "${VMWARE_INCLUDE_DIR}/write_final_vmx.inc") + + # print summary - needs writelog() from vmchooser-run_virt + $(safesource "${VMWARE_INCLUDE_DIR}/log_config_summary.inc") + + # For debugging + cp "$VM_RUN_FILE" "/tmp/vmware-last-config" + + # HACK: using the modified version of the wrapper script + declare -rg VIRTCMD="/opt/openslx/bin/vmplayer" + declare -rg VIRTCMDOPTS="${VM_START_OPTIONS} ${VM_RUN_FILE}" +} diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_static_directory_structure.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_static_directory_structure.inc deleted file mode 100644 index 96363de3..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_static_directory_structure.inc +++ /dev/null @@ -1,23 +0,0 @@ -############################### -# Include: Write config files # -############################### - -writelog "Redo directory: ${redodir}" -writelog "Config directory: ${confdir}" -writelog "Config file: ${conffile}" -writelog "vmhome/dndlogs: ${vmhome}/dndlogs" - -# 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 - -# 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/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_vmware_config_file.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_vmware_config_file.inc deleted file mode 100644 index 5d33ce16..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_vmware_config_file.inc +++ /dev/null @@ -1,186 +0,0 @@ -######################################## -# Include: Create vmware startup files # -######################################## - -writelog "Creating vmware configuration file: $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) - vmostype="winvista-64" - MAXMEM="16000" - MAXCORES="2" - ;; - windows7-64) - vmostype="windows7-64" - MAXMEM="32000" - MAXCORES="4" - ;; - windows8-64) - vmostype="windows8-64" - MAXMEM="32000" - MAXCORES="8" - ;; - windows9-64) - vmostype="windows9-64" - MAXMEM="64000" - MAXCORES="8" - ;; - winvista) - vmostype="winvista" - MAXMEM="8000" - MAXCORES="2" - ;; - windows7) - vmostype="windows7" - MAXMEM="8000" - MAXCORES="4" - ;; - windows8) - vmostype="windows8" - MAXMEM="8000" - MAXCORES="4" - ;; - windows9) - vmostype="windows9" - 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 - this encompasses linux too, - # as there is a multitude of different distributions. Perhaps further - # action will be needed if this leads to problems with exotic OSs. - *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/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_vmware_config_file_legacy.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_vmware_config_file_legacy.inc deleted file mode 100644 index 1d6b2185..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/create_vmware_config_file_legacy.inc +++ /dev/null @@ -1,312 +0,0 @@ -######################################## -# 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/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/determine_hardware_limitations.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/determine_hardware_limitations.inc deleted file mode 100644 index 11ea2e3a..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/determine_hardware_limitations.inc +++ /dev/null @@ -1,185 +0,0 @@ -######################################## -# Include: Determine hw limitations depending on hwver and guest os # -######################################## - -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 "$VM_OS_TYPE" in - win31*|windows31*) - VM_OS_TYPE="win31" - shfolders="FALSE" - sound="sb16" - MAXMEM="32" - MAXCORES="1" - ;; - winnt*|windowsnt*) - VM_OS_TYPE="winnt" - shfolders="FALSE" - sound="sb16" - MAXMEM="1000" - MAXCORES="2" - ;; - win95*|windows95*) - VM_OS_TYPE="win95" - shfolders="FALSE" - MAXMEM="96" - MAXCORES="1" - ;; - win98*|windows98*) - VM_OS_TYPE="win98" - MAXMEM="256" - MAXCORES="1" - ;; - winme*|windowsme*) - VM_OS_TYPE="winme" - MAXMEM="384" - MAXCORES="1" - ;; - win2000|windows2000|win2000pro*) - VM_OS_TYPE="win2000pro" - MAXMEM="4000" - MAXCORES="2" - ;; - win2000srv*|windows2000srv*|win2000serv*|windows2000serv*) - VM_OS_TYPE="win2000serv" - shfolders="FALSE" - MAXMEM="4000" - MAXCORES="4" - ;; - win2000adv*|windows2000adv*|win2000dat*|windows2000dat*) - VM_OS_TYPE="win2000advserv" - shfolders="FALSE" - MAXMEM="8000" - MAXCORES="8" - ;; - winnet*64|win*2003*64|windowsnet*64) - VM_OS_TYPE="winnetstandard-64" - MAXMEM="8000" - MAXCORES="8" - ;; - winnet*|win*2003*|windowsnet*) - VM_OS_TYPE="winnetstandard" - MAXMEM="4000" - MAXCORES="8" - ;; - winxphome*|windowsxphome*) - VM_OS_TYPE="winxphome" - MAXMEM="4000" - MAXCORES="2" - ;; - winxp*64|windowsxp*64) - VM_OS_TYPE="winxppro-64" - MAXMEM="8000" - MAXCORES="8" - ;; - winxp*|windowsxp*) - VM_OS_TYPE="winxppro" - MAXMEM="4000" - MAXCORES="4" - ;; - winvista-64) - VM_OS_TYPE="winvista-64" - MAXMEM="16000" - MAXCORES="4" - ;; - windows7-64) - VM_OS_TYPE="windows7-64" - MAXMEM="32000" - MAXCORES="8" - ;; - windows8-64) - VM_OS_TYPE="windows8-64" - MAXMEM="32000" - MAXCORES="8" - ;; - windows9-64) - VM_OS_TYPE="windows9-64" - MAXMEM="64000" - MAXCORES="8" - ;; - winvista) - VM_OS_TYPE="winvista" - MAXMEM="8000" - MAXCORES="2" - ;; - windows7) - VM_OS_TYPE="windows7" - MAXMEM="8000" - MAXCORES="4" - ;; - windows8) - VM_OS_TYPE="windows8" - MAXMEM="8000" - MAXCORES="4" - ;; - windows9) - VM_OS_TYPE="windows9" - MAXMEM="8000" - MAXCORES="4" - ;; - win*64) - MAXMEM="16000" - MAXCORES="4" - ;; - win*) - MAXMEM="8000" - MAXCORES="1" - ;; - dos|msdos*|ms-dos*) - VM_OS_TYPE="dos" - shfolders="FALSE" - MAXMEM="128" - MAXCORES="1" - ;; - macos*64) - VM_OS_TYPE="freebsd-64" - MAXMEM="4000" - MAXCORES="2" - ;; - macos*) - VM_OS_TYPE="freebsd" - MAXMEM="4000" - MAXCORES="1" - ;; - beos*) - VM_OS_TYPE="other" - shfolders="FALSE" - ;; - # Unknown guestOS setting in .xml - this encompasses linux too, - # as there is a multitude of different distributions. Perhaps further - # action will be needed if this leads to problems with exotic OSs. - *64) - VM_OS_TYPE="other-64" - # shfolders="FALSE" - MAXMEM="123456" - MAXCORES="4" - ;; - *) - VM_OS_TYPE="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" ] && [ "$SHARE_REMAP_MODE" != 1 ]; then - HGFS_DISABLED="FALSE" -else - HGFS_DISABLED="TRUE" -fi - -[ "$mem" -ge "$MAXMEM" ] && mem="$MAXMEM" -[ "$HWVER" -lt "7" -a "$mem" -gt "3500" ] && mem="3500" - diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/log_config_summary.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/log_config_summary.inc deleted file mode 100644 index 41986b2a..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/log_config_summary.inc +++ /dev/null @@ -1,60 +0,0 @@ -################################################## -# Include: Print vm config summary into log file # -################################################## - -# log script information -writelog "# File created by $0 (VMware version ${vmware_version})\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\t$macaddr" -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 "\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 - -writelog "Shared folders:" -if [ "${HGFS_DISABLED}" = "FALSE" ]; then - writelog "\tNo shared folders enabled." -else - writelog "\Shared folders enabled." -fi - -# image -writelog "Diskimage:" -writelog "\tDiskfile:\t${VM_DISKFILE_RO}" -writelog "\tHWVersion:\t${HWVER}" -writelog "\tVMostype:\t${VM_OS_TYPE}" - -# misc -writelog "Misc:" -writelog "\tDisplayname:\t${VM_DISPLAYNAME}" -if [ "${cap3d}" = "TRUE" -a "${enable3d}" = "TRUE" ]; then - writelog "\t3D Graphics:\tenabled" -fi -# empty line at end -writelog "" - diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/logging.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/logging.inc deleted file mode 100644 index dc01434d..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/logging.inc +++ /dev/null @@ -1,64 +0,0 @@ -############################### -# Include: Logging and stdout # -############################### - -logging() { - # log script information - writelog "# File created by $0 (VMware version ${vmware_version})\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 - - writelog "Shared folders:" - if [ "${ENABLE_SHARE}" = '' ]; then - writelog "\tNo shared folders enabled." - else - writelog "\Shared folders enabled ($ENABLE_SHARE)" - 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/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/parse_vmx.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/parse_vmx.inc deleted file mode 100644 index dec80e1d..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/parse_vmx.inc +++ /dev/null @@ -1,8 +0,0 @@ -###################################################################### -# Include: Parsing the non-legacy delivered vmxfile ${TMPCONFIG} # -###################################################################### - -writelog "Parsing virtual machine description file..." - -HWVER=$(grep -i -m1 '^virtualHW.version *= *' "${TMPCONFIG}" | awk -F '=' '{print $2}' | sed -r 's/[^0-9]//g') - diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/set_hardware_legacy.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/set_hardware_legacy.inc deleted file mode 100644 index 22718839..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/set_hardware_legacy.inc +++ /dev/null @@ -1,152 +0,0 @@ -######################################### -# 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='ethernet0.virtualDev = "e1000"' -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 -sound_fileName='sound.fileName = "-1" -sound.autodetect = "TRUE"' - -# check for 3D configuration setting -case "$enable3d" in - true|yes) - enable3d="TRUE" - ;; - *) - enable3d="FALSE" - ;; -esac - -# check for whitelisted HW-3D -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/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/set_vmware_include_variables.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/set_vmware_include_variables.inc deleted file mode 100644 index da820bc6..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/set_vmware_include_variables.inc +++ /dev/null @@ -1,25 +0,0 @@ -##################################################################### -# Include: Declaration of vmware run-virt-include default variables # -##################################################################### - -set_vmware_include_variables() { - # 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" - - # users vmware config folder - [ -z "${HOME}" ] && HOME=$(getent passwd "$(whoami)" | awk -F ':' '{print $6}') - vmhome="${HOME}/.vmware" - - # get several version infos for vmware/player - source /opt/openslx/vmchooser/vmware/vmware.conf - - # VMware start options - # "-X": start in fullscreen - vmopt="-X" -} diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/write_config_files.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/write_config_files.inc deleted file mode 100644 index 555688bf..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/write_config_files.inc +++ /dev/null @@ -1,29 +0,0 @@ -############################### -# Include: Write config files # -############################### - -writelog "Redo directory: ${redodir}" -writelog "Config directory: ${confdir}" -writelog "Config file: ${conffile}" -writelog "vmhome/dndlogs: ${vmhome}/dndlogs" - -# 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/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/write_config_files_legacy.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/write_config_files_legacy.inc deleted file mode 100644 index 52a341ba..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/write_config_files_legacy.inc +++ /dev/null @@ -1,29 +0,0 @@ -############################### -# 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 -} diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/write_final_vmx.inc b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/write_final_vmx.inc deleted file mode 100644 index f1395369..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/includes/write_final_vmx.inc +++ /dev/null @@ -1,211 +0,0 @@ - -# check for vmdk file marker %VM_DISK_PATH% and put vmdk path in it's place: also VM_DISK_MODE -# and VM_DISK_REDOLOGDIR. -sed -i 's#%VM_DISK_PATH%#'"$VM_DISKFILE_RO"'#g' "${TMPCONFIG}" -sed -i 's#%VM_DISK_MODE%#'"independent-nonpersistent"'#g' "${TMPCONFIG}" -sed -i 's#%VM_DISK_REDOLOGDIR%#'"$redodir"'#g' "${TMPCONFIG}" - -# 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.addressType = "static"' >> "${TMPCONFIG}" -echo 'ethernet0.address = "'"${macaddr}"'"' >> "${TMPCONFIG}" - -# DVD, CDROM -# XXX: For now it's safe to assume ide channel 1 is free, as we support only one HDD, and if it's IDE, it's on channel 0 -cat >> "${TMPCONFIG}" <<-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 - -if [ -n "$FLOPPYIMG" ]; then - floppy1="TRUE" -else - floppy1="FALSE" -fi - -# Floppies: -cat >> "${TMPCONFIG}" <<-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 = "$FLOPPYIMG" -HEREEND - -writelog "numvcpus = ${cpu_cores} - maxvcpus=${real_core_count}" - -# RAM, CPUs -cat >> "${TMPCONFIG}" <<-HEREEND -numvcpus = "$cpu_cores" -cpuid.coresPerSocket = "$cores_per_socket" -maxvcpus = "$real_core_count" -memsize = "$mem" -MemAllowAutoScaleDown = "FALSE" -MemTrimRate = "-1" -HEREEND - -# USB fallback: Only write usb config if there's none -if ! grep -q -i "^usb\.present" "${TMPCONFIG}"; then - # Nothing found, go ahead - if [ -n "$SLX_EXAM" ]; then - # Exam mode: Default to no USB - sed -i '/^usb\./Id' "${TMPCONFIG}" - echo 'usb.present = "FALSE"' >> "${TMPCONFIG}" - else - cat >> "${TMPCONFIG}" <<-HEREEND - usb.present = "TRUE" - HEREEND - fi -fi -sed -i '/^usb\.generic\.autoconnect/Id' "${TMPCONFIG}" -echo 'usb.generic.autoconnect = "TRUE"' >> "${TMPCONFIG}" -# USB 3.0 support changes quality and has different side effects -# with every minor release of vmware. Always force 2.0 for now. -# TODO: Get it fixed by vmware? -sed -i '/^ehci\.present/Id;/^usb_xhci\.present/Id' "${TMPCONFIG}" -echo 'ehci.present = "TRUE"' >> "${TMPCONFIG}" - -# shared folders -if [ "$HGFS_DISABLED" = "FALSE" ]; then - cat >> "${TMPCONFIG}" <<-HEREEND - sharedFolder.option = "alwaysEnabled" - 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 = "FALSE" - sharedFolder.maxNum = "2" - hgfs.mapRootShare = "TRUE" - hgfs.linkRootShare = "TRUE" - HEREEND -fi - -# Isolation tools: settings -cat >> "${TMPCONFIG}" <<-HEREEND -isolation.tools.hgfs.disable = "$HGFS_DISABLED" -isolation.tools.dnd.disable = "FALSE" -isolation.tools.copy.enable = "TRUE" -isolation.tools.paste.enabled = "TRUE" -HEREEND - -# Serial port -if [ -n "$serial_0" ]; then - cat >> "${TMPCONFIG}" <<-HEREEND - serial0.present = "TRUE" - serial0.startConnected = "TRUE" - serial0.fileType = "device" - serial0.fileName = "$serial_0" - serial0.tryNoRxLoss = "FALSE" - serial0.autodetect = "FALSE" - HEREEND -fi - -# Parallel port -if [ -n "$parallel_0" ]; then - cat >> "${TMPCONFIG}" <<-HEREEND - parallel0.present = "TRUE" - parallel0.startConnected = "TRUE" - parallel0.fileType = "device" - parallel0.fileName = "$parallel_0" - parallel0.bidirectional = "TRUE" - parallel0.autodetect = "FALSE" - HEREEND -fi - -# Graphics, GPU: 3D will be enabled (even if vmware doesn't support the chip) if we whitelisted it. -if [ -n "$SLX_VMWARE_3D" ]; then - writelog "FORCE3D set - overriding 3D in vmx file." - echo 'mks.gl.allowBlacklistedDrivers = "TRUE"' >> "${TMPCONFIG}" - # We override... play safe and cap the hwVersion to 10, since some i915 chips goofed up with 12 - # Investigate if we might have to do this in other cases where we don't override - if grep -qi '^mks.enable3d.*true' "${TMPCONFIG}"; then - vmw_cap_hw_version "10" - fi -else - writelog "FORCE3D not set - 3D will only work if GPU/driver is whitelisted by vmware." -fi - -# Disable DPI scaling information passing via vmware tools -sed -i '/^gui.applyHostDisplayScaling/Id' "${TMPCONFIG}" -echo 'gui.applyHostDisplayScalingToGuest = "FALSE"' >> "${TMPCONFIG}" - -# Additinal exam mode settings -if [ -n "$SLX_EXAM" ]; then - echo 'gui.restricted = "true"' >> "${TMPCONFIG}" -fi - -# Hack resolution if we know the desired one is not in the default list of vmx_svga -# For now, only do it on the odd ones, as we don't know if this has any side effects -# This seems unnecessary on Win7 but is required on WinXP - need more research for other OSs -case "$RESOLUTION" in - 1600x900|2560x1440|2880x1800|3200x1800) - X=${RESOLUTION%x*} - Y=${RESOLUTION#*x} - BYTES=$(( ( ( X * Y * 4 + 65535 ) / 65536 ) * 65536 )) - [ "$BYTES" -lt 16777216 ] && BYTES=16777216 - cat >> "${TMPCONFIG}" <<-EOF - svga.autodetect = "FALSE" - svga.vramSize = $BYTES - svga.maxWidth = $X - svga.maxHeight = $Y - EOF - ;; -esac - -# Killing duplicate lines (output much nicer than sort -u): -awk '!a[$0]++' "${TMPCONFIG}" > "${TMPCONFIG}.tmp" && mv -f "${TMPCONFIG}.tmp" "${TMPCONFIG}" - -# Apply $maxhardwareversion to final VMX -if [ -n "$HWVER" ] && [ "$HWVER" -gt "$maxhardwareversion" ]; then - writelog "Hardware version capped to $maxhardwareversion (was $HWVER)" - sed -i 's/^virtualHW\.version.*$/virtualHW.version = "'$maxhardwareversion'"/I' "${TMPCONFIG}" - HWVER="$maxhardwareversion" -fi - -# Enable nested virtualization if not specified in remote vmx -if [ -e "/run/hwinfo" ] && ! grep -qi '^vhv\.enable' "${TMPCONFIG}" \ - && grep -qE '^flags\s*:.*\b(ept|npt)\b' "/proc/cpuinfo" \ - && [ "$HWVER" -ge "9" ]; then - . "/run/hwinfo" - [ "${HW_KVM}" = "ENABLED" ] && echo 'vhv.enable = "TRUE"' >> "${TMPCONFIG}" -fi -# TODO: Need a way to check if supported by hardware before enabling! -#grep -qi '^vpmc\.enable' "${TMPCONFIG}" || echo 'vpmc.enable = "TRUE"' >> "${TMPCONFIG}" - -# Disable space check warnings -sed -i '/^mainMem.freeSpaceCheck/Id' "${TMPCONFIG}" -echo 'mainMem.freeSpaceCheck = "FALSE"' >> "${TMPCONFIG}" - -# See if there are any USB devices connected that we want to pass through immediately -get_usb_devices 'usb.autoConnect.deviceXXXXX = "0x%VENDOR%:0x%PRODUCT%"' \ - | sed -r 's/0x0+/0x/g' \ - | awk '{sub(/XXXXX/,NR-1)}1' \ - >> "${TMPCONFIG}" - -# At last_ Let's copy it to $confdir/run-vmware.conf -if cp -p "${TMPCONFIG}" "$conffile"; then - writelog "Copied TMPDIR/IMGUUID ${TMPCONFIG} to conffile ${conffile}" -else - writelog "Could not copy TMPDIR/IMGUUID -${TMPCONFIG}- to conffile ${conffile}!" - cleanexit 1 -fi - diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include b/core/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include deleted file mode 100644 index f66bc9b8..00000000 --- a/core/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include +++ /dev/null @@ -1,60 +0,0 @@ -# ----------------------------------------------------------------------------- -# 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 vmchooser-run_virt -################################################################################ - -################################################################################ -### configuration writer functions -### This needs bash, not dash or ash! (indented HEREDOC) -################################################################################ - -VMWAREINCLUDEDIR=/opt/openslx/vmchooser/vmware/includes -VM_OS_TYPE=$(rv_clean_string "$VM_OS_TYPE") - -# declaration of default variables for vmware -source "${VMWAREINCLUDEDIR}/set_vmware_include_variables.inc" && set_vmware_include_variables -# General global openslx config -source /opt/openslx/config - -# TODO: Where to put global helper functions that could be used in several units below? -vmw_cap_hw_version() { - [ -z "$1" ] && writelog "cap_hw_version called without parameter!" && return 1 - [ "$1" -lt "$maxhardwareversion" ] && maxhardwareversion="$1" -} - -# get information from downloaded vmx -source "${VMWAREINCLUDEDIR}/parse_vmx.inc" - -# determine limitations wrt RAM and CPU count of VM -source "${VMWAREINCLUDEDIR}/determine_hardware_limitations.inc" - -# create file and directory structure for vmware setup -source "${VMWAREINCLUDEDIR}/create_static_directory_structure.inc" - -# create preferences file ${vmhome}/preferences -source "${VMWAREINCLUDEDIR}/create_vmhome_preferences_file.inc" && create_vmhome_preferences_file - -# parse the given vmx file -source "${VMWAREINCLUDEDIR}/write_final_vmx.inc" - -# print summary - needs writelog() from vmchooser-run_virt -source "${VMWAREINCLUDEDIR}/log_config_summary.inc" - -# For debugging -cp "$conffile" "/tmp/vmware-last-config" - -# using the modified version of the wrapper script -VIRTCMD="/opt/openslx/bin/vmplayer" -VIRTCMDOPTS="${vmopt} ${conffile}" - diff --git a/core/modules/vmware/module.build b/core/modules/vmware/module.build index f321b084..f5009fea 100644 --- a/core/modules/vmware/module.build +++ b/core/modules/vmware/module.build @@ -98,11 +98,9 @@ build() { unlink "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE" # write vmware.conf config file to be later sourced by vmware/run-virt.include. - # This file was formerly stored in data/opt/openslx/vmchooser/vmware/vmware.conf. + mkdir -p "${MODULE_BUILD_DIR}/opt/openslx/vmchooser/plugins/vmware/" || perror "Could not mkdir "${MODULE_BUILD_DIR}/opt/openslx/vmchooser/plugins/vmware/"." - mkdir -p "${MODULE_BUILD_DIR}/opt/openslx/vmchooser/vmware/" || perror "could not mkdir "${MODULE_BUILD_DIR}/opt/openslx/vmchooser/vmware/"." - - cat > "${MODULE_BUILD_DIR}/opt/openslx/vmchooser/vmware/vmware.conf" <<-EOF + cat > "${MODULE_BUILD_DIR}/opt/openslx/vmchooser/plugins/vmware/vmware.conf" <<-EOF # configuration file written by vmware/module.build vmnet0=true vmnet1=192.168.101.1/24 diff --git a/core/modules/vmware/module.conf b/core/modules/vmware/module.conf index 02770c34..50fc0d3d 100644 --- a/core/modules/vmware/module.conf +++ b/core/modules/vmware/module.conf @@ -18,7 +18,7 @@ REQUIRED_DIRECTORIES=" REQUIRED_FILES=" /usr/lib/vmware/config /usr/bin/vmware-usbarbitrator - /opt/openslx/vmchooser/vmware/vmware.conf + /opt/openslx/vmchooser/plugins/vmware/vmware.conf " REQUIRED_BINARIES=" vmnet-netifup |