summaryrefslogtreecommitdiffstats
path: root/virtualization
diff options
context:
space:
mode:
authorVolker Uhrig2007-04-16 10:52:06 +0200
committerVolker Uhrig2007-04-16 10:52:06 +0200
commit0d20d01574e28cb7f60c632cafc8065e0e4303eb (patch)
treec3aebd61d657ad39cee7b84d403ae07df72c51d5 /virtualization
parentRemove the install log by calling the clean rule. (diff)
downloadcore-0d20d01574e28cb7f60c632cafc8065e0e4303eb.tar.gz
core-0d20d01574e28cb7f60c632cafc8065e0e4303eb.tar.xz
core-0d20d01574e28cb7f60c632cafc8065e0e4303eb.zip
Renamed the directory virtualisierung to virtualization
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@900 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'virtualization')
-rw-r--r--virtualization/README13
-rwxr-xr-xvirtualization/menulist-creator214
-rwxr-xr-xvirtualization/templates/Vorlage_VMwareImageAdministrator.xml39
-rw-r--r--virtualization/templates/runvmware-v2481
4 files changed, 747 insertions, 0 deletions
diff --git a/virtualization/README b/virtualization/README
new file mode 100644
index 00000000..cfae07c4
--- /dev/null
+++ b/virtualization/README
@@ -0,0 +1,13 @@
+rewrite of runvmware and all other scripts needed for virtualisation
+with vmware or virtualbox.
+Project not finished yet! Everything not enough testet!
+
+Earlier checkin, cause it was requested.
+
+Goal:
+- better documentation of source and virtualisation
+- easier source, unneeded parts removed
+- better understanding for persons who are new to the project, without
+ reading 1k lines of source
+- no complicated vmmenu structure, preventing easy integration of new
+ features depending on the image
diff --git a/virtualization/menulist-creator b/virtualization/menulist-creator
new file mode 100755
index 00000000..2a4a97ad
--- /dev/null
+++ b/virtualization/menulist-creator
@@ -0,0 +1,214 @@
+#!/bin/bash
+
+################################################################################
+## Creates vmware and vbox (script creation for vbox is not implented yet)
+## runscripts from xmlfiles.
+## Use template file runvmware-v2 for executeables
+##
+##
+## Structure:
+## ${vmdir}/$image.xml configurationfile
+## ${vmdir}/$image.vmdk vmware image file
+## ${vmdir}/$image.vbox vbox image file
+## ${vmdir}/runscripts/$pool/*.vmware vmware runscript
+## ${vmdir}/runscripts/$pool/*.vbox virtualbox runscript
+## ${vmdir}/templates/runvmware-v2 image exec template script
+################################################################################
+
+#TODO: check first if this xml file should be used, if not jump out of the
+# while loop. reducee checks and resources
+
+# Just needed if vmdir is somewhere else
+vmdir="." && cd ${vmdir}
+
+# File for dektopentrys
+#TODO: where to put? temporary test file, we should delete it or move it
+# later, else there isnt a valid entryfile till this script is finished
+desktopentry="${vmdir}/desktopentrys"
+
+# template for runvmware
+templatevmware="${vmdir}/templates/runvmware-v2"
+
+
+# Take all xml files and work with them
+for xml in *.xml;do
+
+ # converts the XML file to utf-8, whyever we need that
+ # inefficient here, because we don't need utf-8 for every xml file
+ # but most secure place. Else the structure gets screwed.
+ #TODO: perhaps we can kick out the whole UTF-8 shit, if the admins
+ # are not able to give us the correct format, we shouldnt fix it
+ iconv -c -f utf-8 -t utf-8 < ${xml} > ${xml}.utf
+
+
+ ##############################################################################
+ ## get needed information from xml file and check them if needed
+ ##############################################################################
+
+
+ # get image name
+ image=`grep -i "<image_name param=\"" ${xml} | awk -F "\"" '{ print $2 }'`
+
+ # Test if correct defined
+ image_type=`echo ${image}|sed 's/.*\.//'`
+ if [ "${image_type}" != "vmdk" -a "${image_type}" != "vdi" ]; then
+ # TODO: Test
+ echo "PANIC, image is not correct defined in ${xml}."
+ echo "Image has to end with vdi or vmdk!"
+ exit 0
+ fi
+
+
+ # get information if the current image should be used
+ # active when active=1 image, else disabled
+ active=`grep -i "<active param=\"true\"" ${xml} | wc -l`
+
+
+ # get list where the current image should be used
+ pools=`grep -i "<pools param=\"" ${xml} | awk -F "\"" '{ print $2 }'`
+
+
+ # Virtualmachine (vmware or virtualbox)?
+ vm=`grep -i "<virtualmachine param=\"" ${xml} | awk -F "\"" '{ print $2 }'`
+ # Test if correct defined
+ if [ "${vm}" != "vbox" -a "${vm}" != "vmware" ]; then
+ # TODO: Test
+ echo "PANIC, virtualmachine not correct defined in ${xml}"
+ exit 0
+ fi
+
+ # Test if vbox and wrong image
+ if [ "${vm}" = "vbox" -a "${image_type}" != "vdi" ]; then
+ # TODO: Test
+ echo "PANIC, virtualmachine vbox cant use image type defined in ${xml}"
+ exit 0
+ fi
+
+ # Test if vmware and wrong image
+ if [ "${vm}" = "vmware" -a "${image_type}" != "vmdk" ]; then
+ # TODO: Test
+ echo "PANIC, virtualmachine vmware cant use image type defined in ${xml}"
+ exit 0
+ fi
+
+
+ # Connectiontype of vm (nat or bridged)?
+ network=`grep -i "<network param=\"" ${xml} | awk -F "\"" '{ print $2 }'`
+
+ # Test if correct defined
+ if [ "${network}" != "nat" -a "${network}" != "bridged" ]; then
+ # TODO: test
+ echo "PANIC, network connection not correct defined in ${xml}"
+ exit 0
+ fi
+
+
+ # os running in vmware?
+ os=`grep -i "<os param=\"" ${xml} | awk -F "\"" '{ print $2 }'`
+ if [ "${os}" != "Linux" -a "${os}" != "Windows XP" ]; then
+ # TODO: test
+ echo "PANIC, OS in virtual machine not correct defined in ${xml}"
+ exit 0
+ fi
+
+
+ # get short image description
+ short_description=`grep "short_description param=\"" ${xml}.utf | sed -e "s/&.*;/; /g" | awk -F "\"" '{print $2}'`
+ # if ${short_description} not defined use ${image}
+ short_description=${short_description:-"${image}"}
+
+
+ # Get the long image description
+ long_description=`grep "long_description param=\"" ${xml}.utf | sed -e "s/&.*;/; /g" | awk -F "\"" '{print $2}'`
+
+
+ # Informations if we need for XDM
+ xdm=`grep "xdm param=\"" ${xml} | awk -F "\"" '{print $2}'`
+
+ # Test if correct defined
+ if [ "${xdm}" != "true" -a "${xdm}" != "false" ]; then
+ # TODO: test
+ echo "PANIC, XDM usage not correct defined in ${xml}"
+ exit 0
+ fi
+
+
+ ##############################################################################
+ ## main part,
+ ##############################################################################
+ # Main part, creates desktopentry and image run script
+
+ # check if ${vmdir}/runscripts/ is available
+ if [ ! -d ${vmdir}/runscripts ]; then
+ mkdir ${vmdir}/runscripts
+ fi
+
+ # work with the different pools and...
+ for i in ${pools}; do
+ # ... make sure we have the different pool directorys, else create it
+ if [ ! -d ${vmdir}/runscripts/${i} ]; then
+ mkdir -p ${vmdir}/runscripts/${i}
+ fi
+ # ... remove startscript if it isn't active.
+ if [ ${active} -ne 1 ]; then
+ if [ -f ${vmdir}/runscripts/${i}/${image}.vmware -o runscripts/${i}/${image}.virtualbox ]; then
+ rm -rf ${vmdir}/runscripts/${i}/${image}.*
+ fi
+ fi
+
+
+ # ... create desktopentry
+ if [ ${active} -eq 1 ]; then
+
+ # create desktopentry
+ echo -e "\nCreating runfiles for ${image} and pool ${i}\n"
+ # create the desktopentry
+ #TODO: change it with < EOF, >> isnt nice for so much lines
+ echo "Desktop entry for ${image}" >> ${desktopentry}
+ echo "[Desktop Entry]" >> ${desktopentry}
+ echo "X-SuSE-translate=true" >> ${desktopentry}
+ echo "Encoding=UTF-8" >> ${desktopentry}
+ echo "Type=XSession" >> ${desktopentry}
+ #TODO: Fix path
+ echo "Exec=/path/to/the/execfile/${image}" >> ${desktopentry}
+ echo "Name=${short_description}" >> ${desktopentry}
+ echo "Comment=${comment}" >> ${desktopentry}
+ #TODO: I dont like SLXGrp as variable herein, why we need it here?
+ #echo "SLXGrp=${pools}" >> ${desktopentry}
+ #TODO: do we need XDM configuration? -> Chemie pool
+ #echo "XDM=${xdm}" >> ${desktopentry}
+ echo "" >> ${desktopentry}
+ fi
+
+
+################################################################################
+## TODO: remember default/ chemie/ option (desktopentrys! and runfiles)
+## delete old desktop list
+## fucking pools/directory hirarchy... test it with running script and find
+## that way the error
+################################################################################
+
+ # If we have vmware, build execute from template
+ if [ "${vm}" = "vmware" ]; then
+
+ sed -e "s/imagename=\"CHANGEIT\"/imagename=\"${image}\"/" \
+ -e "s/displayname=\"CHANGEIT\"/displayname=\"${short_description}\"/" \
+ -e "s/vmostype=\"CHANGEIT\"/vmostype=\"${os}\"/" \
+ -e "s/network=\"CHANGEIT\"/network=\"${network}\"/" \
+ ${templatevmware} \
+ > ${vmdir}/runscripts/${i}/${image}.runvmware
+
+ # if we have virtualbox, can only be vbox cause checked above
+ else
+ echo "Currently Virtualbox isn't implented"
+ exit 0
+ fi
+
+
+ done
+
+done
+
+
+# Delete all .utf files, we dont need them anymore
+rm -f *.xml.utf
diff --git a/virtualization/templates/Vorlage_VMwareImageAdministrator.xml b/virtualization/templates/Vorlage_VMwareImageAdministrator.xml
new file mode 100755
index 00000000..ad05dfb4
--- /dev/null
+++ b/virtualization/templates/Vorlage_VMwareImageAdministrator.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<settings>
+ <eintrag>
+ # Imagename ohne .vmdk
+ <image_name param="Vorlage_VMwareImageAdministrator.vmdk">
+ </image_name>
+ # Information of the image creator
+ <creator param="Your Name">
+ </creator>
+ <email param="your@email.address.tld">
+ </email>
+ <phone param="---">
+ </phone>
+ # Short description, shown in the menu
+ <short_description param="Diese Image dient Ihnen als Vorlage für Ihre Installationen. Laden Sie es auf Ihre lokale Festplatte und installieren Sie Ihre Programme!">
+ </short_description>
+ # Define long description shown when the Image is chosen
+ <long_description param="">
+ </long_description>
+ #os running in vmware, needed for vmware config file
+ <os param="Windows XP">
+ </os>
+ # Network nat or bridged?
+ <network param="nat">
+ </network>
+ # values: vmware or virtualbox
+ <virtualmachine param="vmware">
+ </virtualmachine>
+ #Description: Should the current image in use? if yes value is "true"
+ <active param="true">
+ </active>
+ #Description: where should the current image be used? in the past slxgrp
+ <pools param="default chemie">
+ </pools>
+ #Description: as xdm menu? If yes "true", else "false"
+ <xdm param="false">
+ </xdm>
+ </eintrag>
+</settings>
diff --git a/virtualization/templates/runvmware-v2 b/virtualization/templates/runvmware-v2
new file mode 100644
index 00000000..7cb2cff1
--- /dev/null
+++ b/virtualization/templates/runvmware-v2
@@ -0,0 +1,481 @@
+#!/bin/bash
+#
+# Description: Script for preparing VMware environment Diskless
+# X Stations and interactive session chooser (v4)
+#
+# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 18-03-2006
+# Michael Janczyk <mj0@uni-freiburg.de>, 10-01-2007
+# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
+#
+# Version: 0.16.611
+#
+################################################################################
+
+
+
+### VARIABLES SECTION ##########################################################
+##
+## declaration of default variables
+##
+################################################################################
+
+## "static" variables only changed within the script
+
+# The PATH...
+export PATH="${PATH}:/var/X11R6/bin:/usr/X11R6/bin"
+
+# Last two values for MAC address
+mac=
+
+# memory information. permem is value to calculate needed memory
+mem=
+totalmem=
+permem=66
+
+# virtual devices
+cdr_1="FALSE"
+cdr_2="FALSE"
+
+# Displayresolution needed for vmware.config
+hostres=$(xvidtune -show 2>/dev/null| grep -ve "^$")
+xres=$(echo "${hostres}" | awk '{print $3}')
+yres=$(echo "${hostres}" | awk '{print $7}')
+
+# VMplayer buildversion
+tmp_vmbuild=
+vmbuild=
+
+# VMware start options
+#-X = fullscreen
+vmopt="-X"
+
+# temporary disk space for logs, etc...
+export tmpdir=/tmp/${USER}
+
+# configfile
+confile="${tmpdir}/runvmware.conf"
+
+# users vmware config folder
+vmhome="${HOME}/.vmware"
+
+# unknow variables needed vor vmwplayer configuration
+confver=8
+hver=4
+
+# set hostname: using original hostname and adding string "-vm"
+# variable isn't used anywhere in this script. but still works (however)
+# TODO: Test it commented out
+hostname="VM-${HOST}"
+
+# Folder of VirtualMachine Images
+vmdir="/var/lib/vmware"
+
+# special Variables, persistence vmware?
+#TODO: do we really need it? Should be everywhere nonpersistent
+np="independent-nonpersistent"
+
+########
+## TODO: everything clean till here
+########
+
+# File if its a link. Stupid crap
+#TODO: perhaps we don't need it
+rightsfile=
+#TODO: don't know what it is for. check later
+noimage=0
+# image checking variable
+filecheck=
+
+
+## Image depending variables. This values will be changed by the script
+
+# vmware image file
+imagename="CHANGEIT"
+diskfile="${vmdir}/$imagename"
+
+# define name for VMware window
+displayname="CHANGIT"
+
+# Definition of the client system
+vmostype="CHANGEIT"
+
+# Definition of the client system
+network="CHANGEIT"
+
+
+# command line variables
+# start with this this default commmand line options + extra
+# TODO: defaults laut datei --include /var/lib/vmware/tmpl/winconfig
+# --include <includefile> 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
+last_changes=$(head -n 15 $0 | grep "@" | awk -F ", " '{print $2}' \
+ | awk -F "-" '{print $3" "$2" "$1}' | sort -bfnr \
+ | awk '{print $3"-"$2"-"$1}' | grep -m 1 [0-9])
+version=$(head -n 15 $0 | grep "# Version: " | awk '{print $3}')
+
+#############
+## TODO: End of uncleaned area
+#############
+
+
+
+
+
+
+### FUNCTION SECTION ###########################################################
+##
+## In this script used functions
+##
+################################################################################
+
+### write runvmware.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've 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 runvmware.conf #######################################################
+runvmwareconfheader ()
+{
+ echo "
+ ##############################################################################
+ ###### This configuration file was generated by 'runvmware', ######
+ ###### 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 = \"TRUE\"
+ ide0:0.fileName = \"${tmpdir}/disk\"
+
+ 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 = \"FALSE\"
+
+ ###### nics ##################################################################
+ ethernet0.present = \"TRUE\"
+ ethernet0.addressType = \"static\"
+ ethernet0.connectionType = \"${network}\"
+ ethernet0.address = \"00:50:56:0D:${mac}\"
+
+ ###### sound #################################################################
+ sound.present = \"TRUE\"
+ sound.virtualDev = \"es1371\"
+
+ ###### usb ###################################################################
+ usb.present = \"TRUE\"
+ usb.generic.autoconnect = \"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 = \"${tmpdir}\"
+ mainMem.useNamedFile = \"FALSE\"
+ snapshot.disabled = \"TRUE\"
+ tools.syncTime = \"TRUE\"
+ redoLogDir = \"${tmpdir}\"
+ 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}\"
+ " \
+ >${confile}
+
+ # set the appropriate permissions for the vmware config file
+ chmod u+rwx ${confile} >/dev/null 2>&1
+}
+
+
+### creates user configurationfile in ${vmhome} ################################
+preferencesheader ()
+{
+ echo "
+ ##############################################################################
+ ###### This configuration file was generated by 'runvmware', ######
+ ###### 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 ######
+ ###### tmpDirectory = /nfs-viel-platz und darin wird dann vmware-\$user ######
+ ###### angelegt. ######
+
+ hints.hideAll = \"TRUE\"
+ pref.exchangeSelections = \"TRUE\"
+ pref.hotkey.shift = \"TRUE\"
+ pref.tip.startup = \"FALSE\"
+ pref.vmplayer.exit.vmAction = \"poweroff\"
+ pref.vmplayer.fullscreen.autohide = \"TRUE\"
+ pref.vmplayer.webUpdateOnStartup = \"FALSE\"
+ prefvmx.defaultVMPath = \"${vmhome}\"
+ prefvmx.mru.config = \"${confile}:\"
+ tmpDirectory = \"${tmpdir}\"
+ 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
+ # TODO: echo -e
+ echo "$1"
+
+ # log in file
+ # TODO: echo -e
+ echo "$1" >>${tmpdir}/runvmware.${USER}.log
+}
+
+
+
+
+
+
+### MAIN SECTION ###############################################################
+##
+## Main part of the script...
+##
+################################################################################
+
+# Delete the LOCK file. its unsecure, but ...
+rm -f ${tmpdir}/*LOCK >/dev/null 2>&1
+
+# create vmware directories
+mkdir -p ${tmpdir} >/dev/null 2>&1
+mkdir -p ${vmhome} >/dev/null 2>&1
+
+# NO X-server, no runvmware ;)
+[ -z "$DISPLAY" ] && echo -e "\n\tStart only within a desktop!\n" && exit 1
+
+# logo for console
+cat <<EOL
+
+ .----.--.--.-----.--.--.--------.--.--.--.---.-.----.-----.
+ | _| | | | | | | | | | _ | _| -__|
+ |__| |_____|__|__|\___/|__|__|__|________|___._|__| |_____|
+ Script for preparing VMware environment...(v${version})
+
+
+EOL
+
+
+### CHECK MACHINE SETUP ########################################################
+
+## log script information
+writelog "##################################################\n"
+writelog "# File created by $0 (v.${version})\n# on `date`\n"
+writelog "##################################################\n"
+writelog "Starting...`echo ${np} | sed -e \"s/i.*-//g\" \
+ | tr [a-z] [A-Z]`-mode\n"
+
+## log disksetup
+writelog "Directories:
+ \tTmpdir:\t\t${tmpdir}\n\tVMhome:\t\t${vmhome}\n\tTmpdir info:\
+ \t`mount | grep -i "/tmp "`\n"
+
+## configuring MAC address: first four bytes are fixed (00:50:56:0D) the
+## last two bytes are taken from the local network adaptor
+writelog "Starting hardware / device detection...\c"
+
+## Get last two MAC values for VMPlayer
+# NF = Number of Fields of found values in awk
+mac=$(/sbin/ifconfig eth0 | grep eth0 | sed -e "s/ //g" \
+ | awk -F ":" '{print $(NF-1)":"$NF}')
+
+
+## check if we have enough free memory
+
+# get memory in MB
+totalmem=$(expr $(grep -i "memtotal" /proc/meminfo | awk '{print $2}') / 1024)
+
+#TODO
+writelog "DEBUG: $totalmem, $permem\n"
+# calculate memory for vmplayer
+# TODO: unhappy how it is calculated
+mem=$(expr ${totalmem} / 100 * ${permem} / 4*4)
+
+# check memory range
+memtest=${totalmem}-128
+if [ "${mem}" -lt "128" ] || [ "${mem}" -gt "${totalmem}" ]; then
+ writelog "\n\n\tYour memory is out of range: ${mem} MB.
+ \tMin. 128 MB for host and guest!\n\tTry --mem option.\n"
+ exit 1
+fi
+
+
+## look for cdrom, dvd and add them to the vm config file
+if [ -L /dev/cdrom ] ; then
+ cdr_1="TRUE"
+fi
+
+if [ -L /dev/cdrom1 ] ; then
+ cdr_2="TRUE"
+fi
+
+
+## Write all results to logfile
+writelog "finished\nResults:\n\tMAC:\t\t00:50:56:0D:${mac}\n\tMem:\t\t${mem} MB
+ \tMax. res.:\t${xres}x${yres}\n\t\tCD-ROM_1:\t${cdr_1}\n\tCD-ROM_2:\t${cdr_2}\n"
+writelog "finished\nResults:\n\tDiskfile:\t${diskfile}
+ \tVMostype:\t${vmostype}\n\tDisplayname:\t${displayname}\n"
+
+# link to windows image
+writelog "Linking \"ln -fs ${diskfile}
+ \t${tmpdir}/disk\"...\c"
+ln -fs ${diskfile} ${tmpdir}/disk
+writelog "finished\nResult:\n`ls -l ${tmpdir}/disk`\n"
+
+# check if image exists, etc...
+filecheck
+
+# VMPlayer Version.
+# Takes much time/resources, so we try to decrease it check first if
+# vmware is installed and has a build number in config if not then check
+# if we have an own configuration produces by servconfig
+# in worst case use the slow old option
+#TODO: build in the boot script
+tmp_vmbuild=$(grep "product.buildnumber" /etc/vmware/config )
+if [ -n ${tmp_vmbuild} ]; then
+ vmbuild=$(echo ${tmp_vmbuild} | awk -F "\"" '{print $2}')
+else
+ tmp_vmbuild=$(grep "product.buildnumber" /etc/vmware/buildnumber)
+ if [ -n ${tmp_vmbuild} ]; then
+ vmbuild=$(echo ${tmp_vmbuild} | awk -F "\"" '{print $2}')
+ else
+ vmbuild=$(vmplayer -v | awk -F "-" '{print $2}')
+ fi
+fi
+
+### write configuration files ##################################################
+# create preferences
+preferencesheader
+
+# create VMware startup file
+runvmwareconfheader
+
+# Tricky, perhaps i need the winconfig for login/hostinformation
+# include file which is given via command line
+#TODO: include variable not present anymore. $include was a file
+#[ -n "${include}" ] && . ${include}
+
+# adjust volume
+writelog "Unmuting sound...\c"
+amixer -q sset Master 28 unmute
+amixer -q sset PCM 28 unmute
+writelog "finished\n"
+
+### run vmplayer ###############################################################
+# ...with the automatically written config file
+if [ `which vmplayer 2>/dev/null` ]; then
+ writelog "\nStarting VMplayer..."
+ # run VMplayer
+ writelog "... vmplayer ${vmopt} ${confile}...\n"
+ vmplayer ${vmopt} ${confile} 2>&1 >/dev/null
+else
+ writelog "\nNo VMware/VMPlayer found!\n"
+ exit 1
+fi
+
+writelog "\nBye.\n"
+exit 0