diff options
Diffstat (limited to 'os-plugins')
-rwxr-xr-x | os-plugins/plugins/vmchooser/files/mkdosfs | bin | 0 -> 20664 bytes | |||
-rw-r--r-- | os-plugins/plugins/vmchooser/files/run-virt.sh | 167 |
2 files changed, 167 insertions, 0 deletions
diff --git a/os-plugins/plugins/vmchooser/files/mkdosfs b/os-plugins/plugins/vmchooser/files/mkdosfs Binary files differnew file mode 100755 index 00000000..db928bcf --- /dev/null +++ b/os-plugins/plugins/vmchooser/files/mkdosfs diff --git a/os-plugins/plugins/vmchooser/files/run-virt.sh b/os-plugins/plugins/vmchooser/files/run-virt.sh new file mode 100644 index 00000000..ac17d391 --- /dev/null +++ b/os-plugins/plugins/vmchooser/files/run-virt.sh @@ -0,0 +1,167 @@ +#!/bin/bash +# ----------------------------------------------------------------------------- +# Copyright (c) 2007..2009 - RZ Uni FR +# Copyright (c) 2007..2009 - OpenSLX GmbH +# +# This program is free software distributed under the GPL version 2. +# See http://openslx.org/COPYING +# +# If you have any feedback please consult http://openslx.org/feedback and +# send your suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# run-virt.sh +# - This is the generic wrapper for the several virtualization solutions. +# The idea is to setup a set of variables used by at least two different +# tools and then include the specific plugin which configures the speci- +# fied virtualization tool. +# ----------------------------------------------------------------------------- + +# The PATH... +export PATH="${PATH}:/var/X11R6/bin:/usr/X11R6/bin" + +# Read needed variables from XML file +################################################################################ +xml=$1 + +# file name of the image +imagename=$(grep -i "<image_name param=\"" ${xml} | awk -F "\"" '{ print $2 }') + +# short description of the image (as present in the vmchooser menu line) +short_description=$(grep "short_description param=\"" ${xml} | \ + sed -e "s/&.*;/; /g" | awk -F "\"" '{print $2}') +# if ${short_description} not defined use ${image_name} +short_description=${short_description:-"${image_name}"} +displayname=${short_description} + +# type of virtual machine to run +virt_mach=$(grep "virtualmachine param=\"" ${xml} | \ + sed -e "s/&.*;/; /g" | awk -F "\"" '{print $2}') + +# definition of the client system +vmostype=$(grep -i "<os param=\"" ${xml} | awk -F "\"" '{ print $2 }') + +# definition of the networking the client system is connected to +network_kind=$(grep -i "<network param=\"" ${xml} | awk -F "\"" '{ print $2 }') + +# serial port defined (e.g. "ttyS0" or "autodetect") +serial=$(grep -i "<serial port=\"" ${xml} | awk -F "\"" '{ print $2 }') + + +# declaration of default variables +################################################################################ + +# standard variables + +# get total amount of memory installed in your machine +totalmem=$(expr $(grep -i "memtotal" /proc/meminfo | awk '{print $2}') / 1024) + + +# 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="ide" + +# display resolution +hostres=$(xvidtune -show 2>/dev/null| grep -ve "^$") +xres=$(echo "${hostres}" | awk '{print $3}') +yres=$(echo "${hostres}" | awk '{print $7}') + +# set hostname: using original hostname and adding string "-vm" +hostname="VM-${HOST}" + +# name of the container (virtual machine image file) +diskfile="${vmdir}/${imagename}" + + +# functions used throughout the script +################################################################################ + +# check for files +filecheck () +{ + filecheck=$(LANG=us ls -lh ${diskfile} 2>&1) + writelog "Filecheck:\n${filecheck}\n" + #TODO: don't understand the sence in it + noimage=$(echo ${filecheck} | grep -i "no such file or directory" | wc -l) + rightsfile=${diskfile} + + # check if link + # TODO: mistake with 2nd rightsfile if its in another directory? + if [ -L "${diskfile}" ]; then + # take link target + rightsfile=$(ls -lh ${diskfile} 2>&1 | awk -F "-> *" '{print $2}') + rightsfile=${vmdir}/${rightsfile} + filecheck=$(LANG=us ls -lh ${rightsfile} 2>&1) + fi + + # does file exist + if [ "${noimage}" -ge "1" ]; then + writelog "Vmware Image Problem:\c " + writelog "\tThe image you've specified doesn't exist." + writelog "Filecheck says:\c " + writelog "\t\t${diskfile}:\n\t\t\tNo such file or directory" + writelog "Hint:\c " + writelog "\t\t\tCompare spelling of the image with your options.\n" + exit 1 + fi + + # readable? + if ! [ -r "${diskfile}" >/dev/null 2>&1 \ + -o -r "${diskfile}" >/dev/null 2>&1 ]; then + writelog "Vmware Image Problem:\c " + writelog "\tThe image you've specified has wrong rights." + writelog "Filecheck says:\t\t$(echo ${filecheck} \ + | awk '{print $1" "$3" "$4}') ${rightsfile}" + writelog "Hint:\t\t\tChange rights with: chmod a+r ${rightsfile}\n" + exit 1 + fi + + # writable (for persistent-mode)? + if ! [ -w "${diskfile}" >/dev/null 2>&1 \ + -o -w "${diskfile}" >/dev/null 2>&1 ] \ + && [ "${np}" = "independent-persistent" ]; then + writelog "Vmware Image Problem:\c " + writelog "\tThe image you have specified has wrong rights." + writelog "Filecheck says:\t\t$(echo ${filecheck} \ + | awk '{print $1" "$3" "$4}') ${rightsfile}" + writelog "Hint:\t\t\tUse nonpersistent-mode or change rights to rw\n" + exit 1 + fi +} + + +# setup the rest of the environment and run the virtualization tool just confi- +# gured +################################################################################ + +# adjust volume +writelog "Unmuting sound...\c " +amixer -q sset Master 28 unmute 2>/dev/null +amixer -q sset PCM 28 unmute 2>/dev/null +amixer -q sset Headphone 28 unmute 2>/dev/null +amixer -q sset Front 0 mute 2>/dev/null +writelog "finished\n" + +# copy guest configuration config.xml to be accessed via virtual floppy +cp ${xml} /var/lib/virt/vmchooser/fd-loop/config.xml + +# check if virtual machine container file exists +filecheck + +# get all virtual machine specific stuff from the respective include file +. /etc/opt/openslx/run-${virt_mach}.include +${VIRTCMD} ${VIRTCMDOPTS} + +writelog "Bye.\n" +exit 0 |