6 Replies Latest reply on Nov 8, 2012 10:14 PM by 789249

    Help!: vmware tools config failure, can't find kernel header for my OEL UEK

      Hello vmware gurus:

      I'm installing vmware tools for my ODL 6.3 64-bit guest and vmware config fails because my kernel-header does not match my OS

      kernel shown from uname -r: 2.6.39-200.24.1.el6uek.x86_64
      kernel packages installed:
      [root@oel2 ~]# rpm -qa | grep kernel-uek
      yum could not find kerhel-euk headers for 2.6.39-200.24.1.el6uek.x86_64
      I executed the sed command per another thread but it always errors on location of the C header files.
      /lib/modules/2.6.39-200.24.1.el6uek.x86_64 has a build directory but its empty
      /usr/src/kernels/2.6.32-300.38.1.el6uek.x86_64 has the libraries but the installer says 'it will not load into the running kernel'

      Any help with this issue is greatly appreciated!
        • 2. Re: Help!: vmware tools config failure, can't find kernel header for my OEL UEK

          Thanks for the immediate response. It's an excellent article and it gave me hope. Unfortunately, it still did not help because my kernel-header version does not match the installed kernel. Is the sed command supposed to fix that issue?

          The first problem I ran into was the yum for kernel headers.

          ~]# uname -r
          [root@oel2 ~]# yum -y install kernel-uek-headers-2.6.39-200.24.1.el6uek.x86_64
          Loaded plugins: refresh-packagekit, security
          Setting up Install Process
          No package kernel-uek-headers-2.6.39-200.24.1.el6uek.x86_64 available.
          Error: Nothing to do

          As mentioned originally, my kernel headers is version

          The second problem was that it seems that the sed command did not change anything in the config tool. I first copied the original version, then did a diff between the two files and it did not make any changes.

          I did below in putty from the host because with vmware tools not installed, I could not copy-and-paste from the web site to my vmware.

          [root@oel2 bin]# sed -i "s/\$content, \$image_file, \$kernRel/\$content,\
          '--builtin=ehci-hcd --builtin=ohci-hcd --builtin=uhci-hcd', \
          \$image_file, \$kernRiel/g" \
          However, vmware-install had to be executed from the guest console.

          The error persisted:
          /usr/src/linux/include does not exist
          /usr/src/kernels/ gets rejected because it does not match my kernel.

          What did I do wrong? Is there something else I can try?

          • 3. Re: Help!: vmware tools config failure, can't find kernel header for my OEL UEK
            I have no way to see what you are doing. The vmware-install script with it's 15000 lines of scripting code is nearly impossible to troubleshoot. There is no reason for the installer to fail because of the header files. I suggest to verify that you are using a recent version of VMware. You might be using an old version to which the information does not apply. What version of the VMware tools are you trying to install? If it's all the same to you, you can install Oracle Virtualbox instead of VMware, which is less troublesome.
            • 4. Re: Help!: vmware tools config failure, can't find kernel header for my OEL UEK

              Hmm, you might have something there. I'm using vmware workstation 6.5.2. Host is Windows 7 professional 64-bit and guest is OEL 6.3. is the vmware tools version dependent on the vmware version? or the guest OS?

              For troubleshooting purposes, it's good to know that the mismatching header version should not have caused the problem. which case I must be misunderstanding the error message.

              Just to help determine if the sed command does not apply to my file, here are a couple of snippets:

              This is where it asks the question of where are my c headers:
              # When installing the modules, kernels 2.4+ setup a symlink to the kernel
              # source directory
              $headerdir = $cKernelModuleDir . '/preferred/build/include';
              if (($gOption{'kernel_version'} ne '') or (check_answer_headerdir($headerdir, 'default') eq '')) {
              $headerdir = $cKernelModuleDir . '/' .
              (($gOption{'kernel_version'} eq '')?
              . '/build/include';
              if (check_answer_headerdir($headerdir, 'default') eq '') {
              # Use a default usual location
              $headerdir = '/usr/src/linux/include';
              get_persistent_answer('What is the location of the directory of C header '
              . 'files that match your running kernel?',
              'HEADER_DIR', 'headerdir', $headerdir);

              $gFirstModuleBuild = 0;
              This is the code that produces the error message that says the directory I supplied does not match the kernel

              # Kernels before 2.6.18 declare UTS_RELEASE in version.h. Newer kernels
              # use utsrelease.h. We include both just in case somebody moves UTS_RELEASE
              # back while leaving utsrelease.h file in place.
              if ($gOption{'kernel_version'} eq '') {
              $uts_headers = "#include <linux/version.h>\n";
              if (-e $answer . '/linux/utsrelease.h') {
              $uts_headers .= "#include <linux/utsrelease.h>\n";
              $header_version_uts = direct_command(
              shell_string($gHelper{'echo'}) . ' '
              . shell_string($uts_headers . $pattern
              . ' UTS_RELEASE') . ' | ' . shell_string($gHelper{'gcc'})
              . ' ' . shell_string('-I' . $answer) . ' -E - | '
              . shell_string($gHelper{'grep'}) . ' ' . shell_string($pattern));
              $header_version_uts =~ s/^$pattern \"([^\"]*)\".*$/$1/;
              if (not ($header_version_uts eq $gSystem{'uts_release'})) {
              if ($source eq 'user') {
              print wrap*(*'The directory of kernel headers (version '**
              **. $header_version_uts . ') does not match your running '**
              **. 'kernel (version ' . $gSystem{'uts_release'} . '). Even '**
              **. 'if the module were to compile successfully, it would not '**
              **. 'load into the running kernel.'* . "\n\n", 0);*
              return '';

              are the codes above different from your config file?

              When it asks for where my C header files are, the only directory that seems to contains the correct structure is:

              Then it says: (re-typed, so might have typos)
              The directory of kernel headers (version @@VMWARE@@ UTS_RELEASE) does not match your running kernel (version 2.6.39-200.24.1.el6uek.x86_64). Even if themodule were to compile successfully, it would not load into the running kernel.

              Then it just keeps on cycling through 'where is your C header files directory?'.....

              Thank you for looking into my issue.

              • 5. Re: Help!: vmware tools config failure, can't find kernel header for my OEL UEK
                VMware Workstation 6.5 is a few years old. The instructions were written for VMware Tools 8.8. You can probably download a more recent version of the VMware tools from the VMware support site. Anything before or after I have no idea. I'm not using VMware anymore and finally switched to Oracle Virtualbox.

                From what I understand, the Kernel header file for the Oracle UEK2 kernel (your kernel) are not provided. The reason is that it will break Oracle Linux compatibility with the RHEL and RHCK kernel versions. The kernel header files are backward, but not forward compatible. The vmware tools installer demands that the kernel header files match the current running kernel, which is is pragmatic and should not be necessary. I'm not VMware.

                Your possible options are:

                - hack the installer
                - try to download a version of the vmware tools that work
                - use a different product, e.g. VirtualBox
                - switch/change to the supplied RHEL kernel
                • 6. Re: Help!: vmware tools config failure, can't find kernel header for my OEL UEK
                  Thanks for the advice. There's another web site that suggested to boot with the RHEL kernel by modifying grub.conf. I'll try that.
                  Thank you for responding quickly.