diff options
Diffstat (limited to 'src/os-plugins/plugins/vmware/files/install-vmpl.sh')
-rw-r--r-- | src/os-plugins/plugins/vmware/files/install-vmpl.sh | 284 |
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 |