From e28f5780fc328d7f8797f62d9350e62f6861014c Mon Sep 17 00:00:00 2001 From: Volker Uhrig Date: Wed, 6 Feb 2008 21:22:09 +0000 Subject: * vmware plugin is no longer offering the list of available vmwares * Prepared vmware plugin for the new vm-chooser menu * VMware plugin could now be broken. Currently untested. * cleaned servconfig * check if SuSE systems have /opt/gdm/... perhaps the GDM configuration is broken. At least it suppresses an error. git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1519 95ad53e4-c205-0410-b2fa-d234c58c8868 --- initramfs/distro-specs/suse/functions-default | 3 + initramfs/initrd-stuff/bin/servconfig | 149 +------ os-plugins/plugins/vmware/XX_vmware.sh | 607 ++++++++++++++++++++++++-- 3 files changed, 569 insertions(+), 190 deletions(-) diff --git a/initramfs/distro-specs/suse/functions-default b/initramfs/distro-specs/suse/functions-default index d3ed074b..5bb0e678 100644 --- a/initramfs/distro-specs/suse/functions-default +++ b/initramfs/distro-specs/suse/functions-default @@ -360,6 +360,9 @@ $host_name\n\n\ -audit 0\n\ flexible=true\nhandled=true\nchooser=true" >>/mnt/etc/opt/gnome/gdm/gdm.conf else + if [ ! -d /mnt/etc/opt/gnome/gdm ]; + testmkd /mnt/etc/opt/gnome/gdm + fi echo -e "\n[servers]\n0=Standard\n\n\ [server-Standard]\nname=Standard server\ncommand=/usr/X11R6/bin/X\n\ flexible=true\nhandled=true" >>/mnt/etc/opt/gnome/gdm/gdm.conf diff --git a/initramfs/initrd-stuff/bin/servconfig b/initramfs/initrd-stuff/bin/servconfig index 9b4836b8..552b3fd3 100755 --- a/initramfs/initrd-stuff/bin/servconfig +++ b/initramfs/initrd-stuff/bin/servconfig @@ -105,48 +105,6 @@ echo -e "\t# entries added by $0: $date" >> /mnt/etc/${D_INITDIR}/boot.slx [ -n "${KEYTABLE}" ] && keytable [ -n "${CONSOLE_FONT}" ] && consolefont -############################################################################# -# vmware stuff first part: two scenarios -# * VM images in /usr/share/vmware - then simply link -# * VM images via additional mount (mount source NFS, NBD, ...) -if [ "x$vmware" != "x" ] && [ "x$vmware" != "xno" ] ; then - # map slxgrp to pool, so it's better to understand - pool=${slxgrp} - # if we dont have slxgrp defined - [ -z "$pool" ] && pool="default" - - # get source of vmware image server (get type, server and path) - if strinstr "/" "$vmware" ; then - vmimgprot=$(uri_token $vmware prot) - vmimgserv=$(uri_token $vmware server) - vmimgpath="$(uri_token $vmware path)" - fi - if [ -n "${vmimgserv}" ] ; then - testmkd /mnt/var/lib/vmware - case "${vmimgprot}" in - *nbd) - ;; - lbdev) - # we expect the stuff on toplevel directory, filesystem type should be - # autodetected here ... (vmimgserv is blockdev here) - vmbdev=/dev/${vmimgserv} - waitfor ${vmbdev} 20000 - echo -e "ext2\nreiserfs\nvfat\nxfs" >/etc/filesystems - mount -o ro ${vmbdev} /mnt/var/lib/vmware || 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 ${vmimgserv}:${vmimgpath} \ - /mnt/var/lib/vmware && break - done - ;; - esac - fi -fi - ############################################################################# # setup passwd and shadow for local system users like root, bin, daemon and # nobody if no user/admin provided passwd exists ... @@ -318,111 +276,6 @@ fi # name service caching daemon if networked user database config_nscd -############################################################################# -# vmware stuff second part: setting up the environment - -# create needed directories and files -if [ "x$vmware" != "x" ] && [ "x$vmware" != "xno" ] ; then - for i in /etc/vmware/vmnet1/dhcpd /etc/vmware/vmnet8/nat \ - /etc/vmware/vmnet8/dhcpd /var/run/vmware /etc/vmware/loopimg \ - /etc/vmware/fd-loop /var/X11R6/bin /etc/X11/sessions; do - testmkd /mnt/$i - done - # create needed devices (not created automatically via module load) - for i in "/dev/vmnet0 c 119 0" "/dev/vmnet1 c 119 1" \ - "/dev/vmnet8 c 119 8" "/dev/vmmon c 10 165"; do - mknod $i - done - # create the vmware startup configuration file /etc/vmware/locations - # fixme --> ToDo - # echo -e "answer VNET_8_NAT yes\nanswer VNET_8_HOSTONLY_HOSTADDR \n\ -#192.168.100.1\nanswer VNET_8_HOSTONLY_NETMASK 255.255.255.0\n\ -#file /etc/vmware/vmnet8/dhcpd/dhcpd.conf\n\ -# remove_file /etc/vmware/not_configured" >/mnt/etc/vmware/locations - - chmod 0700 /dev/vmnet* - chmod 1777 /mnt/etc/vmware/fd-loop - # loop file for exchanging information between linux and vmware guest - if modprobe ${MODPRV} loop; then - mdev -s - else - : #|| error "" nonfatal - fi - # mount a clean tempfs (bug in UnionFS prevents loopmount to work) - strinfile "unionfs" /proc/mounts && \ - mount -n -o size=1500k -t tmpfs vm-loopimg /mnt/etc/vmware/loopimg - # create an empty floppy image of 1.4MByte size - dd if=/dev/zero of=/mnt/etc/vmware/loopimg/fd.img \ - count=2880 bs=512 2>/dev/null - chmod 0777 /mnt/etc/vmware/loopimg/fd.img - # use dos formatter from rootfs (later stage4) - LD_LIBRARY_PATH=/mnt/lib /mnt/sbin/mkfs.msdos \ - /mnt/etc/vmware/loopimg/fd.img >/dev/null 2>&1 #|| error - mount -n -t msdos -o loop,umask=000 /mnt/etc/vmware/loopimg/fd.img \ - /mnt/etc/vmware/fd-loop - echo -e "usbfs\t\t/proc/bus/usb\tusbfs\t\tauto\t\t 0 0" >> /mnt/etc/fstab - # needed for VMware 5.5.3 and versions below - echo -e "\tmount -t usbfs usbfs /proc/bus/usb 2>/dev/null" \ - >>/mnt/etc/${D_INITDIR}/boot.slx - config_vmware - chmod 1777 /mnt/var/run/vmware - # define a variable where gdm/kdm should look for additional sessions - # do we really need it? - # export vmsessions=/var/lib/vmware/vmsessions - - # directory of templates and xdialog files - vmdir=/mnt/var/lib/vmware - - if cp ${vmdir}/templates/xdialog.sh /mnt/var/X11R6/bin 2>/dev/null; then - # create default.desktop for kdm - echo -e "[Desktop Entry]\nEncoding=UTF8\nName=Default\nName[de]=Standard"\ - >/mnt/etc/X11/sessions/default.desktop - - #I dont like this part, but there is no simple workaround. We need to - #create xdialog.sh on every box :( - echo "Exec=/var/X11R6/bin/xdialog.sh" \ - >>/mnt/etc/X11/sessions/default.desktop - echo "Type=Application" >>/mnt/etc/X11/sessions/default.desktop - - # all virtual machine clients in xdialog - cat ${vmdir}/xdialog-files/${pool}/*.xdialog \ - >>/mnt/var/X11R6/bin/xdialog.sh - - # /usr/share/xsessions/* files for the xdialog menu - for i in /mnt/usr/share/xsessions/*.desktop; do - # execute - echo "\"$(grep '^Exec=' ${i}|sed 's/^Exec=//')\" \\" \ - >>/mnt/var/X11R6/bin/xdialog.sh - # short description - echo "\"$(grep '^Name=' ${i}|sed 's/^Name=//')\" \\" \ - >>/mnt/var/X11R6/bin/xdialog.sh - # long description - echo "\"$(grep '^Comment=' ${i}|sed 's/^Comment=//')\" \\" \ - >>/mnt/var/X11R6/bin/xdialog.sh - done - # closing bracket as last line ends with '\' - echo ")" >>/mnt/var/X11R6/bin/xdialog.sh - chmod 755 /mnt/var/X11R6/bin/xdialog.sh - - # copy xdm files, so we could choose them before we log in - for i in ${vmdir}/xdmsessions/${pool}/*.desktop;do - cp ${i} /mnt/etc/X11/sessions/ - done - else - error "$scfg_vmchs" nonfatal - fi - # we configured vmware, so we can delete the not_configured file - rm /mnt/etc/vmware/not_configured 2>/dev/null - - # copy dhcpd.conf and nat for vmnet8 (nat) - # fixme: It should be possible to start just one vmware dhcp which should - # listen to both interfaces vmnet1 and vmnet8 ... - cp /mnt/var/lib/vmware/templates/dhcpd.conf \ - /mnt/etc/vmware/vmnet8/dhcpd 2>/dev/null - cp /mnt/var/lib/vmware/templates/nat.conf \ - /mnt/etc/vmware/vmnet8/nat 2>/dev/null -fi - ############################################################################# # preparation of /tmp directory (partition 44, nfs scratch, ramdisk). there # might be the chance that we have a disk partition available, so wait for @@ -456,6 +309,8 @@ if [ -n "$scratch" -a -z "$tmpisdisk" ] ; then umount /mnt/tmp >/dev/null 2>&1 mount -t nfs -o rw,tcp,nolock,intr,nodev,soft,timeo=2,nosuid \ ${tmpserv}:${tmppath}/${clientip} /mnt/tmp >/dev/null 2>&1 + # somehow we need to move it to the vmware plugin. Any ideas + # how to handle the dependencies? # create an empty container file for vmware *.vmem, it does not # like to live on NFS exports if [ "x$vmware" != "x" -a "x$vmware" != "xno" ] ; then diff --git a/os-plugins/plugins/vmware/XX_vmware.sh b/os-plugins/plugins/vmware/XX_vmware.sh index 848bb10b..86f7854d 100644 --- a/os-plugins/plugins/vmware/XX_vmware.sh +++ b/os-plugins/plugins/vmware/XX_vmware.sh @@ -111,61 +111,582 @@ if [ -e /initramfs/plugin-conf/vmware.conf ]; then echo -e "\tmount -t usbfs usbfs /proc/bus/usb 2>/dev/null" \ >>/mnt/etc/${D_INITDIR}/boot.slx # TODO: we still use this function? Prove if we can delete it. - config_vmware chmod 1777 /mnt/var/run/vmware # define a variable where gdm/kdm should look for additional sessions # do we really need it? # export vmsessions=/var/lib/vmware/vmsessions + config_vmware + chmod 1777 /mnt/var/run/vmware + # define a variable where gdm/kdm should look for additional sessions + # do we really need it? looks like we can delete it... + # export vmsessions=/var/lib/vmware/vmsessions - # directory of templates and xdialog files - vmdir=/mnt/var/lib/vmware - - if cp ${vmdir}/templates/xdialog.sh /mnt/var/X11R6/bin/ 2>/dev/null; then - # create default.desktop for kdm - echo -e "[Desktop Entry]\nEncoding=UTF8\nName=Default\nName[de]=Standard"\ - >/mnt/etc/X11/sessions/default.desktop - - #I dont like this part, but there is no simple workaround. We need to - #create xdialog.sh on every box :( - echo "Exec=/var/X11R6/bin/xdialog.sh" \ - >>/mnt/etc/X11/sessions/default.desktop - echo "Type=Application" >>/mnt/etc/X11/sessions/default.desktop - - # all virtual machine clients - cat ${vmdir}/xdialog-files/${pool}/*.xdialog \ - >>/mnt/var/X11R6/bin/xdialog.sh - - # /usr/share/xsessions/* files for the menu - for i in /mnt/usr/share/xsessions/*.desktop; do - # execute - echo "\"$(grep '^Exec=' ${i}|sed 's/^Exec=//')\" \\" \ - >>/mnt/var/X11R6/bin/xdialog.sh - # short description - echo "\"$(grep '^Name=' ${i}|sed 's/^Name=//')\" \\" \ - >>/mnt/var/X11R6/bin/xdialog.sh - # long description - echo "\"$(grep '^Comment=' ${i}|sed 's/^Comment=//')\" \\" \ - >>/mnt/var/X11R6/bin/xdialog.sh - done - # closing bracket as last line ends with '\' - echo ")" >>/mnt/var/X11R6/bin/xdialog.sh - chmod 755 /mnt/var/X11R6/bin/xdialog.sh - - # copy xdm files, so we could choose them before we log in - for i in ${vmdir}/xdmsessions/${pool}/*.desktop;do - cp ${i} /mnt/etc/X11/sessions/ - done - else - error "$scfg_vmchs" nonfatal - fi # we configured vmware, so we can delete the not_configured file rm /mnt/etc/vmware/not_configured 2>/dev/null # copy dhcpd.conf and nat for vmnet8 (nat) # fixme: It should be possible to start just one vmware dhcp which should # listen to both interfaces vmnet1 and vmnet8 ... + #TODO: copy it from plugin source... cp /mnt/var/lib/vmware/templates/dhcpd.conf \ /mnt/etc/vmware/vmnet8/dhcpd 2>/dev/null cp /mnt/var/lib/vmware/templates/nat.conf \ /mnt/etc/vmware/vmnet8/nat 2>/dev/null fi - + + # TODO: plugin should copy it... find out how + # TODO: perhaps we can a) kick out vmdir + # b) configure vmdir by plugin configuration + # TODO: How to start it. See Wiki. Currently a) implemnted + # a) we get get information and start the programm with + # /var/X11R6/bin/run-vmware.sh "$imagename" "$name_for_vmwindow" "$ostype_of_vm" "$kind_of_network" + # b) we write a wrapper and get the xml-file as attribute + cat < /mnt/var/X11R6/bin/run-vmware.sh +#!/bin/bash +# +# Description: Script for preparing VMware environment Diskless +# X Stations and interactive session chooser (v4) +# +# Author(s): see project authors file +# letzte Ă„nderung Dirk, 15.10. +# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg +# +# Version: 0.16.611 +# +################################################################################ + + +################################################################################ +## +## Put $HOME to another location +## +################################################################################ + +# We need to change $HOME so it saves everything to /tmp +#export HOME="/tmp/${USER}" +# following mkdir we have now twice in this script... but better twice +# as not seperated. Now its no problem to delete this +# "Put $HOME to another location" section later +#mkdir /tmp/${USER} +#ln -s /home/${USER}/.Xauthority /tmp/${USER}/.Xauthority + + + +### 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 fd/cd/dvd and drive devices, floppy b: for configuration +#floppya is always false, if we have a floppy device or not isn't +#important. +floppya="FALSE" +floppyb="TRUE" +floppybname="/etc/vmware/loopimg/fd.img" +cdr_1="FALSE" +cdr_2="FALSE" +# ide is expected default, test for the virtual disk image type should +# be done while creating the runscripts ... +ide="TRUE" +scsi="FALSE" +hddrv="lsilogic" + +# 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 +vmbuild= + +# VMware start options +#-X = fullscreen +vmopt="-X" + +# temporary disk space for logs, etc... +# use /tmp/vmware/\${USER} if /tmp sits on NFS import +export tmpdir=/tmp/\${USER} + +# configfile +confile="\${tmpdir}/runvmware.conf" + +# users vmware config folder +vmhome="\${HOME}/.vmware" +#vmhome="/tmp/\${USER}/.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="\$1" +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 + +# define name for VMware window +displayname="\$2" + +# Definition of the client system +vmostype="\$3" + +# Definition of the client system +network="\$4" + + +# 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 = \"\${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}\" + 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 = \"\${tmpdir}\" + mainMem.useNamedFile = \"TRUE\" + snapshot.disabled = \"TRUE\" + tools.syncTime = \"TRUE\" + # use redoLogDir = \"/dev/shm\" if sitting on NFS import + 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 + echo -e "\$1" + + # log in file + echo -e "\$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 < /etc/vmware/fd-loop/config.xml +echo "" > /etc/vmware/fd-loop/config.xml +echo " " >> /etc/vmware/fd-loop/config.xml +echo " " >> /etc/vmware/fd-loop/config.xml +echo " " >> /etc/vmware/fd-loop/config.xml +echo " " >> /etc/vmware/fd-loop/config.xml +echo " " >> /etc/vmware/fd-loop/config.xml +# if we have a scanner, then copy scannerinformation to this xml +sanelines="\$(wc -l /etc/sane.d/net.conf|awk '{ print \$1 };')" +if [ -f /etc/sane.d/net.conf ] && [ "\${sanelines}" -eq 1 ]; then + echo "" \ + >> /etc/vmware/fd-loop/config.xml + echo "" >> /etc/vmware/fd-loop/config.xml +fi +echo " " >> /etc/vmware/fd-loop/config.xml +echo "" >> /etc/vmware/fd-loop/config.xml + +# 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 copy it from plugin location (like this script) +cp /var/lib/vmware/templates/nvram.5.0 \${tmpdir}/nvram + +# 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 +EOF + [ $DEBUGLEVEL -gt 0 ] && echo "done with 'vmware' os-plugin ..."; fi -- cgit v1.2.3-55-g7522