summaryrefslogtreecommitdiffstats
path: root/src/os-plugins/plugins/vmware/files/install-vmpl.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/os-plugins/plugins/vmware/files/install-vmpl.sh')
-rw-r--r--src/os-plugins/plugins/vmware/files/install-vmpl.sh284
1 files changed, 284 insertions, 0 deletions
diff --git a/src/os-plugins/plugins/vmware/files/install-vmpl.sh b/src/os-plugins/plugins/vmware/files/install-vmpl.sh
new file mode 100644
index 00000000..e0795b30
--- /dev/null
+++ b/src/os-plugins/plugins/vmware/files/install-vmpl.sh
@@ -0,0 +1,284 @@
+#!/bin/sh
+
+cd /opt/openslx/plugin-repo/vmware/
+
+### Check if player are still installed
+if [ -d ${1}/vmroot/ ]; then
+ echo " * $1 seems to be installed. There shouldn't be a need for a new installation."
+ echo " If you want to reinstall $1 press \"y\" else we will exit"
+ read
+ if [ "${REPLY}" != "y" ]; then
+ echo " * $1 is already installed. Nothing to do."
+ exit
+ fi
+ echo " * $1 will be reinstalled"
+fi
+
+
+### Now define values
+if [ "$1" = "vmpl1.0" ]; then
+ vmplversion="vmpl1.0"
+ tgzfile=$(ls packages/VMware-player-1.0.*|sort|tail -n 1)
+elif [ "$1" = "vmpl2.0" ]; then
+ vmplversion="vmpl2.0"
+ tgzfile=$(ls packages/VMware-player-2.0.*|sort|tail -n 1)
+elif [ "$1" = "vmpl2.5" ]; then
+ vmplversion="vmpl2.5"
+ tgzfile=$(ls packages/VMware-Player-2.5.*.bundle|sort|tail -n 1)
+else
+ echo "Attribute of install-vmpl.sh isn't valid!"
+ echo "This shouldn't happen! Fix vmware.pm!"
+ exit 1;
+fi
+
+
+### Main installation part
+if [ "${vmplversion}" != "vmpl2.5" ]; then
+ # tgz Installation of vmpl1.0 and vmpl2.0
+ cd ${vmplversion}
+
+ echo " * Unpacking vmplayer ${vmplversion}"
+ tar xfz ../${tgzfile}
+ # TODO: errorcheck if tgz wasnt downloaded properly.
+ # ask on mailinglist if theres a way how to handle it
+ # in preInstallation() "exit 1" is enough. Perhaps it will work
+ # here, too. Try first, and then document it in the wiki
+
+ # reduce some errors
+ echo " * deleting old files if available"
+ rm -rf vmroot
+
+ echo " * copying files..."
+ mkdir vmroot
+ mkdir -p vmroot/modules
+ mkdir -p vmroot/lib
+ mv vmware-player-distrib/lib vmroot/lib/vmware
+ mv vmware-player-distrib/bin vmroot/
+ if [ "${vmplversion}" != "vmpl1.0" ]; then
+ mv vmware-player-distrib/sbin vmroot/
+ fi
+ mv vmware-player-distrib/doc vmroot/
+ rm -rf vmware-player-distrib/
+ rm -rf vmroot/lib/vmware/modules/binary
+
+ echo " * fixing file permission"
+ chmod 04755 vmroot/lib/vmware/bin/vmware-vmx
+
+ # I don't want to understand what vmware is doing, but without this
+ # step we need to have LD_LIBRARY_PATH with 53 entrys. welcome to
+ # library hell
+ echo " * fixing librarys..."
+ cd vmroot/lib/vmware/lib
+ mkdir test
+ mv lib* test
+ mv test/lib*/* .
+ rm -rf test
+ cd ../../../..
+
+ echo " * fixing gdk and pango config files"
+ sed -i \
+ "s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
+ vmroot/lib/vmware/libconf/etc/gtk-2.0/gdk-pixbuf.loaders
+ sed -i \
+ "s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
+ vmroot/lib/vmware/libconf/etc/gtk-2.0/gtk.immodules
+ sed -i \
+ "s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
+ vmroot/lib/vmware/libconf/etc/pango/pango.modules
+ sed -i \
+ "s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
+ vmroot/lib/vmware/libconf/etc/pango/pangorc
+ sed -i \
+ "s,/etc/pango/pango/,/etc/pango/," \
+ vmroot/lib/vmware/libconf/etc/pango/pangorc
+
+ echo " * creating /etc/vmware"
+ rm -rf /etc/vmware
+ mkdir -p /etc/vmware
+
+ echo " * unpacking kernel modules"
+ cd vmroot/lib/vmware/modules/source
+ tar xf vmnet.tar
+ tar xf vmmon.tar
+ if [ "${vmplversion}" != "vmpl1.0" ]; then
+ tar xf vmblock.tar
+ fi
+
+ echo " * building vmblock module"
+ if [ "${vmplversion}" != "vmpl1.0" ]; then
+ cd vmblock-only/
+ sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
+ make -s
+ mv vmblock.ko vmblock.o ../../../../../modules
+ cd ..
+ fi
+
+ echo " * building vmmon module"
+ cd vmmon-only
+ sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
+ make -s
+ mv vmmon.ko vmmon.o ../../../../../modules
+ cd ..
+
+ echo " * building vmnet module"
+ cd vmnet-only
+ sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
+ make -s
+ mv vmnet.ko vmnet.o ../../../../../modules
+ cd ../../../../../..
+
+ echo " * setting up EULA"
+ mv vmroot/doc/EULA vmroot/lib/vmware/share/EULA.txt
+
+ echo " * finishing installation"
+
+
+else
+ # bundle Installation of vmpl2.5
+ # note: the rpm just include the stupid .bundle file...
+ cd ${vmplversion}
+
+ echo " * Manipulating and extracting vmplayer ${vmplversion} package. this may take a while"
+
+ # fool non-root user extraction... just for testing
+ sed -i 's/ exit 1/ echo 1/' ../${tgzfile}
+ # don't use deinstallation stuff and checks of /etc...
+ # and don't modify file size, else it wont work!
+ sed -i 's/ migrate_networks/ echo te_networks/' ../${tgzfile}
+ sed -i 's/ uninstall_legacy/ echo tall_legacy/' ../${tgzfile}
+ sed -i 's/ uninstall_rpm/ echo tall_rpm/' ../${tgzfile}
+ sed -i 's/ uninstall_bundle/ echo tall_bundle/' ../${tgzfile}
+ # this won't work as root on our clients... I hope it don't break
+ # anything on our clients in stage1
+ sh ../${tgzfile} -x temp
+ # TODO: errorcheck if rpm wasnt downloaded properly.
+ # ask on mailinglist if theres a way how to handle it
+ # in preInstallation() "exit 1" is enough. Perhaps it will work
+ # here, too. Try first, and then document it in the wiki
+
+ # reduce some errors
+ echo " * deleting old files if available"
+ rm -rf vmroot
+
+ echo " * copying files..."
+ mkdir -p vmroot
+ mkdir -p vmroot/lib
+ mkdir -p vmroot/modules
+
+ mv temp/vmware-player/lib vmroot/lib/vmware
+ mv temp/vmware-player/sbin vmroot/
+ # the following shouldn't be needed, just to have it 1:1 self-created
+ # copy of /usr/lib/vmware
+ # Todo: clean it out when everything is running
+ mv temp/vmware-installer vmroot/lib/vmware/installer
+ rm -rf vmroot/lib/vmware/installer/.installer
+ rm -rf vmroot/lib/vmware/installer/bootstrap
+ mkdir -p vmroot/lib/vmware/setup
+ mv temp/vmware-player-setup/vmware-config vmroot/lib/vmware/setup
+ mv temp/vmware-player/doc vmroot/
+ mv temp/vmware-player/bin vmroot/
+
+ ##
+ ## left files/dirs
+ ##
+ # temp/vmware-player/files/index.theme ... hopefully not needed,
+ # temp/vmware-player/share => /usr/share ... icons
+ # temp/vmware-player/etc/... => /etc
+ # temp/vmware-player/build => unknown... not found...
+
+
+ # etc/vmware/
+ # bootstrap => Path definitions. confusing due of version 1.0
+ # which looks like the instller version
+ # perhaps just for installer... hopefully
+ # config => path definition, networking, different configurations
+ # database => sqlite3 db. includes all files mapped to component
+ # hopefully just used by installer and some path config
+ # networking => networking config... has options which are in
+ # dhcpd.conf, hopefully not needed
+ # vmnet(1|8) => we know it from v1/v2
+
+ echo " * fixing file permission"
+ chmod 755 vmroot/lib/vmware/bin/*
+ chmod 04755 vmroot/lib/vmware/bin/vmware-vmx
+ chmod 04755 vmroot/lib/vmware/bin/vmware-vmx-debug
+ chmod 04755 vmroot/lib/vmware/bin/vmware-vmx-stats
+ chmod 755 vmroot/bin/*
+ chmod 755 vmroot/lib/vmware/lib/wrapper-gtk24.sh
+
+ # I don't want to understand what vmware is doing, but without this
+ # step we need to have LD_LIBRARY_PATH with 53 entrys. welcome to
+ # library hell
+ # if this fact is still valid for 2.5 is unclear, but lets do it
+ echo " * fixing librarys..."
+ cd vmroot/lib/vmware/lib
+ mkdir test
+ mv lib* test
+ mv test/lib*/* .
+ rm -rf test
+ cd ../../../..
+
+ echo " * fixing gdk and pango config files"
+ sed -i \
+ "s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
+ vmroot/lib/vmware/libconf/etc/gtk-2.0/gdk-pixbuf.loaders
+ sed -i \
+ "s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
+ vmroot/lib/vmware/libconf/etc/gtk-2.0/gtk.immodules
+ sed -i \
+ "s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
+ vmroot/lib/vmware/libconf/etc/pango/pango.modules
+ sed -i \
+ "s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
+ vmroot/lib/vmware/libconf/etc/pango/pangorc
+ sed -i \
+ "s,/etc/pango/pango/,/etc/pango/," \
+ vmroot/lib/vmware/libconf/etc/pango/pangorc
+
+ echo " * creating /etc/vmware"
+ rm -rf /etc/vmware
+ mkdir -p /etc/vmware
+
+ echo " * unpacking kernel modules"
+ cd vmroot/lib/vmware/modules/source
+ tar xf vmnet.tar
+ tar xf vmmon.tar
+ tar xf vmblock.tar
+ #tar xf vmci.tar # just for 2 or more VMs => not needed
+ #tar xf vmppuser.tar # we don't need it
+ tar xf vsock.tar
+
+ echo " * building vmblock module"
+ cd vmblock-only/
+ sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
+ make -s
+ mv vmblock.ko vmblock.o ../../../../../modules
+ cd ..
+
+ echo " * building vmmon module"
+ cd vmmon-only
+ sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
+ make -s
+ mv vmmon.ko vmmon.o ../../../../../modules
+ cd ..
+
+ echo " * building vmnet module"
+ cd vmnet-only
+ sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
+ make -s
+ mv vmnet.ko vmnet.o ../../../../../modules
+ cd ..
+
+ echo " * building vmsock module"
+ cd vsock-only
+ sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
+ make -s
+ mv vsock.ko vsock.o ../../../../../modules
+ cd ../../../../../..
+
+ echo " * setting up EULA"
+ mv vmroot/doc/EULA vmroot/lib/vmware/share/EULA.txt
+
+ echo " * finishing installation"
+
+fi