#!/bin/sh # EXT=open-vm-tools TCZ=/tmp/$EXT/TCZ sudo rm -rf /tmp/$EXT export CC="gcc -mtune=generic -Os -pipe" export CXX="g++ -mtune=generic -Os -pipe -fexceptions" export LDFLAGS="-lm" for a in bash compiletc automake glibc_apps libtool-dev squashfs-tools \ glib2-dev gtkmm-dev gtk3-dev glibmm-dev gtk2-dev gtk2mm-dev \ Xorg-7.7-3d-dev libSM-dev libXau-dev \ procps-ng-dev libdnet libmspack fuse do tce-load -i $a done export RPCGEN=$(readlink -f $(which rpcgen)) export RPCGENFLAGS="-Y $(dirname $(which cpp))" #export CXXFLAGS="$CXXFLAGS -std=c++11 -D_GLIBCXX_USE_CXX11_ABI=0" export CXXFLAGS="$CXXFLAGS -std=c++11 -D_GLIBCXX_USE_CXX11_ABI=0" [ -e /etc/sysconfig/tcedir/copy2fs.flg ] && \ sudo ln -sf /usr /lib/modules/$(uname -r)/build || \ sudo ln -sf /tmp/tcloop/linux-4.2.1_api_headers/usr /lib/modules/$(uname -r)/build sed -i -e 's/(linux)/(__linux__)/' lib/include/vmblock.h #for a in $(grep -r -l vmware-tools *); do sed -i -e 's/vmware-tools/open-vm-tools/g' $a; done ### create Makefiles #make clean ./configure \ --prefix=/usr/local \ --localstatedir=/var \ --disable-static \ --without-icu \ --without-pam \ --without-xerces \ --disable-deploypkg \ --with-x \ || exit ### compile open-vm-tools make >make.log 2>&1 || exit sudo make DESTDIR=$TCZ install-strip || exit sudo chown -R tc.staff /tmp/$EXT ### create tcz extension onload script mkdir -p $TCZ/usr/local/tce.installed cat > $TCZ/usr/local/tce.installed/$EXT < $TCZ/etc/init.d/vmware-tools <<'EOF' #!/bin/sh # Start, stop, and restart vmtoolsd unload_module() { lsmod|grep -q ^$1 && rmmod $1 /sbin/udevadm settle } load_module() { lsmod|grep -q ^$1 || modprobe $1 /sbin/udevadm settle } case "$1" in start) # Interface check NIF1=$(wc -l < /proc/net/dev) # Load vsock load_module vsock # Load vmblock vmblock_dev=/tmp/VMwareDnD vmblockfusemntpt=/var/run/vmblock-fuse [ -d $vmblock_dev ] || mkdir -m 1777 -p $vmblock_dev if grep -q "$vmblockfusemntpt" /etc/mtab; then true else mkdir -m 1777 -p $vmblockfusemntpt vmware-vmblock-fuse -o subtype=vmware-vmblock,default_permissions,allow_other $vmblockfusemntpt fi # Start vmtoolsd if pidof vmtoolsd &>/dev/null; then echo vmtoolsd already running else rm -f /var/run/vmtoolsd.pid /usr/local/bin/vmtoolsd --background=/var/run/vmtoolsd.pid fi # Mount vmhgfs now a userspace program # /dev/fuse needs to be writable to user # /mnt/hgfs needs to be a directory and 777 vmhgfsmntpt=/mnt/hgfs if grep -q $vmhgfsmntpt /etc/mtab; then umount -f -l $vmhgfsmntpt fi if [ -e $vmhgfsmntpt ]; then if [ -d $vmhgfsmntpt ]; then chmod 777 $vmhgfsmntpt else rm -f $vmhgfsmntpt mkdir -m 777 -p $vmhgfsmntpt fi else mkdir -m 777 -p $vmhgfsmntpt fi # add "vmhgfs-fuse $mountpoint" to .profile # [ $(which vmware-checkvm) ] && \ # [ vmware-checkvm ] && \ # [ $(which vmhgfs-fuse) ] && \ # [ -d /mnt/hgfs ] && \ # vmhgfs-fuse /mnt/hgfs # Start vmware-user in user's .xsession using the following after mouse initialization: # [ $(which vmware-checkvm) ] && \ # [ vmware-checkvm ] && \ # vmware-user & # Use ethtool to optimize vmxnet if which ethtool &> /dev/null; then for e in $(grep eth /proc/net/dev|cut -d: -f1); do ethtool -K $e gso on &> /dev/null ethtool -K $e tso on &> /dev/null done fi # Start DHCP client for new interfaces if ! grep -q nodhcp /proc/cmdline; then NIF2=$(wc -l < /proc/net/dev) if [ $NIF2 -gt $NIF1 ]; then /etc/init.d/dhcp.sh fi fi ;; stop) if pidof vmtoolsd &>/dev/null; then killall vmtoolsd echo stopped vmtoolsd umount -l /mnt/hgfs else echo vmtoolsd is not running fi ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 (start|stop|restart)" exit 1 ;; esac EOF ### create -dev directory if anyone ever wants it mkdir -p $TCZ-dev/usr/local/lib mv $TCZ/usr/local/share $TCZ-dev/usr/local mv $TCZ/usr/local/include $TCZ-dev/usr/local mv $TCZ/usr/local/lib/pkgconfig $TCZ-dev/usr/local for a in $(find $TCZ -name '*.la'); do b=$(echo $(dirname $a) | sed "s#$TCZ#$TCZ-dev#") mkdir -p $b mv $a $b done ### fix up files cd $TCZ/sbin cp mount.vmhgfs . mkdir -p $TCZ/etc/vmware-tools/scripts/poweroff-vm-default.d cat >$TCZ/etc/vmware-tools/scripts/poweroff-vm-default.d/99-shutdown <