diff options
Diffstat (limited to 'os-plugins/plugins/virtualbox/files/run-virt.include.bak')
| -rw-r--r-- | os-plugins/plugins/virtualbox/files/run-virt.include.bak | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/os-plugins/plugins/virtualbox/files/run-virt.include.bak b/os-plugins/plugins/virtualbox/files/run-virt.include.bak new file mode 100644 index 00000000..2fd81f6b --- /dev/null +++ b/os-plugins/plugins/virtualbox/files/run-virt.include.bak @@ -0,0 +1,159 @@ +# run-virtualbox.include +# +# 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 +# +# Include script for running the Virtual Box on an OpenSLX client via the +# run-virt.sh. The stuff is copied to /etc/opt/openslx/virtualbox/run- +# virtualbox.include during stage3. + +################################################################################ +### General settings +################################################################################ + +# include general configuration from vmchooser +. /etc/opt/openslx/plugins/virtualbox/virtualbox.conf + +# Current ID, to make sure it won't run into conflicts if started more +# as once at the same time, else delete would make the trick... +ID=$$ +machname="$(basename ${diskfile})" +machname=${machname%.*} +# use alternate configuration directory instead of $HOME/.VirtualBox +export VBOX_USER_HOME="/tmp/vbox-${USER}" +rm -rf ${VBOX_USER_HOME}/* /tmp/.vbox-${USER}-ipc +machfolder="${VBOX_USER_HOME}/Machines" +machconfig="${machfolder}/${machname}/${machname}.xml" +diskfolder="${VBOX_USER_HOME}/HardDisks" +mkdir -p ${machfolder}/${machname}/Snapshots ${diskfolder} +ln -sf ${diskfile} ${diskfolder}/${machname}.vdi +# Get ID of VBox Image... +diskuid="$(VBoxManage -nologo showvdiinfo ${diskfile} |grep UUID|awk '{ print $2; }')" +# produce proper mac address format +mac="0050560d$(echo ${mac}|sed 's/://;y/ABCDEF/abcdef/')" +date="$(date +%Y-%m-%dT%H:%M:%SZ)" + +# Operating system. Possible: VBoxManage -nologo list ostypes: WindowsXP, +# WindowsVista, Windows7, Linux26 etc. +# keeps compatibility to vmware plugin run-virt.include +# Todo: maybe rewrite, to reduce checks, merge it with network option, +# so we can have a "compatibility to vmware config" section +if [ "${vmostype}" = "winxppro" ]; then vmostype="WindowsXP" +elif [ "${vmostype}" = "winvista" ]; then vmostype="WindowsVista" +elif [ "${vmostype}" = "Windows7" ]; then vmostype="Windows7" +elif [ "${vmostype}" = "linux" ]; then vmostype="Linux26" +elif [ -n "${vmostype}" ]; then vmostype="${vmostype}" +fi +# translate network kinds (nat, bridged, host-only) +if [ "${network_kind}" = "nat" ]; then network_kind="NAT" +elif [ "${network_kind}" = "bridged" ]; then network_kind="" +elif [ "${network_kind}" = "host-only" ]; then network_kind="" +fi + +# memory part equal to vmware plugin +# percentage of memory to use for virtualbox in standard case +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 + if [ "${totalmem}" -ge "2500" ]; then + permem=40 + #mkdir /dev/shm/vbox/${USER} + snapshotdir=/dev/shm/vbox/$USER + fi +fi +mem=$(expr ${totalmem} / 100 \* ${permem}) +if [ "${id44}" = "1" ]; then + memhost=$(expr ${totalmem} - ${mem}) +else + memhost=$(expr ${totalmem} - ${mem} - ${mem}) +fi + +#permem=40 +#mem=$(expr ${totalmem} * ${permem}) + +if [ "${mem}" -lt "256" ] || [ "${memhost}" -lt "256" ]; then + writelog "\tMemory out of range: ${mem} MB (guest) / ${memhost} MB (host)!" + writelog "\tMin. 256 MB for host and guest!" + exit 1 +fi + +# most of the following does not make much sense yet ... +# +# virtual fd/cd/dvd and drive devices, floppy b: for configuration +# if $floppy_0 from run-virt.include set then fdtest="TRUE" +fdtest= +fdtest=${floppy_0:+"TRUE"} +# if $fdtest not set floppy0="FALSE", else "TRUE" +floppy0=${fdtest:-"FALSE"} +floppy1="TRUE" +floppy1name="/var/lib/virt/vmchooser/loopimg/fd.img" +# if $cdrom_0 from run-virt.include set then cdtest="TRUE" +cdtest= +cdtest=${cdrom_0:+"TRUE"} +# if $cdtest not set cdrom0="FALSE", else "TRUE" +cdrom0=${cdtest:-"FALSE"} +# if $cdrom_1 from run-virt.include set then cdtest="TRUE" +cdtest= +cdtest=${cdrom_1:+"TRUE"} +# if $cdtest not set cdrom1="FALSE", else "TRUE" +cdrom1=${cdtest:-"FALSE"} +# ide is expected default, test for the virtual disk image type should +# be done while creating the runscripts ... +ide="TRUE" +hddrv="ide" + + +################################################################################ +### Pepare and configure virtual machine and disk image +################################################################################ + +# produce the machine configuration XML +sed -e "s,MACHINE,${machname},g;s,OSTYPE,${vmostype},;s,MEMSIZE,${mem}," \ + -e "s,DISKUID,${diskuid},;s,MACADDR,${mac},;s,DATE,${date}," \ + -e "s,NETTYPE,${network_kind},;s,OPTDEVICE,/dev/sr0," \ + /etc/opt/openslx/plugins/virtualbox/MachineTemplate.xml \ + >${machconfig} + +# shortened date YYYY-MM-DD +date=${date%T*} +# produce the general and containers configuration file +sed -e "s,DISKUID,${diskuid},;s,FD1NAME,${floppy1name},;s,DATE,${date}," \ + -e "s,DISKFILE,${diskfolder}/${machname}.vdi,;s,MACHINE,${machname},g;s,MACADDR,${mac}," \ + -e "s,MACHFOLDER,${machfolder},;s,DISKFOLDER,${diskfolder}," \ + /etc/opt/openslx/plugins/virtualbox/VirtualBox.xml \ + >${VBOX_USER_HOME}/VirtualBox.xml + +cat /opt/openslx/plugin-repo/virtualbox/empty-diff.vdi.gz | \ + gunzip >${machfolder}/${machname}/Snapshots/{88bc8b6d-f248-468a-95fe-318084904f8b}.vdi + + +#<DHCPServers>\t<DHCPServer\ +# networkName=\"HostInterfaceNetworking-vboxnet0\" IPAddress=\"192.168.56.100\"\ +# networkMask=\"255.255.255.0\" lowerIP=\"192.168.56.101\"\ +# upperIP=\"192.168.56.254\" enabled=\"1\"/> </DHCPServers> + +# finally set env for run-virt.sh +################################################################################ + +# wait for a certain command to settle +while [ TRUE ] ; do + ps aux|grep -v grep|grep -q VBoxSVC || break +done +# set the variables appropriately (several interfaces with different names) +VIRTCMD=$(which VirtualBox 2>/dev/null) +VIRTCMDOPTS="--startvm 00000000-1111-2222-3456-${mac} --start-running" |
