|
Installing and Compiling the VMware for Linux modules vmmon and vmnet Scope This technical
note discusses problems related to the installation of VMware for Linux, specifically with respect to the installation of its two kernel modules.
You should normally have to refer to this technical note in only two circumstances:
- You are unable to install VMware successfully, i.e. the "install.pl" script fails.
- You have changed your linux kernel, either by upgrading your distribution, or by compiling you own kernel. Any kernel upgrade requires you to re-compile vmmon and vmnet. The easiest way to do this is simply to
upgrade VMware by running "install.pl" in the distribution directory and answering "Yes" to the question "Would you like to upgrade VMware for Linux".
Background VMware for Linux's installation script (install.pl) uses a two-step process to install both vmmon and vmnet. First, it tries to find a matching pre-compiled
module in the vmware-distrib directory. If such a module exists, it will try to load it into the kernel using the /sbin/insmod command. If no pre-compiled modules exist, or if the pre-compiled module does not load, the second step is to automatically compile the module from its sources, which are included in the distribution.
The second step will use the system header files to compile the module. The success of the second step requires a perfect match between the header files installed on the system and the header files used to previously
compile the kernel. The majority of the installation problems are due to this discrepancy. Fixing this system discrepancy is the easiest way to install VMware.
Fixing /usr/include/linux and /usr/include/asm If you installation fails, the first step is to check that you system include directories
/usr/include/linux and /usr/include/asm
are soft-links that point to the correct directories within the linux source tree.On many popular distributions,
/usr/include/linux
is a soft-link to /usr/src/linux/include/linux /usr/include/asm is a soft-link /usr/src/linux/include/asm and /usr/src/linux is a soft-link to
/usr/src/linux-<kernel version> If the links are setup differently, for example, /usr/include/linux does not point within the linux source, a version mismatch is likely. We recommend that you change your setup so that the two directories
/usr/include/linux and /usr/include/asm are in fact softlinks that point within the linux source tree. This change is only required to compile the modules as part of VMware's installation process. Once VMware is installed, you may reset your system configuration to its original state if you prefer.
Common problems
- Script fails because
<linux/version.h> is inconsistent The script fails with this error message: ### Something is wrong with the system include files on ### your machine! The file <linux/version.h> is for a
### [<ACTUAL>] Linux system but you are running a [<EXPECTING>] ### kernel. This will not work for building the VMware device ### drivers; you must have include files that match the version
### of your operating system.
In your case, [<ACTUAL>] will be replaced with the kernel version that is specified by
<linux/version.h> and [<EXPECTING>] will be replaced with the kernel version that is returned by "uname -r". The C compiler will likely find <linux/version.h> in /usr/include/linux/version.h. On
your system, you are also likely to find another version.h file in /usr/src/linux/include/linux/version.h. The latter one should
contain the version that corresponds to your kernel. This problem is usually fixed by following the guidelines described above in "Fixing /usr/include/linux and /usr/include/asm".
- Script fails with unresolved symbols
The script fails with error messages similar to
[...] unresolved symbol __pollwait_Rsmp_0b89dd34
unresolved symbol free_pages_Rsmp_234535e0 unresolved symbol misc_deregister_Rsmp_632a685b [...]
The linux build does symbol mangling to guarantee the consistency of
configuration options between the kernel and its modules. When the kernel is built, the kernel configuration options are written in to
<linux/autoconf.h>, and the kernel mangled symbols into <linux/modversions.h> and
<linux/modules/*.ver>
In this failure mode, vmmon or vmnet refuse to load because of unresolved symbols after. Since they
were just built, this again indicates an inconsistency between the system header files installed on you machine and the ones used to build the kernel that you are running.
First, make sure that your
/usr/include/linux and /usr/include/asm
point to the right place, as discussed above in "Fixing /usr/include/linux and /usr/include/asm". This might solve your problem.
Often, re-building your kernel using the same configuration will
fix the problem. Note that you don't need to re-install the newly built kernel. Just recompiling it will regenerate the <linux/autoconf.h>
and the <linux/modules/*.ver> files.
To rebuild your kernel, first find the /usr/src/linux/.config
that should correspond to you kernel version. It is often, but not always, already installed in /usr/src/linux/.config.
If you have a .config file, do the following rm /usr/src/linux/include/linux/modules/*.ver make oldconfig make dep clean zImage
and try to re-install VMware.
If you still can't install it because of unresolved symbols, it is likely because of a difference between the configuration options of the kernel that you are
running and the one that you have just built.
If this is the case and you cannot find the matching configuration, installing the newly built kernel will allow you to install VMware. Of course, you'll be
running a different kernel now.
- Script fails because CONFIG_UMISC is not defined
The script fails with the following message:
### You appear to have a [<VERSION>] Linux kernel that was not ### built with the CONFIG_UMISC configuration parameter set. ### The VMware software will not operate without this facility.
### Please update your kernel to include this facility and then ### redo the installation procedure.
/dev/vmmon
registers itself as a "miscellaneous character device". Your kernel is not configured with this option, and VMware can therefore not be installed.
If this is the case, you must recompile your
linux kernel with that option defined. VMware will not run otherwise.
|