summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/virtualbox/files/run-virt.include
diff options
context:
space:
mode:
Diffstat (limited to 'os-plugins/plugins/virtualbox/files/run-virt.include')
-rw-r--r--os-plugins/plugins/virtualbox/files/run-virt.include372
1 files changed, 0 insertions, 372 deletions
diff --git a/os-plugins/plugins/virtualbox/files/run-virt.include b/os-plugins/plugins/virtualbox/files/run-virt.include
deleted file mode 100644
index 53120f2c..00000000
--- a/os-plugins/plugins/virtualbox/files/run-virt.include
+++ /dev/null
@@ -1,372 +0,0 @@
-# run-virt.include
-# -----------------------------------------------------------------------------
-# Copyright (c) 2009..2010 - RZ Uni Freiburg
-# Copyright (c) 2009..2010 - OpenSLX GmbH
-#
-# This program/file 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 feedback to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org
-# -----------------------------------------------------------------------------
-# run-virt.include
-# - Include script for running the VirtualBox on an OpenSLX client via the
-# run-virt.sh or run-vmgrid.sh
-################################################################################
-
-################################################################################
-### Include general configuration
-################################################################################
-if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf ]; then
- . ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf
-else
- writelog "Problems reading config file of ${self} plugin"
- exit 1
-fi
-
-################################################################################
-### Declaration of default variables
-################################################################################
-
-PLUGINCONFVIRTUALBOX="${PLUGINCONFROOT}/${self}"
-PLUGINDIRVIRTUALBOX="${OPENSLX_DEFAULT_DIR}/plugin-repo/${self}"
-# create TMPDIR for all users
-TMPDIR=/tmp/${self}
-mkdir -m 1777 ${TMPDIR} 2>/dev/null
-# dir for configs
-confdir="/tmp/${self}/${USER}/${VM_ID}"
-# use alternate configuration directory instead of $HOME/.VirtualBox
-export VBOX_USER_HOME=${confdir}
-# define dirs and files which can be removed after exit, be carefull!
-RMDIRS="${snapshotdir} ${confdir} /tmp/.vbox-${USER}-ipc"
-rm -rf ${RMDIRS} 2>/dev/null
-machfolder="${confdir}/Machines"
-# use vm_shortname for dir and config names since vm_name can be very long
-machconfig="${machfolder}/${vm_shortname}/${vm_shortname}.xml"
-diskfolder="${confdir}/HardDisks"
-snapshotdir=${machfolder}/${vm_shortname}/Snapshots
-mkdir -p ${diskfolder} ${snapshotdir} 2>/dev/null
-# check if diskless var empty?
-[ -z "${diskless}" ] && diskless=0
-
-# configure our own rwimg, empty image which we support
-if [ "${imgmode}" = "rwimg" ]; then
- # what is our rwimg called?
- imgname="${vm_shortname}.vdi"
- vmpath=${imgpath}/${imgname}
- if ! [ -e "${vmpath}" ]; then
- cat ${PLUGINDIRVIRTUALBOX}/rwimg.vdi.gz | gunzip > "${vmpath}"
- fi
-fi
-
-# link to image
-diskfile="${diskfolder}/${imgname}"
-[ ${diskless} -eq 0 ] && ln -sf ${vmpath} ${diskfile}
-
-# check the file type
-if echo ${imgname} | grep -qiE "vdi|vmdk|vhd" && [ ${diskless} -eq 0 ]; then
- imgfmt=$(echo ${imgname##*.} | tr [a-z] [A-Z])
-elif [ ${diskless} -eq 0 ]; then
- writelog "${imgname} is not a valid image format (vdi|vmdk|vhd), exiting!"
- cleanexit 1
-fi
-
-# TODO: maybe rewrite, to reduce checks, merge it with network option,
-# so we can have a "compatibility to vmware config" section
-case "${vmostype}" in
- winxp*|windowsxp*)
- vmostype="WindowsXP"
- ;;
- winvista*|windowsvista*)
- vmostype="WindowsVista"
- ;;
- windows7*)
- vmostype="Windows7"
- ;;
- linux*|*ubuntu*|*suse*|debian*|*sci*)
- if echo "${vmostype}" | grep -q "64"; then
- vmostype="Linux26_64"
- # check for vtflag
- if [ ${vtflag} -ne 1 ]; then
- writelog "You are trying to boot a 64 bit OS without a VT enabled CPU"
- writelog "This is not supported, exiting!"
- cleanexit 1
- fi
- # check if host is only 32 bit, then use only 1 cpu (only 1 supported)
- if echo "${host_arch}" | grep -qE "i.86"; then
- cpu_cores=1
- fi
- else
- vmostype="Linux26"
- fi
- ;;
-esac
-
-writelog "Directories:"
-writelog "\tConfig dir:\t\t$confdir"
-writelog "\tMachines dir:\t\t$machfolder"
-writelog "\tMachine config:\t\t$machconfig"
-[ ${diskless} -eq 0 ] && writelog "\tHardDisks dir:\t\t$diskfolder"
-
-################################################################################
-### Hardware checks
-################################################################################
-
-# remove ':' from MAC addr for vbox
-macaddr=$(echo ${macaddr} | sed 's/://g')
-
-# machine UUID, MAC addr part of it
-machineuuid="00000000-0000-0000-0000-${macaddr}"
-# cosmetical, since UUID in lower case
-machineuuid=$(echo ${machineuuid} | tr [A-Z] [a-z])
-# get UUID of VBox image, if not diskless
-[ ${diskless} -eq 0 ] && diskuuid=$(VBoxManage -q showvdiinfo ${diskfile} \
- | grep UUID | awk '{print $2}')
-# make disk immutable
-imgtype="Immutable"
-# snapshot UUID is static
-snapshotuuid="88bc8b6d-f248-468a-95fe-318084904f8b"
-# imageuuid in machine.include, dafault snapshotuuid
-imageuuid=${snapshotuuid}
-
-# check if rw image
-# remove disk and add rwimg if set
-if echo "${imgmode}" | grep -q rw; then
- # lock existing?
- if [ -e "${vmpath}.lock" ]; then
- writelog "This rw image is already in use."
- writelog "Found lock: ${vmpath}.lock, exiting!"
- writelog "Remove lock if you are sure that this is not the case"
- cleanexit 1
- # image rw?
- elif ! [ -w ${vmpath} ]; then
- writelog "You defined mode rw, but image ${vmpath} is not rw! \c"
- writelog "Please correct, exiting!"
- cleanexit 1
- fi
- # add lock
- touch "${vmpath}.lock"
- # remove lock after VM stopped
- RMDIRS="${RMDIRS} ${vmpath}.lock"
- imgtype="Normal"
- # replace image uuid in machine config
- imageuuid=${diskuuid}
-elif [ ${diskless} -eq 0 ]; then
- # use temp disk as snapshot
- cat ${PLUGINDIRVIRTUALBOX}/empty-diff.vdi.gz \
- | gunzip > "${snapshotdir}/{${snapshotuuid}}.vdi"
-fi
-
-# TODO: MEM muss noch angepasst werden. Maschine crasht wenn nehr als 50% MEM
-# memory part equal to vmware plugin
-# percentage of memory to use for virtualbox in standard case
-#if [ -n "${forcemem}" ]; then
-# mem="${forcemem}"
-#else
-# permem=30
-# if [ "${totalmem}" -ge "1600" ]; then
-# permem=40
-# fi
-# # check if /tmp is on harddisk
-# if grep -qe "/dev/.* /tmp " /proc/mounts ; then
-# permem=60
-# id44="1"
-# # Hack, if more than 2,5G RAM use 40% of Ram and write vmem into Ram as well
-# # (40% vmware | 40% confdir(vmem...) | 20% host
-# # VMplayer 2+ issue
-# # TODO: makes this sense for vbox?
-# #if [ "${totalmem}" -ge "2500" ]; then
-# #permem=40
-# #rmdir ${snapshotdir}
-# #snapshotdirold=${snapshotdir}
-# #snapshotdir=/dev/shm/${self}/${USER}/${VM_ID}
-# #mkdir -p ${snapshotdir}
-# #ln -sf ${snapshotdir} ${snapshotdirold}
-# #fi
-# fi
-# mem=$(expr ${totalmem} / 100 \* ${permem})
-# if [ "${id44}" = "1" ]; then
-# hostmem=$(expr ${totalmem} - ${mem})
-# else
-# hostmem=$(expr ${totalmem} - ${mem} - ${mem})
-# fi
-# #permem=40
-# #mem=$(expr ${totalmem} * ${permem})
-# if [ "${mem}" -lt "256" ] || [ "${hostmem}" -lt "256" ]; then
-# writelog "Memory out of range: ${mem} MB (guest) / ${hostmem} MB (host)!"
-# writelog "Min. 256 MB for host and guest!"
-# cleanexit 1
-# fi
-#fi
-
-# translate network cards
-case "${network_card}" in
- e1000)
- vb_network_card="82540EM"
- ;;
- virtio)
- vb_network_card="virtio"
- ;;
- *)
- network_card="pcnet"
- vb_network_card="Am79C973"
-esac
-
-# translate network kinds (nat, bridged, host-only)
-case "${network_kind}" in
- bridge*)
- network_kind='BridgedInterface name="br0"'
- ;;
- host*)
- network_kind='HostOnlyInterface name="vboxnet0"'
- ;;
- *)
- network_kind="NAT"
-esac
-
-# translate boot, use if set else set to HardDisk
-# usually support for a,c,d,n, stands for Floppy, HD, CD-ROM, Network
-# support nfs and tftp as well
-case ${boot} in
- n*|tftp)
- boot="Network"
- if [ "${network_kind}" = "NAT" ] && [ -n "${virtualbox_tftpdir}" ]; then
- # use vm_shortname to avoid Problems /w TFTP in NAT
- vm_name=${vm_shortname}
- # link TFTP dir for NAT TFTP boots
- mkdir -p ${confdir}/TFTP
- if [ -e ${virtualbox_tftpdir}/pxelinux.0 ]; then
- cp ${virtualbox_tftpdir}/pxelinux.0 ${confdir}/TFTP/${vm_name}.pxe
- else
- writelog "${virtualbox_tftpdir}/pxelinux.0 not found!"
- writelog "Network boot won't work, exiting!"
- cleanexit 1
- fi
- for i in $(ls ${virtualbox_tftpdir}); do
- ln -sf ${virtualbox_tftpdir}/${i} ${confdir}/TFTP/${i}
- done
- fi
- ;;
- # later maybe c|disk|hd*|sd*) for HD and d|cd*) for CD-ROM
- *)
- boot="HardDisk"
- ;;
-esac
-
-# nested paging
-npaging="false"
-# enable VT
-enablevt="false"
-# check for VT, if not available use only 1 cpu (only 1 supported)
-[ ${vtflag} -eq 0 ] && cpu_cores=1
-[ ${vtflag} -eq 1 ] && enablevt="true"
-
-# external GUI
-vrdpport=${remotedesktopport}
-
-[ ${diskless} -eq 0 ] && writelog "\tSnapshots dir:\t\t$snapshotdir"
-writelog "Diskimage:"
-[ ${diskless} -eq 0 ] && writelog "\tDisk file:\t\t$diskfile"
-[ ${diskless} -eq 0 ] && writelog "\tDisk format:\t\t$imgfmt"
-[ ${diskless} -eq 0 ] && writelog "\tDisk type:\t\t$imgtype"
- writelog "\tVMostype:\t\t$vmostype"
- writelog "\tMachine UUID:\t\t$machineuuid"
-[ ${diskless} -eq 0 ] && writelog "\tDisk UUID:\t\t$diskuuid"
-writelog "Virtual Hardware:"
-writelog "\tCPU cores:\t\t${cpu_cores}\c"
-[ ${vtflag} -eq 0 ] && writelog ""
-[ ${vtflag} -eq 1 ] && writelog " (VT enabled CPU)"
-writelog "\tGuest RAM:\t\t${mem} MB"
-# echo nur wenn hostmem gesetzt
-[ -n "${hostmem}" ] && writelog "\tHost RAM:\t\t${hostmem} MB"
-writelog "\tMAC address:\t\t$macaddr"
-writelog "\tNetwork card:\t\t${vb_network_card}"
-writelog "\tNetwork kind:\t\t${network_kind}"
-writelog "\tBooting from:\t\t${boot}\c"
-[ ${diskless} -eq 0 ] && writelog ""
-[ ${diskless} -eq 1 ] && writelog " 'diskless'"
-# TODO: server start activate via xml, etc...
-#writelog "\tGuest VRDP port:\t${vrdpport}"
-writelog "\tCD-ROM1:\t\t${cdrom0}"
-#writelog "\tCD-ROM2:\t\t${cdrom1}"
-#writelog "\tFloppy_A:\t\t${floppy0}"
-#writelog "\tFloppy_B:\t\t${floppy1}"
-# defined in run-virt.sh and run-vmgrid.sh
-writelog "\tShared Folders '${sharename}':\t${sharepath}"
-
-################################################################################
-### Pepare and configure virtual machine and disk image
-################################################################################
-
-# create Virtualbox.xml
-. ${PLUGINCONFVIRTUALBOX}/virtualbox.include
-
-# remove snapshot disk when using rw images
-if [ "${imgtype}" != "Immutable" ]; then
- sed -i "/${snapshotuuid}/d" "${confdir}/VirtualBox.xml"
-fi
-
-# TODO: add rawdisk if requested
-#"raw.vmdk" format="VMDK" type="Writethrough"/>
-
-# create machine.xml
-. ${PLUGINCONFVIRTUALBOX}/machine.include
-
-# remove CD-ROM
-if [ "${cdrom0}" != "TRUE" ]; then
- sed -i "/HostDrive/d" ${machconfig}
- sed -i '/AttachedDevice.*type="DVD"/d' ${machconfig}
- sed -i "/<!-- PLEASE DO NOT REMOVE THIS COMMENT (CD)!!! -->/d" ${machconfig}
-fi
-
-# if diskless remove all disks
-if [ ${diskless} -eq 1 ]; then
- sed -i "/<HardDisk/d;/<\/HardDisk/d" "${confdir}/VirtualBox.xml"
- sed -i "/${imageuuid}/d" ${machconfig}
- sed -i '/AttachedDevice type="HardDisk"/d' ${machconfig}
- sed -i "/<!-- PLEASE DO NOT REMOVE THIS COMMENT (HD)!!! -->/d" ${machconfig}
-fi
-
-# define redirects
-if [ ${redirects} -ge 1 ]; then
- (( i=1 ))
- writelog "\tGuest redirects:\t\c"
- while [ ${i} -le ${redirects} ]; do
- extradataitem='<ExtraDataItem name="VBoxInternal/Devices'
- extradataitem="${extradataitem}/${network_card}/0/LUN#0/Config"
- extradataitem="${extradataitem}/${redirect_name[$i]}/"
- extradataprotocol="Protocol\" value=\"${redirect_proto[$i]}\"/>"
- extradatahostport="HostPort\" value=\"${redirect_hport[$i]}\"/>"
- extradataguestport="GuestPort\" value=\"${redirect_gport[$i]}\"/>"
- sed -i "s,</ExtraData>, ${extradataitem}${extradataguestport}\n\
- ${extradataitem}${extradatahostport}\n\
- ${extradataitem}${extradataprotocol}\n\
- </ExtraData>," "${machconfig}"
- writelog "${tabspace}${redirect_name[$i]} port: ${redirect_hport[$i]}"
- tabspace='\t\t\t\t'
- (( i=$i+1 ))
- done
-fi
-
-################################################################################
-### finally set env for run-virt.sh
-################################################################################
-
-# wait for a certain command to settle
-# get the PID of the right process
-# kill PID, seems to work
-VBMANPID=$(pstree -p | grep VBoxXPCOMIPCD | grep -ivE "VirtualBox|VBoxHeadless"\
- | sed -e "s/.*VBoxXPCOMIPCD(\(.*\)).*/\1/")
-for i in $(echo ${VBMANPID}); do
- kill -9 ${VBMANPID} >/dev/null 2>&1
-done
-
-# set the variables appropriately (several interfaces with different names)
-VIRTCMD=$(which VirtualBox 2>/dev/null)
-VIRTCMDOPTS="--startvm ${machineuuid} --start-running"
-
-# set headless mode (-v off to disable vrdp)
-VIRTCMDHL=$(which VBoxHeadless 2>/dev/null)
-VIRTCMDOPTSHL="-s ${machineuuid}"