Build host vmware kernel modules: Difference between revisions
New page: 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 u... |
|||
(10 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
====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. | 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. | Because of this it provides a much smoother end user experience when the user upgrades to a newer version of the kernel. | ||
Line 10: | Line 11: | ||
Lucky enough [http://communities.vmware.com/people/Noel Noel] on the vmware forums has created a script to resolve this which can be found here [http://communities.vmware.com/message/1088282#1088282 6.5 Segfault in 6.5 beta] | Lucky enough [http://communities.vmware.com/people/Noel Noel] on the vmware forums has created a script to resolve this which can be found here [http://communities.vmware.com/message/1088282#1088282 6.5 Segfault in 6.5 beta] | ||
You must run the following script with root | ====The solution==== | ||
You must run the following script with root privileges | |||
#!/bin/bash | #!/bin/bash | ||
Line 20: | Line 22: | ||
find /usr/lib/vmware/modules/source -name "*.tar" -exec tar xf '{}' \; | find /usr/lib/vmware/modules/source -name "*.tar" -exec tar xf '{}' \; | ||
mkdir -p /lib/modules/`uname -r`/misc | mkdir -p /lib/modules/`uname -r`/misc | ||
rm -f /lib/modules/`uname -r`/misc{vmblock.ko,vmci.ko,vmmon.ko,vmnet.ko,vsock.ko} | 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 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 vmci-only; make; cd ..; cp -p vmci.o /lib/modules/`uname -r`/misc/vmci.ko | ||
Line 30: | Line 32: | ||
service vmware restart | service vmware restart | ||
#If a new install, remove the not_configured tag or the error will keep coming back | #If a new install, remove the not_configured tag or the error will keep coming back | ||
rm /etc/vmware/not_configured | rm -f /etc/vmware/not_configured | ||
====Preconditions for the script to work==== | |||
You will have to get your kernel-headers before hand. | You will have to get your kernel-headers before hand. | ||
On Ubuntu or debian based systems execute this: | On Ubuntu or debian based systems execute this: | ||
sudo apt-get install linux-headers-$(uname -r) | sudo apt-get install linux-headers-$(uname -r) | ||
On fedora systems: | On fedora / Red Hat based systems: | ||
su -c "yum install kernel-devel" | 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: | After the manual compile, your folder with kernel modules should look like this: | ||
$ ls -l /lib/modules/`uname -r`/misc | $ ls -l /lib/modules/`uname -r`/misc | ||
total 376 | total 376 | ||
Line 48: | Line 51: | ||
-rw-r--r-- 1 root root 79897 2008-12-07 01:07 vmnet.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 | -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. | |||
[http://communities.vmware.com/people/birdie 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' | |||
[[Category: CLI]] [[Category: Bash]] |
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'