summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/virtualbox/files/run-virt.include.bak
blob: 2fd81f6bd18d1b4395bc06a0bad8c2f136e89465 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
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"