VMware Communities
sputnik66
Contributor
Contributor

vmware WS6: kernel 2.6.22 - VMnet refuses to compile.

the problem when running vmware-config.pl so it can compile the modules:

Using 2.6.x kernel build system.

make: Entering directory `/tmp/vmware-config0/vmnet-only'

make -C /lib/modules/2.6.21-git13-SPTNK1/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules

make[1]: Entering directory `/usr/src/linux-2.6.21'

CC /tmp/vmware-config0/vmnet-only/driver.o

CC /tmp/vmware-config0/vmnet-only/hub.o

CC /tmp/vmware-config0/vmnet-only/userif.o

/tmp/vmware-config0/vmnet-only/userif.c: In function ‘VNetCopyDatagramToUser’:

/tmp/vmware-config0/vmnet-only/userif.c:630: error: ‘const struct sk_buff’ has no member named ‘h’

/tmp/vmware-config0/vmnet-only/userif.c:630: error: ‘const struct sk_buff’ has no member named ‘nh’

/tmp/vmware-config0/vmnet-only/userif.c:636: error: ‘const struct sk_buff’ has no member named ‘h’

make[2]: *** Error 1

make[1]: *** \[_module_/tmp/vmware-config0/vmnet-only] Error 2

make[1]: Leaving directory `/usr/src/linux-2.6.21'

make: *** \[vmnet.ko] Error 2

make: Leaving directory `/tmp/vmware-config0/vmnet-only'

Unable to build the vmnet module.

I have gone as far as removing the licensing restriction in paravirt_ops.c, and patching my kernel to git13 (which has the paravirt_ops patch aswell). This has removed the compiling error for vmmon's "unknown symbol" and many other problems for modules that use different licenses other than GPL.

It appears I'm unable to win having paravirt_ops enabled. Disabling it is the last resort... althrough I don't see any relevence between this and paravirt_ops. I have an idea what this is, but I'm at a loss as to where to start.

edit: I forgot to include I have CONFIG_COMPAT_VDSO disabled.

"# CONFIG_COMPAT_VDSO is not set"

info:

OS - ArchLinux 0.8, self maintained kernel.

uname -a

Linux SPUTNIK1 2.6.21-git13-SPTNK1 #1 PREEMPT Fri May 11 05:59:04 CST 2007 i686 AMD Athlon(tm) AuthenticAMD GNU/Linux

glib 1.2.10-6

glib2 2.12.12-1

glibc 2.5-8

gcc version 4.1.2 20070423 (prerelease)

VMware-workstation-6.0.0-45731

Any help would be greatly appreciated.

Reply
0 Kudos
44 Replies
sputnik66
Contributor
Contributor

I should have looked at the patch before digging around changelogs and such.

The patch you provided works entirely fine. IA32bit here, kernel 2.6.22-rc2. I have placed your vmnet.tar inplace of mine incase someone downloads the one from my link.

Reply
0 Kudos
jbeckers
Contributor
Contributor

sputnik, thanks for the patch. I'm testing it right now on ubuntu gutsy with kernel 2.6.22-5-generic. so far compiling went fine. I'll see if it runs too in a minute.

EDIT: everything runs fine. thanks a bunch!

Message was edited by:

jbeckers

Reply
0 Kudos
phbaer
Contributor
Contributor

I'm very pleased to hear that. The patch should replace direct access to the skb struct as functions were introduced to accomplish this starting with 2.6.22 (I think).

I hope all the sensitive parts were caught but as I'm not very familiar with the kernel sources (and the modifications to them), it was more hit or miss Smiley Happy

Reply
0 Kudos
vmware_com
Contributor
Contributor

The http://24.12.114.66:8001/vmware/vmnet.tar fixes the build in 2.6.22-5-generic the kernel in ubuntu gutsy (the unstable 7.10 release).

Reply
0 Kudos
Paladine
Contributor
Contributor

The http://24.12.114.66:8001/vmware/vmnet.tar fixes

the build in 2.6.22-5-generic the kernel in ubuntu

gutsy (the unstable 7.10 release).

I am still having no success with Gutsy, here is my error:

Making sure services for VMware Server are stopped.

Stopping VMware services:

Virtual machine monitor done

Bridged networking on /dev/vmnet0 done

Virtual ethernet done

Configuring fallback GTK+ 2.4 libraries.

In which directory do you want to install the mime type icons?

What directory contains your desktop menu entry files? These files have a

.desktop file extension.

In which directory do you want to install the application's icon?

Trying to find a suitable vmmon module for your running kernel.

None of the pre-built vmmon modules for VMware Server is suitable for your

running kernel. Do you want this program to try to build the vmmon module for

your system (you need to have a C compiler installed on your system)? \[yes]

Using compiler "/usr/bin/gcc". Use environment variable CC to override.

What is the location of the directory of C header files that match your running

kernel?

Extracting the sources of the vmmon module.

Building the vmmon module.

Building for VMware Server 1.0.0.

Using 2.6.x kernel build system.

make: Entering directory `/tmp/vmware-config1/vmmon-only'

make -C /lib/modules/2.6.22-5-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules

make[1]: Entering directory `/usr/src/linux-headers-2.6.22-5-generic'

CC /tmp/vmware-config1/vmmon-only/linux/driver.o

CC /tmp/vmware-config1/vmmon-only/linux/hostif.o

CC /tmp/vmware-config1/vmmon-only/common/cpuid.o

CC /tmp/vmware-config1/vmmon-only/common/hash.o

CC /tmp/vmware-config1/vmmon-only/common/memtrack.o

CC /tmp/vmware-config1/vmmon-only/common/phystrack.o

CC /tmp/vmware-config1/vmmon-only/common/task.o

cc1plus: warning: command line option "-Wdeclaration-after-statement" is valid for C/ObjC but not for C++

cc1plus: warning: command line option "-Wno-pointer-sign" is valid for C/ObjC but not for C++

cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++

cc1plus: warning: command line option "-ffreestanding" is valid for C/ObjC but not for C++

include/asm/page.h: In function ‘pte_t native_make_pte(long unsigned int)’:

include/asm/page.h:112: error: expected primary-expression before ‘)’ token

include/asm/page.h:112: error: expected ‘;’ before ‘{’ token

include/asm/page.h:112: error: expected primary-expression before ‘.’ token

include/asm/page.h:112: error: expected `;' before ‘}’ token

make[2]: *** Error 1

make[1]: *** \[_module_/tmp/vmware-config1/vmmon-only] Error 2

make[1]: Leaving directory `/usr/src/linux-headers-2.6.22-5-generic'

make: *** \[vmmon.ko] Error 2

make: Leaving directory `/tmp/vmware-config1/vmmon-only'

Unable to build the vmmon module.

For more information on how to troubleshoot module-related problems, please

visit our Web site at "http://www.vmware.com/download/modules/modules.html" and

"http://www.vmware.com/support/reference/linux/prebuilt_modules_linux.html".

Execution aborted.

VMNet error seems to have gone away but I now have a VMMon error. Any ideas?

Paladine

Reply
0 Kudos
Paladine
Contributor
Contributor

OK I went for a clean install and now I get a different error (although still with vmmon) see below:

---

In which directory do you want to install the mime type icons?

What directory contains your desktop menu entry files? These files have a

.desktop file extension.

In which directory do you want to install the application's icon?

/usr/share/applications/vmware-server.desktop: warning: The 'Application' category is not defined by the desktop entry specification. Please use one of "AudioVideo", "Audio", "Video", "Development", "Education", "Game", "Graphics", "Network", "Office", "Settings", "System", "Utility" instead

/usr/share/applications/vmware-console-uri-handler.desktop: warning: The 'Application' category is not defined by the desktop entry specification. Please use one of "AudioVideo", "Audio", "Video", "Development", "Education", "Game", "Graphics", "Network", "Office", "Settings", "System", "Utility" instead

Trying to find a suitable vmmon module for your running kernel.

None of the pre-built vmmon modules for VMware Server is suitable for your

running kernel. Do you want this program to try to build the vmmon module for

your system (you need to have a C compiler installed on your system)? \[yes]

Using compiler "/usr/bin/gcc". Use environment variable CC to override.

What is the location of the directory of C header files that match your running

kernel?

Extracting the sources of the vmmon module.

Building the vmmon module.

Using 2.6.x kernel build system.

make: Entering directory `/tmp/vmware-config3/vmmon-only'

make -C /lib/modules/2.6.22-5-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules

make[1]: Entering directory `/usr/src/linux-headers-2.6.22-5-generic'

CC /tmp/vmware-config3/vmmon-only/linux/driver.o

In file included from /tmp/vmware-config3/vmmon-only/linux/driver.c:80:

/tmp/vmware-config3/vmmon-only/./include/compat_kernel.h:21: error: expected declaration specifiers or ‘...’ before ‘compat_exit’

/tmp/vmware-config3/vmmon-only/./include/compat_kernel.h:21: error: expected declaration specifiers or ‘...’ before ‘exit_code’

/tmp/vmware-config3/vmmon-only/./include/compat_kernel.h:21: warning: type defaults to ‘int’ in declaration of ‘_syscall1’

make[2]: *** Error 1

make[1]: *** \[_module_/tmp/vmware-config3/vmmon-only] Error 2

make[1]: Leaving directory `/usr/src/linux-headers-2.6.22-5-generic'

make: *** \[vmmon.ko] Error 2

make: Leaving directory `/tmp/vmware-config3/vmmon-only'

Unable to build the vmmon module.

For more information on how to troubleshoot module-related problems, please

visit our Web site at "http://www.vmware.com/download/modules/modules.html" and

"http://www.vmware.com/support/reference/linux/prebuilt_modules_linux.html".

Execution aborted.

---

Paladine

Reply
0 Kudos
gareed
Contributor
Contributor

Paladine,

Having the same problem. See http://www.vmware.com/community/thread.jspa?threadID=86829&tstart=100

Hope it will be solved when 2.6.22 is released.

Good luck.

Reply
0 Kudos
Grogan
Enthusiast
Enthusiast

There's evidently more to this than just getting stuff to compile. I've got some bad behaviour here. (Linux 2.6.22-rc3 on IA32 host)

While vmmon and everything compiles, including vmnet if I use this patch and roll up a new vmnet.tar:

http://npw.net/~phbaer/vmware-workstation-6.0_linux-kernel-2.6.22.patch

There is bad behaviour.

First of all, networking appears to work perfectly until I try to communicate with the host via (bridged) network. For example if I ssh/sftp/ftp in to the host from a guest, the connection just hangs. If I press ctrl-c to abort it's fine, but if I leave it sit there trying for a bit everything locks up with keyboard lights blinking. I can't move on the host (or get out of the VM if I'm in there), input is locked up. At this point if I go to another box and ssh in, I can kill vmware-vmx which shuts down the virtual machine and everything is OK. This should not be a problem... I've always done this. It goes to the router just like any other tcp/ip connection on the LAN.

Going back to Linux 2.6.21.x on the host (and the original vmnet source) corrects this.

Also tried Nigel Cunningham's vmnet.tar but it oopsed on the IA32 host a few seconds after loading the module. (it was non fatal though... I removed the rc.d entries and rebooted the box)

Now, that's just the networking.

I discovered that when a VM locks up or panics it can take out the host too. Installing Fedora 7 locks up my host hard, during the package install (at different times, not always at the same point in progress). Completely halted, won't respond to any input, or pings, and I've got to power off and fsck filesystems afterwards to correct errors.

Log entries are just stopped dead.

So back to 2.6.21.x... the VM locks up during Fedora7 package install, similar behaviour, but doesn't harm the host. I can ctrl-alt to leave the VM's focus and "power off" the VM and exit vmware and restart it again. I don't know what bad combination of package selections triggers the fault, but if I just choose "customize later" and install the OS with default package selection it doesn't lock the guest. Probably why the install the previous night didn't lock up the guest with 2.6.22-rc3, because I didn't hit that fault. It was when I went back to redo it and customize. That's not important. The point is, that when it happens with 2.6.22-rc3 this completely kills the host.

I've gone back to 2.6.21.3 because I can't play with and troubleshoot something that's causing hard lockups on this system. I just can't afford to have data corruption.

That's unfortunate for now, because there are changes in 2.6.22-rc that I want, and everything else but vmware works correctly.

Reply
0 Kudos
phbaer
Contributor
Contributor

Are there any interesting entries in dmesg? With my kernel (Gutsy 2.6.22-something) everything works well; no networking problems, no freezes.

Reply
0 Kudos
Grogan
Enthusiast
Enthusiast

Unfortunately no, log entries just stop dead when the machine locks up. Nothing of interest other than vmmon printing floods of host clock rate change requests (but it does that with other kernels too and is not related to the problems). Thanks for asking.

I'm just going to keep 2.6.21.3 around for a bit and boot that kernel when I want to use vmware. I have to do 2.6.22-rc4 now and I may try again. I noticed I had disabled some kernel options for testing purposes and forgot to re-enable them again. They shouldn't be the cause, but it's best to consider everything that might be different between the kernels I was using.

It's probably changes to the kernel though. Different systems may not hit the same issues.

Intel Core2 Duo

965P chipset

AHCI SATA on ICH8

32 bit kernel, 32 bit userland

Reply
0 Kudos
gruna
Enthusiast
Enthusiast

I am running 2.6.22-rc4 and have no problems except with vmware.

Ist still doesn't compile.

Reply
0 Kudos
c_g-hills
Enthusiast
Enthusiast

I had no trouble compiling using the vmware-any-any patches and my modified vmxnet.tar, using CentOS 5.0 as the base. Please see this post if you want a copy of the vm: http://chaz6.com/?p=199. I also enabled paravirt support.

Reply
0 Kudos
LoSeR_5150
Contributor
Contributor

I tried using vmware-any-any-110 patch as its the latest yet I'm still unable to compile vmmon. What exactly did you do to compile? What is your setup? GCC Version, kernel version? thanks

Reply
0 Kudos
Build_Interns
Contributor
Contributor

Try using g++ when you compile - you can automate the process with GNU MAKE Smiley Happy Does wonders for me!

Reply
0 Kudos
Build_Interns
Contributor
Contributor

And if your using java I find the best way to do compilations is to use ANT with batch files.

However, I would suggest writing your source code with notepad because that is what the serious programmers do!

Reply
0 Kudos
LoSeR_5150
Contributor
Contributor

So I got the module to build on the 2.6.22 kernel, but only on my x86_64 box. On my x86 machines it still will not build using the any-any-update110 patch. Any Suggestions/Tips? Thanks

Reply
0 Kudos
LoSeR_5150
Contributor
Contributor

VMware-modules now compiling on x86 machines after modifiy my /lib/modules/2.6.22-rc4-ragnarok1/build/include/page.h

see http://www.vmware.com/community/thread.jspa?messageID=677688 for details

Reply
0 Kudos
tscollins
Contributor
Contributor

Thanks the vmnet.tar file worked for my Arch64 system running kernel 2.6.22-ARCH #1 SMP PREEMPT

Reply
0 Kudos
VasyaPypkin
Contributor
Contributor

This fix compilation problem. No "any-any" patch required. Do not try to modify your kernel, every thing fine with it, problem is in VMware.

VMware Workstation: 6.0.0 build-45731

Kernel: 2.6.22-gentoo-r8

howto:

  1. cd /usr/lib/vmware/modules/source/

  2. tar -xf vmnet.tar

  3. cd vmnet-only

  4. cat /path/to/patch | patch -p1

  5. cd ..

  6. tar -cf vmnet.tar vmnet-only

  7. vmware-config.pl

Patch attached.

Reply
0 Kudos
jaylundy
Contributor
Contributor

Vasya's patch works in x86 (I assume) but not in x86_64. Here's a new patch that should work in both. I know it works on x86_64 because I tested it on my machine (Ubuntu Gutsy).

VMware Workstation: 6.0.0 build-45731

uname -a: Linux ##### 2.6.22-14-generic #1 SMP Sun Oct 14 21:45:15 GMT 2007 x86_64 GNU/Linux

Installation instructions same as in Vasya's post.

Some people were complaining about errors with bridged networking on previous patch attempts even though they compiled fine. All the links posted a few months ago are broken so I can't compare them with my version, but I can confirm that connecting from the guest to the host on a bridged network works with this patch. I'm pretty confident all networking should work with this patch too.

Reply
0 Kudos