From 416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5 Mon Sep 17 00:00:00 2001 From: Sebastian Schmelzer Date: Thu, 2 Sep 2010 17:50:49 +0200 Subject: change dir structure --- .../plugins/vmware/files/run-virt.include | 448 +++++++++++++++++++++ 1 file changed, 448 insertions(+) create mode 100644 src/os-plugins/plugins/vmware/files/run-virt.include (limited to 'src/os-plugins/plugins/vmware/files/run-virt.include') diff --git a/src/os-plugins/plugins/vmware/files/run-virt.include b/src/os-plugins/plugins/vmware/files/run-virt.include new file mode 100644 index 00000000..2010dc4b --- /dev/null +++ b/src/os-plugins/plugins/vmware/files/run-virt.include @@ -0,0 +1,448 @@ +# run-virt.include +# ----------------------------------------------------------------------------- +# Copyright (c) 2009..2010 - RZ Uni Freiburg +# Copyright (c) 2009..2010 - OpenSLX GmbH +# +# This program is free software distributed under the GPL version 2. +# See http://openslx.org/COPYING +# +# If you have any feedback please consult http://openslx.org/feedback and +# send your suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# run-virt.include +# - component for vmware/player of the vmchooser plugin run-virt.sh +################################################################################ + +# configuration writer functions +################################################################################ + +runvmwareconfheader () +{ +echo "# This configuration file was generated by $0" >${conffile} + +case "$vmversion" in + *) + svga_autodetect="TRUE" + numvcpus="1" + shared_folder="FALSE" + echo ".encoding = \"UTF-8\" +# version specific stuff - all versions +config.version = \"8\"" >>${conffile} + ;; +esac +case "$vmversion" in + 2.*|3.*|6.*|7.*) + shared_folder="TRUE" + echo " +# version specific stuff - ver. 2.*|3.*|6.*|7.* +sharedFolder.option = \"alwaysEnabled\"" >>${conffile} + ;; +esac +case "$vmversion" in + 2.5|3.*|6.5|7.*) + if [ "${cpu_cores}" -ge "2" 2>/dev/null ]; then + numvcpus="2" + fi + cap3d="TRUE" # helper var for loging output + echo " +# version specific stuff - ver. 2.5|3.*|6.5|7.* +ehci.present = \"TRUE\" +mks.enable3d = \"${enable3d}\"" >>${conffile} + ;; +esac +case "$vmversion" in + 3.*|7.*) + numvcpus="${cpu_cores}" + # svga_autodetect="FALSE" # if defined manual, see below + echo " +# version specific stuff - ver. 3.*|7.* +cpuid.coresPerSocket = \"${cpu_cores}\" +maxvcpus = \"4\" +# svga.numDisplays = "2" +# svga.maxWidth = "2560" +# svga.maxHeight = "2048" +# svga.vramSize = "134217728" +monitor.virtual_mmu = \"automatic\" +monitor.virtual_exec = \"automatic\" +floppy1.clientDevice = \"FALSE\" +floppy1.readonly = \"TRUE\"" >>${conffile} + ;; +esac + +echo " +# id +virtualHW.version = \"${hwver}\" +displayName = \"${displayname}\" +guestOS = \"${vmostype}\" + +# CPU/MEM +numvcpus = \"${numvcpus}\" +memsize = \"${mem}\" +MemAllowAutoScaleDown = \"FALSE\" +MemTrimRate = \"-1\" + +# ide-disks +ide0:0.present = \"${ide}\" +ide0:0.fileName = \"${diskfile}\" +ide0:0.mode = \"independent-nonpersistent\" +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 = \"${diskfile}\" +scsi0.virtualDev = \"${hddrv}\" +scsi0:0.mode = \"independent-nonpersistent\" + +# floppies +floppy0.present = \"${floppy0}\" +floppy0.startConnected = \"FALSE\" +floppy0.autodetect = \"TRUE\" +floppy0.fileName = \"auto detect\" +# we need floppy b: for our windows client configuration +floppy1.present = \"${floppy1}\" +floppy1.startConnected = \"TRUE\" +floppy1.fileType = \"file\" +floppy1.fileName = \"${floppy1name}\" + +# nics +ethernet0.present = \"TRUE\" +ethernet0.addressType = \"static\" +${network_virtualDev} +ethernet0.connectionType = \"${network_kind}\" +#ethernet1.connectionType = \"custom\" +#ethernet1.vnet = \"/dev/vmnet2\" +ethernet0.address = \"00:50:56:${VM_ID}:${machostpart}\" +ethernet0.wakeOnPcktRcv = \"FALSE\" + +# sound +sound.present = \"TRUE\" +sound.fileName = \"-1\" +sound.autodetect = \"TRUE\" + +# svga +svga.autodetect = \"${svga_autodetect}\" + +# usb +usb.present = \"TRUE\" +usb.generic.autoconnect = \"TRUE\" + +# shared folders +sharedFolder0.present = \"TRUE\" +sharedFolder0.enabled = \"${shared_folder}\" +sharedFolder0.expiration = \"never\" +sharedFolder0.guestName = \"${sharename}\" +sharedFolder0.hostPath = \"${sharepath}\" +sharedFolder0.readAccess = \"TRUE\" +sharedFolder0.writeAccess = \"TRUE\" +sharedFolder.maxNum = \"1\" + +# dirs/configs +tmpDirectory = \"${redodir}\" +redoLogDir = \"${redodir}\" +mainMem.useNamedFile = \"TRUE\" +snapshot.disabled = \"TRUE\" +tools.syncTime = \"TRUE\" +isolation.tools.hgfs.disable = \"FALSE\" +hgfs.mapRootShare = \"TRUE\" +isolation.tools.dnd.disable = \"FALSE\" +isolation.tools.copy.enable = \"TRUE\" +isolation.tools.paste.enabled = \"TRUE\" + +# serial port +serial0.present = \"${serial}\" +${serialdev} + +# parallel port +parallel0.present = \"${parallel}\" +parallel0.bidirectional = \"${paralbidi}\" +${paraldev}" >>${conffile} + +# set the appropriate permissions for the vmware config file +chmod u+rwx ${conffile} >/dev/null 2>&1 +} + +preferencesheader () +{ +echo ".encoding = \"UTF-8\" +# This configuration file was generated by $0 + +# updates/tips +webUpdate.enabled = \"FALSE\" +pref.downloadPermission = \"deny\" +pref.vmplayer.downloadPermission = \"deny\" +pref.vmplayer.webUpdateOnStartup = \"FALSE\" +pref.tip.startup = \"FALSE\" +hints.hideAll = \"TRUE\" +hint.vmui.showAllUSBDevs = \"FALSE\" + +# configs +prefvmx.defaultVMPath = \"${vmhome}\" +prefvmx.mru.config = \"${conffile}:\" + +# hot keys +pref.hotkey.control = \"true\" +pref.hotkey.alt = \"true\" +pref.hotkey.shift = \"true\" +pref.hotkey.gui = \"true\" +gui.restricted = \"true\" + +# fullscreen/mouse/keyboard +pref.fullscreen.toolbarPixels = \"0\" +pref.vmplayer.fullscreen.autohide = \"TRUE\" +pref.grabOnMouseClick = \"TRUE\" +pref.grabOnKeyPress = \"FALSE\" +pref.motionGrab = \"TRUE\" +pref.motionUngrab = \"TRUE\" +pref.hideCursorOnUngrab = \"TRUE\" +pref.autoFit = \"TRUE\" +pref.autoFitFullScreen = \"fitGuestToHost\" +pref.vmplayer.exit.vmAction = \"poweroff\" +pref.vmplayer.confirmOnExit = \"TRUE\" + +# shared folders +pref.enableAllSharedFolders = \"TRUE\" + +# eula +pref.eula.size = \"2\" +pref.eula.0.appName = \"VMware Player\" +pref.eula.0.buildNumber = \"${vmbuild}\" +pref.eula.1.appName = \"VMware Workstation\" +pref.eula.1.buildNumber = \"${vmbuild}\"" >${vmhome}/preferences +} + + +# declaration of default variables +################################################################################ + +# VM-ID static (0D), remove if changed to 00 +VM_ID="0D" +# temporary disk space for logs, etc... +redodir=/tmp/vmware/${USER} +# dir for configs and vmem file +confdir=${redodir} +# configfile +conffile="${confdir}/run-vmware.conf" +# diskfile +diskfile=${vmpath} +# users vmware config folder +vmhome="${HOME}/.vmware" + +# get several version infos for vmware/player +. ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf +vmbuild=$buildversion +vmversion=$version + +# VMware start options +# "-X": start in fullscreen +vmopt="-X" + + +# hardware checks +################################################################################ + +# use different network card +if [ -n "${network_card}" ]; then + network_virtualDev='ethernet0.virtualDev = "e1000"' +else + network_virtualDev='# using default virtualDev for ethernet0' +fi + +case "$enable3d" in + *true*|*TRUE*|*yes*|*YES*) + enable3d="TRUE" + ;; + *) + enable3d="FALSE" + ;; +esac + +# serial/parallel port defined (e.g. "ttyS0, lp0" or "autodetect") +case "$serial" in + tty*) + serialdev="serial0.filename = \"/dev/${serial}\"" + serial="TRUE" + ;; + auto*) + serialdev="serial0.autodetect = \"TRUE\"" + serial="TRUE" + ;; + *) + serialdev="# no serial port configured" + serial="FALSE" + ;; +esac +case "$parallel" in + lp*|parport*) + paraldev="parallel0.filename = \"/dev/${parallel}\"" + paralbidi="TRUE" + parallel="TRUE" + ;; + auto*) + paraldev="parallel0.autodetect = \"TRUE\"" + paralbidi="TRUE" + parallel="TRUE" + ;; + *) + paraldev="# no parallel port configured" + paralbidi="FALSE" + parallel="FALSE" + ;; +esac + +# adjust memory available for vmware guests +#if [ -n "${forcemem}" ]; then +# mem="${forcemem}" +#else +# case "$vmversion" in +# 2.*|6.*) +# permem=30 +# ;; +# 3.*|7.*) +# permem=25 +# ;; +# esac +# if [ "${totalmem}" -ge "2500" ]; then +# permem=40 +# fi +# # check if /tmp is on harddisk +# if grep -qe "/dev/.* /tmp " /proc/mounts ; then +# permem=60 +# id44="1" +# # Hack, if more than 2,5G RAM use 40% of Ram and write vmem into Ram as well +# # (40% vmware | 40% confdir(vmem...) | 20% host +# # VMplayer 2+ issue +# if [ "${totalmem}" -ge "2500" ]; then +# permem=40 +# confdir=/dev/shm/vmware/$USER +# conffile=${confdir}/run-vmware.conf +# mkdir -p /dev/shm/vmware/$USER +# fi +# fi +# mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4) +# if [ "${id44}" = "1" ]; then +# hostmem=$(expr ${totalmem} - ${mem}) +# else +# hostmem=$(expr ${totalmem} - ${mem} - ${mem}) +# fi +#fi + +# check if ide/scsi and hwver of image +# read only the first 30 lines to be shure +imghead=$(head -30 ${diskfile}) +hddrv=$(echo "${imghead}" | grep -m1 -ia "ddb.adapterType" |\ + awk -F '"' '{print $2}') +hwver=$(echo "${imghead}" | grep -m1 -ia "ddb.virtualHWVersion" |\ + awk -F '"' '{print $2}') +case "${hddrv}" in + ide) + ide="TRUE" + scsi="FALSE" + ;; + lsilogic|buslogic) + ide="FALSE" + scsi="TRUE" + ;; +esac + + +# write configuration files +################################################################################ + +# create vmware directories +mkdir -p ${redodir} >/dev/null 2>&1 +mkdir -p ${confdir} >/dev/null 2>&1 +mkdir -p ${vmhome} >/dev/null 2>&1 + +# create preferences +preferencesheader + +# create VMware startup file +runvmwareconfheader +# link to conffile if confdir != redodir +ln -s ${conffile} ${redodir}/run-vmware.conf >/dev/null 2>&1 + +# sync is needed to ensure that data is really written to virtual disk +sync + +# own nvram. We need it for floppy drive b, default nvram has just drive a +# TODO: optimize, currently kinda inefficient, too much copys, but we +# don't know which one is installed... +for i in /opt/openslx/plugin-repo/vmware/*; do + cp ${i}/nvram ${confdir}/nvram 2>/dev/null +done + + +# logging and stdout +################################################################################ + +# log script information +writelog "# File created by $0 (VMversion ${vmversion})\n# on $(date)\n" +writelog "Starting with non-persistent mode ...\n" + +# check memory range +if [ "${mem}" -lt "256" ] || [ "${hostmem}" -lt "256" ]; then + writelog "\tMemory out of range: ${mem} MB (guest) / ${hostmem} MB (host)!" + writelog "\tMin. 256 MB for host and guest!" + exit 1 +fi + +# write all results to logfile +# log disksetup +writelog "Directories:" +writelog "\tConfdir:\t${confdir}" +writelog "\tConffile:\t${conffile}" +writelog "\tRedodir:\t${redodir}" +writelog "\tVMhome:\t\t${vmhome}" +writelog "\t/tmp info: \ + $(grep "/tmp " /proc/mounts) $(df -h | grep " /tmp$" | awk '{print $2}')" +# hw setup +writelog "Hardware:" +writelog "\tMAC:\t\t00:50:56:${VM_ID}:${machostpart}" +if [ -n "${network_card}" ]; then + writelog "\tNet Adaptor:\t${network_card}" +fi +writelog "\tMem:\t\t${mem} MB" +# echo nur wenn hostmem gesetzt +[ -n "${hostmem}" ] && writelog "\tHostmem:\t${hostmem} MB" +writelog "\tMax. res.:\t${xres}x${yres}" +writelog "\tCD-ROM1:\t${cdrom0}" +writelog "\tCD-ROM2:\t${cdrom1}" +writelog "\tFloppy_A:\t${floppy0}" +if [ "${serial}" = "TRUE" ]; then + writelog "\tSerial Port:\t${serialdev}" +fi +if [ "${parallel}" = "TRUE" ]; then + writelog "\tParallel Port:\t${paraldev}" +fi +# image +writelog "Diskimage:" +writelog "\tDiskfile:\t${diskfile}" +writelog "\tDisktype:\t${hddrv}" +writelog "\tHWVersion:\t${hwver}" +writelog "\tVMostype:\t${vmostype}" +# misc +writelog "Misc:" +writelog "\tDisplayname:\t${displayname}" +if [ "${cap3d}" = "TRUE" -a "${enable3d}" = "TRUE" ]; then + writelog "\t3D Graphics:\tenabled" +fi +# empty line at end +writelog "" + + +# finally set env for run-virt.sh +################################################################################ + +# using the modified version of the wrapper script +VIRTCMD="${OPENSLX_DEFAULT_BINDIR}/vmplayer" +VIRTCMDOPTS="${vmopt} ${conffile}" -- cgit v1.2.3-55-g7522