I just had an issue with VMWare where the kernel modules would not compile. Here’s the details and the solution:
Details of the Error:
I get the “Unable to Start Services” and the Virtual Network Device has a warning symbol next to it:
Digging around in the log, this is the closest thing that I could find to an error:
vthread-3| I120: Host is Linux 2.6.41.1-1.fc15.x86_64 Fedora release 15 (Lovelock)
vthread-3| I120: Msg_Reset:
vthread-3| I120: [msg.dictionary.load.openFailed] Cannot open file "/usr/lib/vmware/settings": No such file or directory.
vthread-3| I120: ----------------------------------------
vthread-3| I120: PREF Optional preferences file not found at /usr/lib/vmware/settings. Using default values.
vthread-3| I120: Msg_Reset:
vthread-3| I120: [msg.dictionary.load.openFailed] Cannot open file "/home/skp/.vmware/config": No such file or directory.
vthread-3| I120: ----------------------------------------
vthread-3| I120: PREF Optional preferences file not found at /home/skp/.vmware/config. Using default values.
vthread-3| W110: Logging to /tmp/vmware-root/modconfig-2658.log
vthread-3| I120: modconf query interface initialized
vthread-3| I120: modconf library initialized
vthread-3| I120: Your GCC version: 4.6
vthread-3| I120: Validating path /lib/modules/preferred/build/include for kernel release 2.6.41.1-1.fc15.x86_64
vthread-3| I120: Failed to find /lib/modules/preferred/build/include/linux/version.h
vthread-3| I120: Failed version test: /lib/modules/preferred/build/include/linux/version.h not found.
vthread-3| I120: Validating path /lib/modules/2.6.41.1-1.fc15.x86_64/build/include for kernel release 2.6.41.1-1.fc15.x86_64
vthread-3| I120: Your GCC version: 4.6
vthread-3| I120: Your GCC version: 4.6
I can’t start the services manually:
$ sudo service vmware start
Starting vmware (via systemctl): Job failed. See system logs and 'systemctl status' for details.
[FAILED]
If you start vmware from the command line, you’ll see this error buried in the output:
/tmp/vmware-root/modules/vmnet-only/compat_netdevice.h:220:1: error: conflicting types for ‘netif_queue_stopped’
Here’s just a little more information about my system (Fedora 15):
$ uname -r
2.6.41.1-1.fc15.x86_64
Here’s my VMWare version:
$ vmplayer --version
VMware Player 4.0.1 build-528992
Applying the Fix
I found a post that suggested several fixes. First, I installed the hal package:
sudo yum install hal
I don’t know if that contributed toward the solution or not.
I had to downgrade to an earlier version of VMWare. To do so, I had to uninstall my current version with:
sudo vmware-installer -u vmware-player
After downloading the previous version, I installed it with:
sudo bash VMware-Player-4.0.0-471780.x86_64.txt
Next, I found a post with a patch.
cd /usr/lib/vmware/modules/source
sudo cp vmnet.tar backup_vmnet.tar
sudo wget -O vmnet.tar "http://forums.fedoraforum.org/attachment.php?attachmentid=22156&d=1321890579"
Then, I compiled the modules with:
sudo vmware-modconfig --console --install-all
I still got messages about the service not being able to start, but it still ran and booted my virtual machine.
Failed Attempt #1
While the above instructions solved my problem, let me walk you through some of the other things I tried. That might give you some more ideas if what worked for me didn’t work for you.
I found a post that suggested uninstalling and reinstalling. So, here is the how I did it:
First, I had to determine the exact name of what was installed:
$ vmware-installer -l
Product Name Product Version
==================== ====================
vmware-player 4.0.1.528992
Then, here is the command:
sudo vmware-installer -u vmware-player
And after I downloaded the latest version, I had a “txt” file. It is really a script, so I ran it like this:
sudo bash VMware-Player-4.0.1-528992.x86_64.txt
Failed Attempt #2
Here’s something that I tried in case it might help you. It didn’t help me any.
I downloaded a patch from Weltall’s blog: vmware8linux31fix.tar.gz. Then, I extracted and ran the patch:
[skp@pecan vmwarefix]$ tar -xzvf vmware8linux31fix.tar.gz
vmware3.1.0.patch
patch-modules_3.1.0.sh
[skp@pecan vmwarefix]$ ls
patch-modules_3.1.0.sh vmware3.1.0.patch vmware8linux31fix.tar.gz
[skp@pecan vmwarefix]$ sudo ./patch-modules_3.1.0.sh
Sorry, this script is only for VMWare WorkStation 8.0.0 or VMWare Player 4.0.0.
Exiting
The error message indicates it is looking for a particular version, so I just adjusted the script a little bit. At the top of the script, I changed the version number:
Next, I just got another error message:
[skp@pecan vmwarefix]$ sudo ./patch-modules_3.1.0.sh
/usr/lib/vmware/modules/source/.patched found. You have already patched your sources. Exiting
Failed Attempt #3
I found a post that suggested that someone was missing a bunch of packages. That gave me an idea to try to find what package included version.h. Then, this post suggested that they were in the Linux headers package. I did have the headers installed:
$ rpm -q kernel-headers-`uname -r`
kernel-headers-2.6.41.1-1.fc15.x86_64
I tried to install this:
sudo yum install buildsys-build-rpmfusion-kerneldevpkgs-current
Again, this didn’t work. The packages installed, but vmware still wouldn’t build.
Resources