summaryrefslogtreecommitdiffstats
path: root/remote/modules/vbox/data/opt/openslx/scripts
diff options
context:
space:
mode:
authorChristian Rößler2013-08-28 14:16:05 +0200
committerChristian Rößler2013-08-28 14:16:05 +0200
commit120a12b3c10731a19dd12458518d2184b4f47faf (patch)
treef1ba17874c23ce2fe8d7b451bd9d08d233107e9f /remote/modules/vbox/data/opt/openslx/scripts
parentMerge branch 'master' of git.openslx.org:openslx-ng/tm-scripts (diff)
downloadtm-scripts-120a12b3c10731a19dd12458518d2184b4f47faf.tar.gz
tm-scripts-120a12b3c10731a19dd12458518d2184b4f47faf.tar.xz
tm-scripts-120a12b3c10731a19dd12458518d2184b4f47faf.zip
[vbox] addon-init for systemd service
Diffstat (limited to 'remote/modules/vbox/data/opt/openslx/scripts')
-rwxr-xr-xremote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env284
1 files changed, 284 insertions, 0 deletions
diff --git a/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env b/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
new file mode 100755
index 00000000..a4d10cbf
--- /dev/null
+++ b/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
@@ -0,0 +1,284 @@
+#!/bin/sh
+# Copyright (c) 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/
+# -----------------------------------------------------------------------------
+
+export PATH="$PATH":/opt/openslx/bin:/opt/openslx/sbin:/opt/openslx/usr/bin:/opt/openslx/usr/sbin
+VBOX_CONF_DIR=/opt/openslx/etc/vbox
+VBOXMANAGE=$(which vboxmanage)
+
+
+for wait in 1 1 2 2 3 end; do
+ grep '^SLX_DNS' /opt/openslx/config > /dev/null && break
+ [ "$wait" == "end" ] && echo "No DNS config found, using google dns" && break
+ echo "Waiting for DNS config.."
+ sleep "$wait"
+done
+
+#source config file
+. /opt/openslx/config
+# . ${VMWARE_CONF_DIR}/vmware.conf
+. ${VBOX_CONF_DIR}/vbox.conf
+
+vm_dhcpd() {
+
+ #from plugins/vmware/init-hooks/60-have-servconfig/vm-dhcpd.sh
+
+ # read the DNS configuration and if available set WPAD configuration
+ [ -z "${SLX_DNS}" ] && SLX_DNS="8.8.8.8"
+ [ -n "${wpad}" ] && wpad_config="option wpad ${wpad}"
+
+ # configuring dhcpd stub for virtual networks
+cat > ${VMWARE_CONF_DIR}/udhcpd.conf << EOF
+# general udhcpd configuration file for virtual machines written by $0
+
+# start and end of the IP lease block
+start CNETWORK.20
+end CNETWORK.100
+
+# interface that udhcpd will use
+interface NWIF
+
+# how long an offered address is reserved (leased) in seconds
+offer_time 6000
+
+# location of the leases file
+lease_file LEASEFILE
+
+# location of the pid file
+pidfile PIDFILE
+
+option dns ${SLX_DNS}
+option subnet 255.255.255.0
+option router CNETWORK.1
+option wins CNETWORK.10
+option domain virtual.site ${domain_name}
+${wpad_config}
+
+# additional options known to udhcpd
+#subnet #timezone
+#router #timesvr
+#namesvr #dns
+#logsvr #cookiesvr
+#lprsvr #bootsize
+#domain #swapsvr
+#rootpath #ipttl
+#mtu #broadcast
+#wins #lease
+#ntpsrv #tftp
+#bootfile #wpad
+EOF
+
+}
+
+setup_network() {
+ #from plugins/vmware/XX_vmware.sh
+
+ mkdir -p /tmp/virt/vmware -m 1777
+ mkdir -p /dev/shm/vmware -m 1777
+ mkdir -p /var/run/vmware -m 1777
+ mkdir -p /etc/vmware/udhcpd
+
+ # variable might contain ",NAT" which is to be taken off
+ if [ -n "$vmnet1" ] ; then
+ local vmip=${vmnet1%/*} # x.x.x.x/yy => 'x.x.x.x'">
+ local vmsub=$(echo $vmip |sed 's,\(.*\)\..*,\1,') # x.x.x.x => x.x.x
+ # setting up the udhcpd configuration
+ sed -e "s,NWIF,vmnet1,;s,/misc/,/vmware/," \
+ -e "s,CNETWORK,$vmsub,;s,PIDFILE,/var/run/vmware/udhcpd-vmnet1.pid," \
+ -e "s,LEASEFILE,/var/run/vmware/udhcpd-vmnet1.leases," \
+ ${VMWARE_CONF_DIR}/udhcpd.conf >/etc/vmware/udhcpd/udhcpd-vmnet1.conf
+ # setting the base samba configuration if available
+ if [ -f /etc/openslx/vmchooser/smb.conf \
+ -a -f /usr/sbin/smbd ] ; then
+ sed -e "s#NWIF#vmnet1,vmnet8#;s,PIDDIR,/var/run/vmware," \
+ ${VMCHOOSER_CONF_DIR}/smb.conf \
+ >/etc/vmware/smb.conf
+ fi
+ fi
+
+ # vmware nat interface configuration
+ if [ -n "$vmnet8" ] ; then
+ local vmnet8ip=${vmnet8%/*}
+ local vmpx=${vmnet8#*/}
+ local vmsub=$(echo $vmnet8ip |sed 's,\(.*\)\..*,\1,') # x.x.x.x => x.x.x">
+ # vmip is user for vmnet8 device
+ # vmnet is user for config files nat.conf/dhcp
+ local vmip="${vmsub}.1"
+ local vmnet="${vmsub}.2"
+ # setting up the udhcpd configuration
+ sed -e "s,NWIF,vmnet8,;s,/misc/,/vmware/," \
+ -e "s,CNETWORK,$vmsub,;s,PIDFILE,/var/run/vmware/udhcpd-vmnet8.pid," \
+ -e "s,LEASEFILE,/var/run/vmware/udhcpd-vmnet8.leases," \
+ ${VMWARE_CONF_DIR}/udhcpd.conf >/etc/vmware/udhcpd/udhcpd-vmnet8.conf
+ # might be not needed any more ...
+ echo -e "# Linux NAT configuration file" \
+ > /etc/vmware/nat.conf
+ echo -e "[host]" \
+ >> /etc/vmware/nat.conf
+ echo -e "ip = $vmnet/$vmpx" \
+ >> /etc/vmware/nat.conf
+ echo -e "device = /dev/vmnet8" \
+ >> /etc/vmware/nat.conf
+ echo -e "activeFTP = 1" \
+ >> /etc/vmware/nat.conf
+ echo -e "[udp]" \
+ >> /etc/vmware/nat.conf
+ echo -e "timeout = 60" \
+ >> /etc/vmware/nat.conf
+ echo -e "[incomingtcp]" \
+ >> /etc/vmware/nat.conf
+ echo -e "[incomingudp]" \
+ >> /etc/vmware/nat.conf
+ echo "00:50:56:F1:30:50" > /etc/vmware/vmnet-natd-8.mac
+ fi
+
+ ############################################################################
+ # vmware stuff second part: setting up the environment
+ # make udhcpd more silent
+ touch /var/run/vmware/udhcpd-vmnet1.leases \
+ /var/run/vmware/udhcpd-vmnet8.leases
+
+ # create the needed devices which effects all vmware options
+ # they are 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
+
+ chmod 0700 /dev/vmnet*
+}
+
+adapt_tmpfs() {
+ # from plugins/vmware/init-hooks/80-after-plugins/adapt-tmpfs.sh
+ # Init hook to adapt the tmpfs size for VMware/Player
+ # (should be kept identical to the files of virtualbox plugin)
+ #############################################################################
+
+ # adapt tmpfs size (overbook)
+ case $(grep tmpfs /proc/mounts) in
+ */tmp*)
+ mount -o remount,size=175% /tmp
+ ;;
+ */uniontmp*)
+ mount -o remount,size=175% /uniontmp
+ ;;
+ esac
+}
+
+#from /etc/init.d/vmware-env
+
+#functions: helper functions
+tempdir () {
+ # Create a special tempfs directory
+ mkdir -m 1777 -p /tmp/vmware
+ # Don't mount special tempfs, when using local harddrive for /tmp
+ [ ! -n "$(cat /proc/mounts |grep ' /tmp '|grep '/dev/sd')" ] \
+ && mount -t tmpfs -o size=180%,mode=1777 tmpfs /tmp/vmware
+}
+
+load_modules () {
+ # VMplayer common stuff
+ insmod /lib/modules/vbox/vboxdrv.ko
+ insmod /lib/modules/vbox/vboxnetadp.ko
+ insmod /lib/modules/vbox/vboxnetflt.ko
+ insmod /lib/modules/vbox/vboxpci.ko
+}
+
+unload_modules () {
+ rmmod vboxpci vboxnetflt vboxnetadp vboxdrv
+}
+
+vmnetif () {
+# let point the path directly to the directory where the binary lives
+location="/usr/bin"
+if [ -n "$vmnet0" ] ; then
+ # the path might be directly point to the plugin dir
+ $location/vmnet-bridge -d /var/run/vmnet-bridge-0.pid -n 0
+fi
+if [ -n "$vmnet1" ] ; then
+ $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid \
+ /dev/vmnet1 vmnet1
+ ip addr add $vmnet1 dev vmnet1
+ ip link set vmnet1 up
+ if [ -n "$vmnet1nat" ] ; then
+ echo "1" >/proc/sys/net/ipv4/conf/vmnet1/forwarding
+ echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null
+ fi
+ /opt/openslx/usr/sbin/udhcpd \
+ -S /etc/vmware/udhcpd/udhcpd-vmnet1.conf
+fi
+if [ -n "$vmnet8" ] ; then
+ $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet8.pid \
+ /dev/vmnet8 vmnet8
+ ip addr add $vmnet8 dev vmnet8
+ ip link set vmnet8 up
+ echo "1" >/proc/sys/net/ipv4/conf/vmnet8/forwarding
+ echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null
+ iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
+ # /etc/vmware/vmnet-natd-8.mac simply contains a mac like 00:50:56:F1:30:50
+ $location/vmnet-natd -d /var/run/vmnet-natd-8.pid \
+ -m /etc/vmware/vmnet-natd-8.mac -c /etc/vmware/nat.conf # or logfile
+ /opt/openslx/usr/sbin/udhcpd \
+ -S /etc/vmware/udhcpd/udhcpd-vmnet8.conf
+fi
+
+}
+
+vmblock () {
+# let point the path directly to the directory where the binary lives
+ /usr/bin/vmware-usbarbitrator
+}
+
+
+
+case "$1" in
+ start)
+ #start: defines start function for initscript
+ # vm_dhcpd
+ # setup_network
+ # adapt_tmpfs
+ # hack to access the first serial/parallel port
+ # chmod a+rw /dev/ttyS0
+ # chmod a+rw /dev/parport0
+ # tempdir
+ load_modules
+ # vmnetif
+ # vmblock
+ ;;
+ stop)
+ # stop: defines stop function for initscript
+ # killall vmnet-netifup vmnet-natd vmnet-bridge vmware vmplayer \
+ # vmware-tray vmnet-dhcpd
+ # might take a while until all services are shut down
+ # sleep 1
+ # umount -l /tmp/vmware 2>/dev/null
+ unload_modules
+ ;;
+ restart)
+ #restart: defines restart function for initscript
+ $0 stop && $0 start
+ ;;
+
+ status)
+ #status: defines status function for initscript
+ echo "Listing loaded kernel modules:"
+ lsmod | grep vbox
+ echo "Running VMs:"
+ $VBOXMANAGE list vms
+ ;;
+ *)
+ #usage: defines usage function for initscript
+ ## print out usage
+ echo "Usage: $0 {start, stop, restart, status}" >&2
+ exit 1
+ ;;
+esac
+