Allow me, once again, to vent my frustration on this blog. I am trying to upgrade VMware workstation from version 7.1.6 to 8.0.6 on Ubuntu 12.04. I am doing this so I can run windows 8 VMs.
There is no working upgrade path. You have to uninstall VMware workstation 7 and install VMware workstation 8 on Ubuntu. The command to uninstall is:
/usr/bin/vmware-installer -u vmware-workstation
but this starts a wizard which immediately fails with the message:
The VWMare Installer could not shut down all running virtual machines. If you have ACE VMs open, please shut them down or suspend them now and press 'Retry' to continue.
Needless to say, I have no running VMs after a reboot. So, OK, lets shut down all VMware process and unload all kernel modules using:
/etc/init.d/vmware stop
Oh dear. That gives:
Stopping VMware services: VMware USB Arbitrator done /etc/init.d/vmware: line 370: [: 18177068162212705687: integer expression expected VM communication interface socket family failed Virtual machine communication interface failed Virtual machine monitor failed Blocking file system failed ERROR: Module vmnet is in use by [permanent]
Well, that doesn’t look good! Turning on some debugging leads to the following line in the vmmonUseCount() function:
count=`/sbin/lsmod | awk 'BEGIN {n = 0} {if ($1 == "'"$driver"'") n = $3} END {print n}'`
which indeed when used with vmmon as $driver returns a silly number.
# count=`/sbin/lsmod | awk 'BEGIN {n = 0} {if ($1 == "'vmmon'") n = $3} END {print n}'`
# echo $count
18177068162212705687
So, what is going on? Well, it’s not lsmod, because cat’ing /proc/modules gives a similar number, which means that the scripts is making bad assumptions. It thinks there are 18177068162212705687 VMware workstations are running. I think not. In fact, it can’t even know this since the number is so large, it’s bigger than the biggest integer that the shell test expression can handle, hence the error. See http://stackoverflow.com/questions/2965761/find-maximum-positive-integer-value-in-bourne-shell
My answer here is to comment out the block which begins with the integer -gt expression.
# /etc/init.d/vmware stop Stopping VMware services: VMware USB Arbitrator done VM communication interface socket family failed Virtual machine communication interface failed Virtual machine monitor failed Blocking file system failed ERROR: Module vmnet is in use by [permanent]
Well, that gets rid of one thing. The rest will have to wait since it’s past my bedtime. Sigh.