From 9e13a8aa47cf7c11020793c312e478424266c56a Mon Sep 17 00:00:00 2001 From: Dirk von Suchodoletz Date: Mon, 22 Dec 2008 19:41:06 +0000 Subject: Starting with qemukvm plugin (another virtualisation environment). See #312 too ... git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@2445 95ad53e4-c205-0410-b2fa-d234c58c8868 --- os-plugins/plugins/qemukvm/OpenSLX/Distro/Base.pm | 59 +++ .../plugins/qemukvm/OpenSLX/Distro/Debian.pm | 41 ++ os-plugins/plugins/qemukvm/OpenSLX/Distro/Suse.pm | 43 ++ .../plugins/qemukvm/OpenSLX/Distro/Ubuntu.pm | 23 + .../plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm | 158 +++++++ os-plugins/plugins/qemukvm/XX_qemukvm.sh | 66 +++ os-plugins/plugins/qemukvm/files/run-qemukvm | 510 +++++++++++++++++++++ 7 files changed, 900 insertions(+) create mode 100644 os-plugins/plugins/qemukvm/OpenSLX/Distro/Base.pm create mode 100644 os-plugins/plugins/qemukvm/OpenSLX/Distro/Debian.pm create mode 100644 os-plugins/plugins/qemukvm/OpenSLX/Distro/Suse.pm create mode 100644 os-plugins/plugins/qemukvm/OpenSLX/Distro/Ubuntu.pm create mode 100644 os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm create mode 100644 os-plugins/plugins/qemukvm/XX_qemukvm.sh create mode 100644 os-plugins/plugins/qemukvm/files/run-qemukvm (limited to 'os-plugins') diff --git a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Base.pm b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Base.pm new file mode 100644 index 00000000..603942a2 --- /dev/null +++ b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Base.pm @@ -0,0 +1,59 @@ +# Copyright (c) 2008 - 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/ +# ----------------------------------------------------------------------------- +# qemukvm/OpenSLX/Distro/Base.pm +# - provides base implementation of the Distro API for the qemukvm plugin. +# ----------------------------------------------------------------------------- +package qemukvm::OpenSLX::Distro::Base; + +use strict; +use warnings; + +our $VERSION = 1.01; # API-version . implementation-version + +use OpenSLX::Basics; +use OpenSLX::Utils; + +################################################################################ +### interface methods +################################################################################ +sub new +{ + my $class = shift; + my $self = {}; + return bless $self, $class; + +} + +sub initialize +{ + my $self = shift; + my $engine = shift; + + return 1; +} + +sub fillRunlevelScript +{ + my $self = shift; + my $location = shift; + my $kind = shift; + + my $script = unshiftHereDoc(<<" End-of-Here"); + + # cpuvirt=$(grep -e "vmx|svm" /proc/cpuinfo) + # modprobe $cpuvirt + + End-of-Here + + return $script; +} + +1; diff --git a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Debian.pm new file mode 100644 index 00000000..94a06009 --- /dev/null +++ b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Debian.pm @@ -0,0 +1,41 @@ +# Copyright (c) 2008 - 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/ +# ----------------------------------------------------------------------------- +# qemukvm/OpenSLX/Distro/debian.pm +# - provides Debian-specific overrides of the Distro API for the qemukvm +# plugin. +# ----------------------------------------------------------------------------- +package qemukvm::OpenSLX::Distro::Debian; + +use strict; +use warnings; + +use base qw(qemukvm::OpenSLX::Distro::Base); + +use OpenSLX::Basics; +use OpenSLX::Utils; + +################################################################################ +### interface methods +################################################################################ + +sub fillRunlevelScript +{ + my $self = shift; + my $location = shift; + my $kind = shift; + + my $script = unshiftHereDoc(<<' End-of-Here'); + + End-of-Here + return $script; +} + +1; diff --git a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Suse.pm new file mode 100644 index 00000000..a72f11c7 --- /dev/null +++ b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Suse.pm @@ -0,0 +1,43 @@ +# Copyright (c) 2008 - 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/ +# ----------------------------------------------------------------------------- +# qemukvm/OpenSLX/Distro/Suse.pm +# - provides SUSE specific overrides of the distro API for the qemukvm +# plugin. +# ----------------------------------------------------------------------------- +package qemukvm::OpenSLX::Distro::Suse; + +use strict; +use warnings; + +use base qw(qemukvm::OpenSLX::Distro::Base); + +use OpenSLX::Basics; +use OpenSLX::Utils; + +################################################################################ +### interface methods +################################################################################ + +sub fillRunlevelScript +{ + my $self = shift; + my $location = shift; + my $kind = shift; + + my $script = bla; + + # cpuvirt=$(grep -e "vmx|svm" /proc/cpuinfo) + # modprobe $cpuvirt + + return $script; +} + +1; diff --git a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Ubuntu.pm new file mode 100644 index 00000000..9b318a22 --- /dev/null +++ b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Ubuntu.pm @@ -0,0 +1,23 @@ +# Copyright (c) 2008 - 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/ +# ----------------------------------------------------------------------------- +# qemukvm/OpenSLX/Distro/Ubuntu.pm +# - provides Ubuntu-specific overrides of the Distro API for the qemukvm +# plugin. +# ----------------------------------------------------------------------------- +package qemukvm::OpenSLX::Distro::Ubuntu; + +use strict; +use warnings; + +# inherit everything from Debian (as Ubuntu is based on it anyway) +use base qw(qemukvm::OpenSLX::Distro::Debian); + +1; diff --git a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm new file mode 100644 index 00000000..2d49ede7 --- /dev/null +++ b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm @@ -0,0 +1,158 @@ +# Copyright (c) 2008 - 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/ +# ----------------------------------------------------------------------------- +# vmware.pm +# - declares necessary information for the qemukvmplugin +# ----------------------------------------------------------------------------- +package OpenSLX::OSPlugin::vmware; + +use strict; +use warnings; + +use base qw(OpenSLX::OSPlugin::Base); + +use File::Basename; +use File::Path; + +use OpenSLX::Basics; +use OpenSLX::Utils; + +sub new +{ + my $class = shift; + + my $self = { + name => 'qemukvm', + }; + + return bless $self, $class; +} + +sub getInfo +{ + my $self = shift; + + return { + description => unshiftHereDoc(<<' End-of-Here'), + Module for enabling services for the Linux kvm using qemu for + IO on an OpenSLX stateless client. + End-of-Here + precedence => 70, + required => [ qw( desktop ) ], + }; +} + +sub getAttrInfo +{ + # returns a hash-ref with information about all attributes supported + # by this specific plugin + my $self = shift; + + # This default configuration will be added as attributes to the default + # system, such that it can be overruled for any specific system by means + # of slxconfig. + return { + # attribute 'active' is mandatory for all plugins + 'qemukvm::active' => { + applies_to_systems => 1, + applies_to_clients => 0, + description => unshiftHereDoc(<<' End-of-Here'), + should the 'qemukvm'-plugin be executed during boot? + End-of-Here + content_regex => qr{^(0|1)$}, + content_descr => '1 means active - 0 means inactive', + default => '1', + }, + # attribute 'imagesrc' defines where we can find qemukvm images + 'qemukvm::imagesrc' => { + applies_to_systems => 1, + applies_to_clients => 1, + description => unshiftHereDoc(<<' End-of-Here'), + Where do we store our qemukvm images? NFS? Filesystem? + End-of-Here + #TODO: check if the input is valid + #content_regex => qr{^(0|1)$}, + content_descr => 'Allowed values: local path or URI', + default => '', + }, + # attribute 'bridge' defines if bridged network mode should be + # switched on + 'qemukvm::bridge' => { + applies_to_systems => 1, + applies_to_clients => 1, + description => unshiftHereDoc(<<' End-of-Here'), + Should the bridging (direct access of the qemukvm clients + to the ethernet the host is connected to) be enabled + End-of-Here + content_regex => qr{^(0|1)$}, + content_descr => 'Allowed values: 0 or 1', + default => '1', + }, + + }; +} + +sub installationPhase +{ + my $self = shift; + my $info = shift; + + $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; + $self->{pluginTempPath} = $info->{'plugin-temp-path'}; + $self->{openslxBasePath} = $info->{'openslx-base-path'}; + $self->{openslxConfigPath} = $info->{'openslx-config-path'}; + $self->{attrs} = $info->{'plugin-attrs'}; + + my $engine = $self->{'os-plugin-engine'}; + + # different names of the tool (should be unified somehow!?) + if (!isInPath('qemu-kvm' || !isInPath('kvm')) { + $engine->installPackages( + $engine->getInstallablePackagesForSelection('qemu-kvm') + ); + } + return; +} + +sub removalPhase +{ + my $self = shift; + my $info = shift; + + + return; +} + +sub checkStage3AttrValues +{ + my $self = shift; + my $stage3Attrs = shift; + my $vendorOSAttrs = shift; + my @problems; + + my $vmimg = $stage3Attrs->{'qemukvm::imagesrc'} || ''; + + return; +} + +# write the runlevelscript +sub _writeRunlevelScript +{ + my $self = shift; + my $location = shift; + my $file = shift; + my $kind = shift; + + my $runlevelScript = $self->{distro}->fillRunlevelScript($location, $kind); + + spitFile($file, $runlevelScript); +} + +1; diff --git a/os-plugins/plugins/qemukvm/XX_qemukvm.sh b/os-plugins/plugins/qemukvm/XX_qemukvm.sh new file mode 100644 index 00000000..1c0e4b87 --- /dev/null +++ b/os-plugins/plugins/qemukvm/XX_qemukvm.sh @@ -0,0 +1,66 @@ +# Copyright (c) 2008 - OpenSLX GmbH +# +# This program/file 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 feedback to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org +# +# script is included from init via the "." load function - thus it has all +# variables and functions available + + +# check if the configuration file is available +if [ -e /initramfs/plugin-conf/qemukvm.conf ]; then + + # load needed variables + . /initramfs/plugin-conf/qemukvm.conf + + # Test if this plugin is activated... more or less useless with the + # new plugin system + if [ $qemukvm_active -ne 0 ]; then + + [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'qemukvm' os-plugin ..."; + # Load general configuration + . /initramfs/machine-setup + + # get source of qemukvm image server (get type, server and path) + if strinstr "/" "${qemukvm_imagesrc}" ; then + qkimgprot=$(uri_token ${qemukvm_imagesrc} prot) + qkimgserv=$(uri_token ${qemukvm_imagesrc} server) + qkimgpath="$(uri_token ${qemukvm_imagesrc} path)" + fi + if [ -n "${qkimgserv}" ] ; then + # directory where qemu images are expected in + testmkd /mnt/var/lib/qemukvm + case "${qkimgprot}" in + *nbd) + # TODO: to be filled in ... + ;; + lbdev) + # we expect the stuff on toplevel directory, filesystem type should be + # autodetected here ... (vmimgserv is blockdev here) + qkbdev=/dev/${qkimgserv} + waitfor ${qkbdev} 20000 + echo -e "ext2\nreiserfs\nvfat\nxfs" >/etc/filesystems + mount -o ro ${qkbdev} /mnt/var/lib/qemukvm || \ + error "$scfg_evmlm" nonfatal + ;; + *) + # we expect nfs mounts here ... + for proto in tcp udp fail; do + [ $proto = "fail" ] && { error "$scfg_nfs" nonfatal; + noimg=yes; break;} + mount -n -t nfs -o ro,nolock,$proto ${qkimgserv}:${qkimgpath} \ + /mnt/var/lib/qemukvm && break + done + ;; + esac + fi + + fi +else + [ $DEBUGLEVEL -gt 0 ] && echo " * Configuration of qemukvm plugin failed" +fi diff --git a/os-plugins/plugins/qemukvm/files/run-qemukvm b/os-plugins/plugins/qemukvm/files/run-qemukvm new file mode 100644 index 00000000..0536ee3e --- /dev/null +++ b/os-plugins/plugins/qemukvm/files/run-qemukvm @@ -0,0 +1,510 @@ +#!/bin/bash +# Copyright (c) 2008 - OpenSLX GmbH +# +# This program/file 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 feedback to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org +# +# Start script for running the QEMU/Linux KVM virtual machine on an OpenSLX +# client. The script is copied to /var/X11R6/bin during stage3. + +################################################################################ +## +## Read needed variables from XML file +## +################################################################################ +xml=$1 + +# file name of the image +imagename=$(grep -i " ${xml}.utf +short_description=$(grep "short_description param=\"" ${xml} | sed -e "s%&.*;%; %g" | awk -F "\"" '{print $2}') +# if ${short_description} not defined use ${image_name} +short_description=${short_description:-"${image_name}"} +displayname=${short_description} + +# Definition of the client system +vmostype=$(grep -i "/dev/null| grep -ve "^$") +xres=$(echo "${hostres}" | awk '{print $3}') +yres=$(echo "${hostres}" | awk '{print $7}') + +# Folder of VirtualMachine images +vmdir="/var/lib/qemukvmw" + +## Image depending variables. This values will be changed by the script + +# vmware image file +diskfile="${vmdir}/${imagename}" + +#TODO: check for a faster way, perhaps we should put this into XML +# oh - yeah!! Why not do it on the SERVER??? It has enough power and has +# to do it once and not during every start on a client :) +#grepping every file could take much (network) resources. And if its +#an IDE Image, but has somewhere the string ddb.adapterType stuff can +#become screwed +# NOOOOOOO - We do not check on every start on every client!!! +# check if IDE or SCSI +#hddrv=$(grep -m 1 -ia "ddb.adapterType" ${diskfile} | awk -F "\"" '{print $2}') +#if [ "${hddrv}" = "ide" ]; then +# ide="TRUE" +# scsi="FALSE" +#elif [ "${hddrv}" = "lsilogic" ]; then +# ide="FALSE" +# scsi="TRUE" +#elif [ "${hddrv}" = "buslogic" ]; then +# ide="FALSE" +# scsi="TRUE" +#fi + + +# command line variables +# start with this this default commmand line options + extra +# TODO: defaults laut datei --include /var/lib/vmware/tmpl/winconfig +# --include include code right before program start + +# Should we debug? Hell yes, we should always debug! +debug=0 + +#TODO: Bad done... we should do this another way later +version=$(head -n 20 $0 | grep "# Version: " | awk '{print $3}') + +############# +## TODO: End of uncleaned area +############# + + + + + + +### FUNCTION SECTION ########################################################### +## +## In this script used functions +## +################################################################################ + +### write run-vmware.conf ####################################################### +#TODO: only not yet checked function +filecheck () +{ + filecheck=$(LANG=us ls -lh ${diskfile} 2>&1) + writelog "Filecheck:\n${filecheck}\n" + #TODO: don't understand the sence in it + noimage=$(echo ${filecheck} | grep -i "no such file or directory" | wc -l) + rightsfile=${diskfile} + + # check if link + # TODO: mistake with 2nd rightsfile if its in another directory? + if [ -L "${diskfile}" ]; then + # take link target + rightsfile=$(ls -lh ${diskfile} 2>&1 | awk -F "-> *" '{print $2}') + rightsfile=${vmdir}/${rightsfile} + filecheck=$(LANG=us ls -lh ${rightsfile} 2>&1) + fi + + # does file exist + if [ "${noimage}" -ge "1" ]; then + writelog "Vmware Image Problem:\c " + writelog "\tThe image you've specified doesn't exist." + writelog "Filecheck says:\c " + writelog "\t\t${diskfile}:\n\t\t\tNo such file or directory" + writelog "Hint:\c " + writelog "\t\t\tCompare spelling of the image with your options.\n" + exit 1 + fi + + # readable? + if ! [ -r "${diskfile}" >/dev/null 2>&1 \ + -o -r "${diskfile}" >/dev/null 2>&1 ]; then + writelog "Vmware Image Problem:\c " + writelog "\tThe image you've specified has wrong rights." + writelog "Filecheck says:\t\t$(echo ${filecheck} \ + | awk '{print $1" "$3" "$4}') ${rightsfile}" + writelog "Hint:\t\t\tChange rights with: chmod a+r ${rightsfile}\n" + exit 1 + fi + + # writable (for persistent-mode)? + if ! [ -w "${diskfile}" >/dev/null 2>&1 \ + -o -w "${diskfile}" >/dev/null 2>&1 ] \ + && [ "${np}" = "independent-persistent" ]; then + writelog "Vmware Image Problem:\c " + writelog "\tThe image you have specified has wrong rights." + writelog "Filecheck says:\t\t$(echo ${filecheck} \ + | awk '{print $1" "$3" "$4}') ${rightsfile}" + writelog "Hint:\t\t\tUse nonpersistent-mode or change rights to rw\n" + exit 1 + fi +} + + +### write run-vmware.conf ####################################################### +runvmwareconfheader () +{ + echo " + ############################################################################## + ###### This configuration file was generated by run-vmware.sh, ###### + ###### dont use it for your own configurations - it will be overwritten ###### + ###### ###### + + ###### identity ############################################################## + displayName = \"${displayname}\" + guestOS = \"${vmostype}\" + config.version = \"${confver}\" + virtualHW.version = \"${hver}\" + + memsize = \"${mem}\" + numvcpus = \"1\" + + ###### ide-disks ############################################################# + ide0:0.mode = \"${np}\" + ide0:0.present = \"${ide}\" + ide0:0.fileName = \"${diskfile}\" + + ide1:0.present = \"${cdr_1}\" + ide1:0.autodetect = \"TRUE\" + ide1:0.fileName = \"auto detect\" + ide1:0.deviceType = \"cdrom-raw\" + + ide1:1.present = \"${cdr_2}\" + ide1:1.autodetect = \"TRUE\" + ide1:1.fileName = \"auto detect\" + ide1:1.deviceType = \"cdrom-raw\" + + ###### scsi-disks ############################################################ + scsi0.present = \"${scsi}\" + scsi0.virtualDev = \"lsilogic\" + scsi0:0.mode = \"${np}\" + scsi0:0.present = \"${scsi}\" + scsi0:0.fileName = \"${diskfile}\" + + ###### nics ################################################################## + ethernet0.present = \"TRUE\" + ethernet0.addressType = \"static\" + ethernet0.connectionType = \"${network_kind}\" + ethernet0.address = \"00:50:56:0D:${mac}\" + + ###### sound ################################################################# + sound.present = \"TRUE\" + sound.virtualDev = \"es1371\" + + ###### usb ################################################################### + usb.present = \"TRUE\" + usb.generic.autoconnect = \"TRUE\" + + ###### floppies ############################################################## + floppy0.present = \"${floppya}\" + floppy0.fileName = \"auto detect\" + + # we need floppy b: this for our windows client configuration + floppy1.present = \"${floppyb}\" + floppy1.fileType = \"file\" + floppy1.fileName = \"${floppybname}\" + floppy1.startConnected = \"TRUE\" + + ###### ports ################################################################# + parallel0.present = \"FALSE\" + + serial0.present = \"FALSE\" + + ###### shared folders ######################################################## + sharedFolder0.present = \"TRUE\" + sharedFolder0.enabled = \"TRUE\" + sharedFolder0.expiration = \"never\" + sharedFolder0.guestName = \"Home\" + sharedFolder0.hostPath = \"${HOME}\" + sharedFolder0.readAccess = \"TRUE\" + sharedFolder0.writeAccess = \"TRUE\" + sharedFolder.maxNum = \"1\" + + ###### misc ################################################################## + tmpDirectory = \"${redodir}\" + mainMem.useNamedFile = \"TRUE\" + snapshot.disabled = \"TRUE\" + tools.syncTime = \"TRUE\" + redoLogDir = \"${redodir}\" + hints.hideAll = \"TRUE\" + logging = \"FALSE\" + isolation.tools.hgfs.disable = \"FALSE\" + isolation.tools.dnd.disable = \"TRUE\" + isolation.tools.copy.enable = \"TRUE\" + isolation.tools.paste.enabled = \"TRUE\" + gui.restricted = \"TRUE\" + pref.hotkey.shift = \"TRUE\" + pref.hotkey.control = \"TRUE\" + pref.hotkey.alt = \"TRUE\" + svga.maxWidth = \"${xres}\" + svga.maxHeight = \"${yres}\" + svga.autodetect = \"TRUE\" + " \ + >${conffile} + + # set the appropriate permissions for the vmware config file + chmod u+rwx ${conffile} >/dev/null 2>&1 +} + + +### creates user configurationfile in ${vmhome} ################################ +preferencesheader () +{ + echo " + ############################################################################## + ###### This configuration file was generated by run-vmware.sh, ###### + ###### dont use it for your own configurations - it will be overwritten ###### + ###### ###### + ################################## Wichtig! ################################## + ###### *.vmem wird immer angelegt und frisst soviel Speicher, wie fuer ###### + ###### den Gast vorgesehen. Sollte nicht im tempfs liegen. NFS OK, da ###### + ###### IO nur einmal beim Start erheblich. Wird gesteuert ueber ###### + ###### confdir=/nfs-viel-platz ###### + + # DEBUG: some versions accept it only upper or lowercase... which one? + # The following 4 could also be uppercase + hints.hideAll = \"true\" + pref.exchangeSelections = \"true\" + pref.hotkey.shift = \"true\" + pref.tip.startup = \"false\" + pref.vmplayer.exit.vmAction = \"poweroff\" + # DEBUG: some versions accept it only upper or lowercase... which one? + # The following 2 could also be uppercase + pref.vmplayer.fullscreen.autohide = \"true\" + pref.vmplayer.webUpdateOnStartup = \"false\" + prefvmx.defaultVMPath = \"${vmhome}\" + prefvmx.mru.config = \"${conffile}:\" + tmpDirectory = \"${redodir}\" + webUpdate.checkPeriod = \"manual\" + 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 +} + + +### log function ############################################################### +# function to write to stdout and logfile +writelog () +{ + # write to stdout + echo -e "$1" + + # log in file + echo -e "$1" >>${redodir}/run-vmware.${USER}.log +} + + + + + + +### MAIN SECTION ############################################################### +## +## Main part of the script... +## +################################################################################ + +# 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 + +# NO X-server, no run-vmware ;) +[ -z "$DISPLAY" ] && echo -e "\n\tStart only within a desktop!\n" && exit 1 + +# logo for console +cat </dev/null +done + +# adjust volume +writelog "Unmuting sound...\c " +amixer -q sset Master 28 unmute 2>/dev/null +amixer -q sset PCM 28 unmute 2>/dev/null +amixer -q sset Headphone 28 unmute 2>/dev/null +amixer -q sset Front 0 mute 2>/dev/null +writelog "finished\n" + +### run vmplayer ############################################################### +# ...with the automatically written config file +if [ $(which vmplayer 2>/dev/null) ]; then writelog "Starting ..." + # run VMplayer + writelog "... vmplayer ${vmopt} ${conffile}\n" + vmplayer ${vmopt} ${conffile} >/dev/null 2>&1 +else + writelog "No VMware/VMPlayer found!\n" + exit 1 +fi + +writelog "Bye.\n" +exit 0 -- cgit v1.2.3-55-g7522