Build host vmware kernel modules: Difference between revisions
(One intermediate revision by the same user not shown) | |||
Line 60: | Line 60: | ||
vmware-modconfig --appname="VMware Workstation" | vmware-modconfig --appname="VMware Workstation" | ||
If there are still problems then vmware-modconfig tells you where it writes out a log, it helps to read it for example: | |||
vmware-modconfig --icon="vmware-workstation" --appname="VMware Workstation" | |||
Logging to /root/tmp/vmware-root/modconfig-2221.log | |||
Check that file! | |||
In my case for example it says: | |||
failed to find /lib/modules/3.12.xx/build/include/linux/version.h | |||
That's because in later versions the version.h file has been moved (smart move!) to another location. | |||
So in order to get past that you have to add a symbolic link (replace) | |||
# ln -s /usr/src/`uname -r`/include/generated/uapi/linux/version.h /usr/src/`uname -r`/include/linux/version.h | |||
Note that your OS might just have the kernel-devel packages installed and in that case you might have to replace `uname -r` in the above with linux. | |||
Eg: | |||
# ln -s /usr/src/linux/include/generated/uapi/linux/version.h /usr/src/linux/include/linux/version.h | |||
====Alternative solution==== | ====Alternative solution==== |
Latest revision as of 11:30, 12 October 2015
Integrated modules build script sometimes fails
The kernel modules script on linux hosts VMware Player version 2.5 and VMware Workstation 6.5.x has received a graphical user interface. Because of this it provides a much smoother end user experience when the user upgrades to a newer version of the kernel. Unless there's a dependency on which it breaks. In that case you might get the error
VMware Player is installed, but it has not been (correctly) configured for your running kernel. To (re-)configure it, your system administrator must find and run "vmware-config.pl"...
Unfortunately there is no vmware-config.pl script anymore, that's a left over from the previous version.
Lucky enough Noel on the vmware forums has created a script to resolve this which can be found here 6.5 Segfault in 6.5 beta
The solution
You must run the following script with root privileges
#!/bin/bash cd ~ rm -rf vmware-modules mkdir vmware-modules cd vmware-modules find /usr/lib/vmware/modules/source -name "*.tar" -exec tar xf '{}' \; mkdir -p /lib/modules/`uname -r`/misc rm -f /lib/modules/`uname -r`/misc/{vmblock.ko,vmci.ko,vmmon.ko,vmnet.ko,vsock.ko} cd vmblock-only; make; cd ..; cp -p vmblock.o /lib/modules/`uname -r`/misc/vmblock.ko cd vmci-only; make; cd ..; cp -p vmci.o /lib/modules/`uname -r`/misc/vmci.ko cd vmmon-only; make; cd ..; cp -p vmmon.o /lib/modules/`uname -r`/misc/vmmon.ko cd vmnet-only; make; cd ..; cp -p vmnet.o /lib/modules/`uname -r`/misc/vmnet.ko #cd vmppuser-only; make; cd ..; cp -p vmppuser.o /lib/modules/`uname -r`/misc/vmppuser.ko cd vsock-only; make; cd ..; cp -p vsock.o /lib/modules/`uname -r`/misc/vsock.ko depmod -a service vmware restart #If a new install, remove the not_configured tag or the error will keep coming back rm -f /etc/vmware/not_configured
Preconditions for the script to work
You will have to get your kernel-headers before hand. On Ubuntu or debian based systems execute this:
sudo apt-get install linux-headers-$(uname -r)
On fedora / Red Hat based systems:
su -c "yum install kernel-devel"
On SUSE / openSUSE use YaST to fetch the latest linux-kernel-headers
Troubleshooting
After the manual compile, your folder with kernel modules should look like this:
$ ls -l /lib/modules/`uname -r`/misc total 376 -rw-r--r-- 1 root root 36509 2008-12-07 01:07 vmblock.ko -rw-r--r-- 1 root root 95745 2008-12-07 01:07 vmci.ko -rw-r--r-- 1 root root 118128 2008-12-07 01:07 vmmon.ko -rw-r--r-- 1 root root 79897 2008-12-07 01:07 vmnet.ko -rw-r--r-- 1 root root 34834 2008-12-07 01:07 vsock.ko
If you get error "Icon name must be set." then you can fix that by adding the parameter for that to vmware-modconfig:
vmware-modconfig --icon="vmware-workstation"
If you get error "Application name must be set" then you can fix that by adding the parameter to set that:
vmware-modconfig --appname="VMware Workstation"
If there are still problems then vmware-modconfig tells you where it writes out a log, it helps to read it for example:
vmware-modconfig --icon="vmware-workstation" --appname="VMware Workstation" Logging to /root/tmp/vmware-root/modconfig-2221.log
Check that file! In my case for example it says:
failed to find /lib/modules/3.12.xx/build/include/linux/version.h
That's because in later versions the version.h file has been moved (smart move!) to another location. So in order to get past that you have to add a symbolic link (replace)
# ln -s /usr/src/`uname -r`/include/generated/uapi/linux/version.h /usr/src/`uname -r`/include/linux/version.h
Note that your OS might just have the kernel-devel packages installed and in that case you might have to replace `uname -r` in the above with linux. Eg:
# ln -s /usr/src/linux/include/generated/uapi/linux/version.h /usr/src/linux/include/linux/version.h
Alternative solution
Of course there is still a vmware application available that you can use for this as well. Birdie came up with a smart alternative so you can keep things like they used to be by creating an alias for the modconfig with the correct parameters to run it in the console.
alias vmware-config.pl='vmware-modconfig --console --install-all'