# run-virt.include # ----------------------------------------------------------------------------- # Copyright (c) 2009 - RZ Uni Freiburg # Copyright (c) 2009 - 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 # ----------------------------------------------------------------------------- # include general configuration from vmchooser . /etc/opt/openslx/run-virt.include # configuration writer functions ################################################################################ runvmwareconfheader () { echo "# This configuration file was generated by $0" >${conffile} case "$vmversion" in 1.0|5.5) shared_folder="FALSE" echo " # version specific stuff config.version = \"8\" virtualHW.version = \"4\"" >>${conffile} ;; 2.0|6.0) shared_folder="TRUE" echo " # version specific stuff config.version = \"8\" virtualHW.version = \"6\" sharedFolder.option = \"alwaysEnabled\"" >>${conffile} ;; 2.5|6.5) shared_folder="TRUE" echo " # version specific stuff config.version = \"8\" virtualHW.version = \"7\" ehci.present= \"TRUE\" sharedFolder.option = \"alwaysEnabled\" mks.enable3d = \"FALSE\"" >>${conffile} ;; esac echo " # id displayName = \"${displayname}\" guestOS = \"${vmostype}\" # CPU/MEM memsize = \"${mem}\" MemAllowAutoScaleDown = \"FALSE\" MemTrimRate = \"-1\" numvcpus = \"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 = \"lsilogic\" #\"${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\" #ethernet0.virtualDev = \"e1000\" ethernet0.connectionType = \"${network_kind}\" #ethernet1.connectionType = \"custom\" #ethernet1.vnet = \"/dev/vmnet2\" ethernet0.address = \"00:50:56:0D:${mac}\" ethernet0.wakeOnPcktRcv = \"FALSE\" # sound sound.present = \"TRUE\" sound.fileName = \"-1\" sound.autodetect = \"TRUE\" # svga svga.autodetect = \"TRUE\" # usb usb.present = \"TRUE\" usb.generic.autoconnect = \"TRUE\" # shared folders sharedFolder0.present = \"TRUE\" sharedFolder0.enabled = \"${shared_folder}\" sharedFolder0.expiration = \"never\" sharedFolder0.guestName = \"Home\" sharedFolder0.hostPath = \"${HOME}\" 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}" >>${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.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.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 ################################################################################ # temporary disk space for logs, etc... redodir=/tmp/vmware/${USER} # dir for configs and vmem file confdir=${redodir} # configfile conffile="${confdir}/run-vmware.conf" # users vmware config folder vmhome="${HOME}/.vmware" # serial port defined (e.g. "ttyS0" or "autodetect") serial=$(grep -i ">${redodir}/run-vmware.${USER}.log } # Delete the LOCK file. its insecure, but ... rm -f ${confdir}/*LOCK >/dev/null 2>&1 # create vmware directories mkdir -p ${redodir} >/dev/null 2>&1 mkdir -p ${confdir} >/dev/null 2>&1 mkdir -p ${vmhome} >/dev/null 2>&1 # log script information writelog "# File created by $0 (v.${version})\n# on $(date)\n" writelog "Starting with non-persistent 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:0D:${mac}" writelog "\tMem:\t\t${mem} MB" writelog "\tHostmem:\t${memhost} MB" writelog "\tMax. res.:\t${xres}x${yres}" writelog "\tCD-ROM1:\t${cdrom0}" writelog "\tCD-ROM2:\t${cdrom1}" writelog "\tFloppy_A:\t${floppy0}" # Image writelog "Diskimage:" writelog "\tDiskfile:\t${diskfile}" writelog "\tDisktype:\t${hddrv}" writelog "\tVMostype:\t${vmostype}" writelog "\tDisplayname:\t${displayname}" # check if image exists, etc... #filecheck ### write configuration files ################################################## # create preferences preferencesheader # create VMware startup file runvmwareconfheader # 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.5.0 ${confdir}/nvram 2>/dev/null done # set the variables appropriately VIRTCMD=vmplayer VIRTCMDOPTS="${vmopt} ${conffile}"