From 0d20d01574e28cb7f60c632cafc8065e0e4303eb Mon Sep 17 00:00:00 2001 From: Volker Uhrig Date: Mon, 16 Apr 2007 08:52:06 +0000 Subject: Renamed the directory virtualisierung to virtualization git-svn-id: http://svn.openslx.org/svn/openslx/trunk@900 95ad53e4-c205-0410-b2fa-d234c58c8868 --- virtualisierung/README | 13 - virtualisierung/menulist-creator | 214 --------- .../templates/Vorlage_VMwareImageAdministrator.xml | 39 -- virtualisierung/templates/runvmware-v2 | 481 --------------------- virtualization/README | 13 + virtualization/menulist-creator | 214 +++++++++ .../templates/Vorlage_VMwareImageAdministrator.xml | 39 ++ virtualization/templates/runvmware-v2 | 481 +++++++++++++++++++++ 8 files changed, 747 insertions(+), 747 deletions(-) delete mode 100644 virtualisierung/README delete mode 100755 virtualisierung/menulist-creator delete mode 100755 virtualisierung/templates/Vorlage_VMwareImageAdministrator.xml delete mode 100644 virtualisierung/templates/runvmware-v2 create mode 100644 virtualization/README create mode 100755 virtualization/menulist-creator create mode 100755 virtualization/templates/Vorlage_VMwareImageAdministrator.xml create mode 100644 virtualization/templates/runvmware-v2 diff --git a/virtualisierung/README b/virtualisierung/README deleted file mode 100644 index cfae07c4..00000000 --- a/virtualisierung/README +++ /dev/null @@ -1,13 +0,0 @@ -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/virtualisierung/menulist-creator b/virtualisierung/menulist-creator deleted file mode 100755 index 2a4a97ad..00000000 --- a/virtualisierung/menulist-creator +++ /dev/null @@ -1,214 +0,0 @@ -#!/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 "> 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/virtualisierung/templates/Vorlage_VMwareImageAdministrator.xml b/virtualisierung/templates/Vorlage_VMwareImageAdministrator.xml deleted file mode 100755 index ad05dfb4..00000000 --- a/virtualisierung/templates/Vorlage_VMwareImageAdministrator.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - # Imagename ohne .vmdk - - - # Information of the image creator - - - - - - - # Short description, shown in the menu - - - # Define long description shown when the Image is chosen - - - #os running in vmware, needed for vmware config file - - - # Network nat or bridged? - - - # values: vmware or virtualbox - - - #Description: Should the current image in use? if yes value is "true" - - - #Description: where should the current image be used? in the past slxgrp - - - #Description: as xdm menu? If yes "true", else "false" - - - - diff --git a/virtualisierung/templates/runvmware-v2 b/virtualisierung/templates/runvmware-v2 deleted file mode 100644 index 7cb2cff1..00000000 --- a/virtualisierung/templates/runvmware-v2 +++ /dev/null @@ -1,481 +0,0 @@ -#!/bin/bash -# -# Description: Script for preparing VMware environment Diskless -# X Stations and interactive session chooser (v4) -# -# Author(s): Dirk von Suchodoletz , 18-03-2006 -# Michael Janczyk , 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 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 </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 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 "> 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 @@ + + + + # Imagename ohne .vmdk + + + # Information of the image creator + + + + + + + # Short description, shown in the menu + + + # Define long description shown when the Image is chosen + + + #os running in vmware, needed for vmware config file + + + # Network nat or bridged? + + + # values: vmware or virtualbox + + + #Description: Should the current image in use? if yes value is "true" + + + #Description: where should the current image be used? in the past slxgrp + + + #Description: as xdm menu? If yes "true", else "false" + + + + 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 , 18-03-2006 +# Michael Janczyk , 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 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 </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 -- cgit v1.2.3-55-g7522