summaryrefslogtreecommitdiffstats
path: root/remote/modules/vmplayer/data/opt/openslx/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'remote/modules/vmplayer/data/opt/openslx/scripts')
-rwxr-xr-xremote/modules/vmplayer/data/opt/openslx/scripts/systemd-vmware_env281
1 files changed, 281 insertions, 0 deletions
diff --git a/remote/modules/vmplayer/data/opt/openslx/scripts/systemd-vmware_env b/remote/modules/vmplayer/data/opt/openslx/scripts/systemd-vmware_env
new file mode 100755
index 00000000..4103eae6
--- /dev/null
+++ b/remote/modules/vmplayer/data/opt/openslx/scripts/systemd-vmware_env
@@ -0,0 +1,281 @@
+#!/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
+
+VMWARE_CONF_DIR=/opt/openslx/etc/vmware
+
+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
+
+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/vmware/vmmon.ko
+ insmod /lib/modules/vmware/vmnet.ko
+ # VMplayer 3.X specific stuff
+ insmod /lib/modules/vmware/vmci.ko
+ insmod /lib/modules/vmware/vmblock.ko
+ insmod /lib/modules/vmware/vsock.ko
+}
+
+unload_modules () {
+ rmmod vmnet vmmonvsock vmci vmblock
+}
+
+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
+ vmstatus
+ ;;
+ *)
+ #usage: defines usage function for initscript
+ ## print out usage
+ echo "Usage: $0 {start, stop, restart, status}" >&2
+ exit 1
+ ;;
+esac
+