At the moment I'm trying to get VMWare Workstation 5.5 running on Fedora Core 6 Test 1. Right now I'm working on some documentation for RHEL 5 and the build chain is all based on RHEL 4, so I need to have a RHEL 4 environment.
I downloaded VMWare Workstation 5.5 and tried to get it going.
First problem I ran into was the vmware-config.pl complaining that there was no kernel source. It requires the kernel-headers in order to compile a kernel module. I installed kernel-devel for both i586 and i686, but it still wouldn't pick it up, even when I explicitly told it where to look.
When I manually entered the directory /usr/src/kernels/2.6.17-1.2405.fc6-i686/i
nclude/ it would complain that the header version (@@VMWARE@@ UTS_RELEASE) did not match my running kernel, and that "even if the module compiled it would not work with the running kernel".
Use this command:
echo /usr/src/kernels/$(uname -r)-$(uname -p)/include
(from
here) to figure out what the kernel header directory should be for your running kernel.
OK, so mine was fine, but it still wouldn't work.
A little Google love found me
this thread on a Red Hat mailing list.
So I went to
http://platan.vc.cvut.cz/ftp/pub/vmware/readme.txt, read through it and picked up the copy of vmware-any-any-update102.tar.gz. I unzipped it and ran runme.pl.
That got me further. Next I got an error advising me to run "make prepare" in the kernel header directory. I did this and it got a little further, then bombed out again telling me:
hostif_compat.h: error: expected ':' or '(' before 'UTS_RELEASE'
I Googled some more, then found
this exchange between the kernel Gods.
UTS_RELEASE, it turns out, has been moved from version.h to utsrelease.h in kernel 2.6.18-rc1 and above.
The kernel I'm running on FC6T1 identifies itself as 2.6.17-x, but apparently has UTS_RELEASE in utsrelease.h.
The VMWare hostif_compat.h file has the following in it:
/* Retrieve UTS_VERSION and UTS_MACHINE if there is such information available */
#include <linux/compile.h>
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 18)
#include <linux/utsrelease.h>
#endif
which obviously doesn't work on my kernel, which exhibits the 2.6.18-rc1 behaviour, but identifies itself to VMWare as 2.6.17.
I untarred /usr/lib/vmware/modules/source/vmmon.tar and edited hostif_compat.h to change it to read:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 17)
This enables the module to compile ok, however when it tries to load it at the end of the VMWare configuration I get the following error:
make[1]: Leaving directory `/usr/src/kernels/2.6.17-1.2405.fc6-i686'
cp -f vmnet.ko ./../vmnet.o
make: Leaving directory `/tmp/vmware-config14/vmnet-only'
Unable to make a vmnet module that can be loaded in the running kernel:
insmod: error inserting '/tmp/vmware-config14/vmnet.o': -1 Unknown symbol in module
There is probably a slight difference in the kernel configuration between the
set of C header files you specified and your running kernel. You may want to
rebuild a kernel based on that directory, or specify another directory.
Anyone have any ideas, or already done this? As you can probably tell - I'm stabbing in the dark here...