From da8b2bf2b5860698f71372c22b473dba8fcb18b4 Mon Sep 17 00:00:00 2001 From: Volker Uhrig Date: Sun, 17 Feb 2008 02:28:41 +0000 Subject: * cleaned up code * fixed tabs * plugin includes now all needed files. they will get copied from the plugin dir git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1553 95ad53e4-c205-0410-b2fa-d234c58c8868 --- .../plugins/vmware/OpenSLX/OSPlugin/vmware.pm | 24 + os-plugins/plugins/vmware/XX_vmware.sh | 747 +++------------------ os-plugins/plugins/vmware/files/README | 23 + .../files/Vorlage_VMwareImageAdministrator.xml | 43 ++ .../plugins/vmware/files/client-config.xml.default | 8 + os-plugins/plugins/vmware/files/dhcpd.conf | 22 + os-plugins/plugins/vmware/files/nat.conf | 46 ++ os-plugins/plugins/vmware/files/nvram.5.0 | Bin 0 -> 8664 bytes os-plugins/plugins/vmware/files/runvmware-v2 | 559 +++++++++++++++ 9 files changed, 828 insertions(+), 644 deletions(-) create mode 100644 os-plugins/plugins/vmware/files/README create mode 100755 os-plugins/plugins/vmware/files/Vorlage_VMwareImageAdministrator.xml create mode 100644 os-plugins/plugins/vmware/files/client-config.xml.default create mode 100644 os-plugins/plugins/vmware/files/dhcpd.conf create mode 100644 os-plugins/plugins/vmware/files/nat.conf create mode 100644 os-plugins/plugins/vmware/files/nvram.5.0 create mode 100644 os-plugins/plugins/vmware/files/runvmware-v2 (limited to 'os-plugins') diff --git a/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm b/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm index d3d5375a..048f0f38 100644 --- a/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm +++ b/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm @@ -79,6 +79,30 @@ sub getAttrInfo }; } +sub preInstallationPhase +{ # called before chrooting into vendor-OS root, should be used if any files + # have to be downloaded outside of the chroot (which might be necessary + # if the required files can't be installed via the meta-packager) + my $self = shift; + my $pluginRepositoryPath = shift; + # the folder where the stage1-plugin should store all files + # required by the corresponding stage3 runlevel script + my $pluginTempPath = shift; + # a temporary playground that will be cleaned up automatically + + # get path of files we need to install + my $pluginName = $self->{'name'}; + my $pluginFilesPath + = "$openslxConfig{'base-path'}/lib/plugins/$pluginName/files"; + + # copy all needed files now + my @files = ("dhcpd.conf", "nat.conf", "nvram.5.0", "runvmware-v2"); + foreach my $file (@files) { + copyFile("$pluginFilesPath/$file", "$pluginRepositoryPath"); + } +} + + sub suggestAdditionalKernelModules { my $self = shift; diff --git a/os-plugins/plugins/vmware/XX_vmware.sh b/os-plugins/plugins/vmware/XX_vmware.sh index 86f7854d..741bc013 100644 --- a/os-plugins/plugins/vmware/XX_vmware.sh +++ b/os-plugins/plugins/vmware/XX_vmware.sh @@ -1,5 +1,7 @@ #! /bin/sh +#TODO: nvram,functions + # check if the configuration file is available if [ -e /initramfs/plugin-conf/vmware.conf ]; then @@ -24,42 +26,41 @@ if [ -e /initramfs/plugin-conf/vmware.conf ]; then # 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 + + # 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 echo " * vmware part 2" @@ -68,624 +69,82 @@ if [ -e /initramfs/plugin-conf/vmware.conf ]; then # 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 + 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 - # 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? looks like we can delete it... - # export vmsessions=/var/lib/vmware/vmsessions + 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 + # 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? looks like we can delete it... + # export vmsessions=/var/lib/vmware/vmsessions - # we configured vmware, so we can delete the not_configured file - rm /mnt/etc/vmware/not_configured 2>/dev/null + # 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 + # 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 ... + echo " * DEBUG:" + ls /mnt/opt/openslx/plugin-repo/vmware/ + echo " * DEBUG2:" + ls /mnt/etc/vmware/vmnet8/{nat,dhcpd} + cp /mnt/opt/openslx/plugin-repo/vmware/dhcpd.conf \ + /mnt/etc/vmware/vmnet8/dhcpd 2>/dev/null + cp /mnt/opt/openslx/plugin-repo/vmware/nat.conf \ + /mnt/etc/vmware/vmnet8/nat 2>/dev/null + echo " * DEBUG3:" + ls /mnt/etc/vmware/vmnet8/{nat,dhcp} - # 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 + cp /mnt/opt/openslx/plugin-repo/vmware/runvmware-v2 \ + /mnt/var/X11R6/bin/run-vmware.sh [ $DEBUGLEVEL -gt 0 ] && echo "done with 'vmware' os-plugin ..."; diff --git a/os-plugins/plugins/vmware/files/README b/os-plugins/plugins/vmware/files/README new file mode 100644 index 00000000..4bf303ec --- /dev/null +++ b/os-plugins/plugins/vmware/files/README @@ -0,0 +1,23 @@ +Files +- client-config.xml.default + Describes how the xml config needs to look like which will be used by + the Virtual Machine (see nvram below). Currently used internal and + shouldn't affect normal OpenSLX users. Data will be available on every + OpenSLX Client. +- dhcpd.conf + DHCP Configuration file, which will be copied to + /etc/vmware/vmnet8/dhcpd/ + Needed if you want to use NAT +- nat.conf + NAT Configuration file, which will be copied to + /etc/vmware/vmnet8/nat/ +- nvram.5.0 + This nvram supports a second Floppy drive. Helpfull if you want to + get some data from linux to your Windows VirtualMachine (like + Scanner-IP or Userinformation) +- runvmware-v2 + The main script which will configure and start the Virtual Machine +- Vorlage_VMwareImageAdministrator.xml + This example files shows which VMware features are configureable for + each virtual machine. + Should be moved sooner or later to the vm-chooser plugin diff --git a/os-plugins/plugins/vmware/files/Vorlage_VMwareImageAdministrator.xml b/os-plugins/plugins/vmware/files/Vorlage_VMwareImageAdministrator.xml new file mode 100755 index 00000000..e58d829b --- /dev/null +++ b/os-plugins/plugins/vmware/files/Vorlage_VMwareImageAdministrator.xml @@ -0,0 +1,43 @@ + + + + # Imagename with proper suffix + + + # 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" + + + #Description: priority, use a number to get it to a special position + # should only be used by our department and noone else + + + + diff --git a/os-plugins/plugins/vmware/files/client-config.xml.default b/os-plugins/plugins/vmware/files/client-config.xml.default new file mode 100644 index 00000000..f1612fc9 --- /dev/null +++ b/os-plugins/plugins/vmware/files/client-config.xml.default @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/os-plugins/plugins/vmware/files/dhcpd.conf b/os-plugins/plugins/vmware/files/dhcpd.conf new file mode 100644 index 00000000..6bc581a4 --- /dev/null +++ b/os-plugins/plugins/vmware/files/dhcpd.conf @@ -0,0 +1,22 @@ +# +# Configuration file for ISC 2.0b6pl1 vmnet-dhcpd operating on vmnet8. +# +# This file was automatically generated by the VMware configuration program. +# If you modify it, it will be backed up the next time you run the +# configuration program. +# +# We set domain-name-servers to make some DHCP clients happy +# (dhclient as configued in SuSE, TurboLinux, etc.). +# We also supply a domain name to make pump (Red Hat 6.x) happy. +# +allow unknown-clients; +default-lease-time 1800; # 30 minutes +max-lease-time 7200; # 2 hours + +subnet 192.168.100.0 netmask 255.255.255.0 { + range 192.168.100.100 192.168.100.101; + option broadcast-address 192.168.100.255; + option domain-name-servers 192.168.100.2; + option domain-name "localdomain"; + option routers 192.168.100.2; +} diff --git a/os-plugins/plugins/vmware/files/nat.conf b/os-plugins/plugins/vmware/files/nat.conf new file mode 100644 index 00000000..07d684f0 --- /dev/null +++ b/os-plugins/plugins/vmware/files/nat.conf @@ -0,0 +1,46 @@ +# Linux NAT configuration file +[host] +# NAT gateway address +ip = 192.168.100.2 +netmask = 255.255.255.0 +# or ip = 172.16.184.2/24 + +# enable configuration; disabled by default for security reasons +#configport = 33445 + +# VMnet device if not specified on command line +device = /dev/vmnet8 + +# Allow PORT/EPRT FTP commands (they need incoming TCP stream...) +activeFTP = 1 + +# Allows the source to have any OUI. Turn this one if you change the OUI +# in the MAC address of your virtual machines. +#allowAnyOUI = 1 + +[udp] +# Timeout in seconds, 0 = no timeout, default = 60; real value might +# be up to 100% longer +timeout = 60 + +[incomingtcp] +# Use these with care - anyone can enter into your VM through these... + +# FTP (both active and passive FTP is always enabled) +# ftp localhost 8887 +#8887 = 172.16.184.128:21 + +# WEB (make sure that if you are using named webhosting, names point to +# your host, not to guest... And if you are forwarding port other +# than 80 make sure that your server copes with mismatched port +# number in Host: header) +# lynx http://localhost:8888 +#8888 = 172.16.184.128:80 + +# SSH +# ssh -p 8889 root@localhost +#8889 = 172.16.184.128:22 + +[incomingudp] +# UDP port forwarding example +#6000 = 172.16.184.128:6001 diff --git a/os-plugins/plugins/vmware/files/nvram.5.0 b/os-plugins/plugins/vmware/files/nvram.5.0 new file mode 100644 index 00000000..85125f1e Binary files /dev/null and b/os-plugins/plugins/vmware/files/nvram.5.0 differ diff --git a/os-plugins/plugins/vmware/files/runvmware-v2 b/os-plugins/plugins/vmware/files/runvmware-v2 new file mode 100644 index 00000000..eaa35b0e --- /dev/null +++ b/os-plugins/plugins/vmware/files/runvmware-v2 @@ -0,0 +1,559 @@ +#!/bin/bash +# +# Description: Script for preparing VMware environment Diskless +# X Stations and interactive session chooser (v4) +# +# Author(s): see project authors file +# letzte Änderung Volker, 17 .Feb 2008 +# Copyright: (c) 2003 - 2008 - 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="CHANGEIT" +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="CHANGEIT" +displayname="$2" + +# Definition of the client system +#vmostype="CHANGEIT" +vmostype="$3" + +# Definition of the client system +#network="CHANGEIT" +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. ###### + + # 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 = \"${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: Take care if plugin-repo changes +#cp /var/lib/vmware/templates/nvram.5.0 ${tmpdir}/nvram +cp /opt/openslx/plugin-repo/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 -- cgit v1.2.3-55-g7522