Guys,
After updating to RHEL 6.8 64bit (2.6.32-642.el6.x86_64), Workstation is unable to start. We get the "unable to start services" error.
How would you all advise to fix this? The log is attached.
Thanks!
I traced it back to netif.c from /usr/lib/vmware/modules/source/vmnet.tar unable to compile on RHEL6.8.
The actual error is as follows:
make: Entering directory `/tmp/modconfig-nis3ie/vmnet-only'
/usr/bin/make -C /lib/modules/2.6.32-642.el6.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-642.el6.x86_64'
CC [M] /tmp/modconfig-nis3ie/vmnet-only/driver.o
CC [M] /tmp/modconfig-nis3ie/vmnet-only/hub.o
CC [M] /tmp/modconfig-nis3ie/vmnet-only/userif.o
CC [M] /tmp/modconfig-nis3ie/vmnet-only/netif.o
CC [M] /tmp/modconfig-nis3ie/vmnet-only/bridge.o
CC [M] /tmp/modconfig-nis3ie/vmnet-only/procfs.o
CC [M] /tmp/modconfig-nis3ie/vmnet-only/smac_compat.o
CC [M] /tmp/modconfig-nis3ie/vmnet-only/smac.o
CC [M] /tmp/modconfig-nis3ie/vmnet-only/vnetEvent.o
CC [M] /tmp/modconfig-nis3ie/vmnet-only/vnetUserListener.o
In file included from include/linux/pci.h:61,
from /tmp/modconfig-nis3ie/vmnet-only/compat_netdevice.h:27,
from /tmp/modconfig-nis3ie/vmnet-only/netif.c:43:
include/linux/pci_ids.h:2177:1: warning: "PCI_VENDOR_ID_VMWARE" redefined
In file included from /tmp/modconfig-nis3ie/vmnet-only/net.h:38,
from /tmp/modconfig-nis3ie/vmnet-only/vnetInt.h:26,
from /tmp/modconfig-nis3ie/vmnet-only/netif.c:42:
/tmp/modconfig-nis3ie/vmnet-only/vm_device_version.h:56:1: warning: this is the location of the previous definition
/tmp/modconfig-nis3ie/vmnet-only/netif.c:153:79: error: macro "alloc_netdev" passed 4 arguments, but takes just 3
/tmp/modconfig-nis3ie/vmnet-only/netif.c: In function 'VNetNetIf_Create':
/tmp/modconfig-nis3ie/vmnet-only/netif.c:153: error: 'alloc_netdev' undeclared (first use in this function)
/tmp/modconfig-nis3ie/vmnet-only/netif.c:153: error: (Each undeclared identifier is reported only once
/tmp/modconfig-nis3ie/vmnet-only/netif.c:153: error: for each function it appears in.)
make[2]: *** [/tmp/modconfig-nis3ie/vmnet-only/netif.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /tmp/modconfig-nis3ie/vmnet-only/net.h:38,
from /tmp/modconfig-nis3ie/vmnet-only/vnetInt.h:26,
The culprit appears to be this line:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(NET_NAME_USER)
dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup); <======================
#else
dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);
#endif
I don't think we should be there (that's obvisouly for 3.18.+ kernels or when NET_NAME_USER is defined).
I am currently testing this fix:
# diff netif.c.orig netif.c
153c153,155
< dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);
---
> // RHEL 6.8
> // dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);
> dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);
I can happily confirm that this workaround just works:
diff -u netif.c.orig netif.c
--- netif.c.orig 2016-04-14 19:48:47.000000000 -0400
+++ netif.c 2016-05-12 15:36:26.000000000 -0400
@@ -150,7 +150,9 @@
NULL_TERMINATE_STRING(deviceName);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(NET_NAME_USER)
- dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);
+// RHEL 6.8
+// dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);
+ dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);
#else
dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);
#endif
Apply to /usr/lib/vmware/modules/source/vmnet.tar
(it's an archive, you'd have to extract it, patch it and re-build the archive).
As in:
cd /tmp
tar xvf /usr/lib/vmware/modules/source/vmnet.tar
cd vmnet-only
patch -p0 < /tmp/above.patch
cd ..
tar cvf /usr/lib/vmware/modules/source/vmnet.tar vmnet-only
Thanks, but what is the actual code I paste into a file?
I'm no developer.
thanks for the help
edit: I forgot to add that this is for Workstation 11.1.2.
Thank you so much ElCoyote_ your solution worked perfectly for me and saved me a huge headache ... thanks for sharing !! :smileycool:
Hi Riley,
The stuff I posted was for VMW 12.1.1.
You'll have to adapt it for your version or wait for VMWare to release a fix.
Regards,
Vincent
I made the code changes to netif.c by hand as I am using 11.1.4 ...
At around line 153 in netif.c for 11.1.4 you will see the following :
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(NET_NAME_USER)
dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);
#else
dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);
#endif
I trashed those 5 lines and replaced them with this one line :
dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);
Thanks again to ElCoyote_ ... I would still be swearing right now otherwise and probably for most of the weekend 🙂
Thank you SOOOOO much for this. I just updated the kernel and all my vm's went to hell! I spent a day trying to find the solution and kept missing this post...
YAY!
Ran into this problem a few months ago. Searched for quite a while and never found this post. Thought I would give it another try today.... and shazam! The fix worked.