gentoo linux, java, software libre y otras hierbas
Dic, 08 2009 - 2:19 pm

Instalar/reinstalar VMware 7 en Linux con el kernel 2.6.32

Si has intentado instalar VMware 7 sobre una máquina Linux corriendo el kernel 2.6.32 tal vez hayas tenido problemas. También, como en mi caso, tener VMware instalado con el kernel 2.6.31 y actualizar a 2.6.32 resulta en problemas al recompilar los módulos (específicamente el vmnet y el vmci).

Los errores que arroja VMware al momento de tratar de recompilar los módulos son similares a esto:

error-vmware

Errores con el vmnet que se muestran en consola:

CC [M]  /tmp/vmware-root/modules/vmnet-only/vnetUserListener.o
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c: En la función ‘VNetUserListenerEventHandler’:
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: ‘TASK_INTERRUPTIBLE’ no se declaró aquí (primer uso en esta función)
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: (Cada identificador no declarado solamente se reporta una vez
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: para cada funcion en la que aparece.)
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c: En la función ‘VNetUserListenerRead’:
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: ‘TASK_INTERRUPTIBLE’ no se declaró aquí (primer uso en esta función)
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: declaración implícita de la función ‘signal_pending’
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: declaración implícita de la función ‘schedule’
make[2]: *** [/tmp/vmware-root/modules/vmnet-only/vnetUserListener.o] Error 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmnet-only] Error 2
make[1]: se sale del directorio `/usr/src/linux-2.6.32′
make: *** [vmnet.ko] Error 2

Errores con el vmci (Virtual Machine Communication Interface) que se muestran en consola:

CC [M]  /tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.o
In file included from /tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:48:
/tmp/vmware-root/modules/vmci-only/./include/pgtbl.h: En la función ‘PgtblVa2MPN’:
/tmp/vmware-root/modules/vmci-only/./include/pgtbl.h:301: error: puntero deferenciado a tipo de dato incompleto
/tmp/vmware-root/modules/vmci-only/./include/pgtbl.h: En la función ‘PgtblVa2Page’:
/tmp/vmware-root/modules/vmci-only/./include/pgtbl.h:373: error: puntero deferenciado a tipo de dato incompleto
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c: En la función ‘VMCIHost_SignalCall’:
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:328: error: ‘TASK_NORMAL’ no se declaró aquí (primer uso en esta función)
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:328: error: (Cada identificador no declarado solamente se reporta una vez
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:328: error: para cada funcion en la que aparece.)
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c: En la función ‘VMCIHost_WaitForCallLocked’:
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:370: error: puntero deferenciado a tipo de dato incompleto
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:370: error: ‘TASK_INTERRUPTIBLE’ no se declaró aquí (primer uso en esta función)
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:378: error: declaración implícita de la función ‘schedule’
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:386: error: puntero deferenciado a tipo de dato incompleto
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:386: error: ‘TASK_RUNNING’ no se declaró aquí (primer uso en esta función)
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:390: error: declaración implícita de la función ‘signal_pending’
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c: En la función ‘VMCI_SignalEvent’:
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:682: error: ‘TASK_NORMAL’ no se declaró aquí (primer uso en esta función)
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c: En la función ‘VMCI_WaitOnEventInterruptible’:
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:739: error: puntero deferenciado a tipo de dato incompleto
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:739: error: ‘TASK_INTERRUPTIBLE’ no se declaró aquí (primer uso en esta función)
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:751: error: puntero deferenciado a tipo de dato incompleto
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:751: error: ‘TASK_RUNNING’ no se declaró aquí (primer uso en esta función)
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c: En la función ‘VMCIHost_GetUserMemory’:
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:1438: error: puntero deferenciado a tipo de dato incompleto
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:1440: error: puntero deferenciado a tipo de dato incompleto
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:1459: error: puntero deferenciado a tipo de dato incompleto
/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.c:1487: error: puntero deferenciado a tipo de dato incompleto
make[2]: *** [/tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.o] Error 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmci-only] Error 2
make[1]: se sale del directorio `/usr/src/linux-2.6.32′
make: *** [vmci.ko] Error 2

La solución la comentan en Chmouel Blog y me la a sugerido Cortex, aunque hablan solamente de errores en el vmnet y no en el vmci. De cualquier forma, la solución prácticamente la misma:

  • cd /tmp
  • tar xf /usr/lib/vmware/modules/source/vmnet.tar
  • Entramos al directorio (cd vmnet-only)
  • Abrimos el archivo vnetUserListener.c con un editor de texto
  • Añadimos esto al final de todos los includes:
    add this line #include "compat_sched.h"

  • Salimos del directorio (cd /tmp)
  • Reemplazamos el arvhivo vmnet de vmware con el que hemos editado:
    sudo tar cf /usr/lib/vmware/modules/source/vmnet.tar vmnet-only

Lo anterior es para evitar el problema con vmnet… con esto puedes intentar correr de nuevo VMWare. Si lo que ahora falla es el vmci puedes hacer lo mismo pero con el archivo /usr/lib/vmware/modules/source/vmci.tar.
Luego de esto, intentamos iniciar VMware o VMplayer los cuales recompilarán los módulos esta vez sin problemas:

vmware-compilacion-correcta

SEO thing XD…

Pongo los errores como salen en inglés por si alguien los busca así :D

CC [M] /tmp/vmware-root/modules/vmnet-only/vnetEvent.o
CC [M] /tmp/vmware-root/modules/vmnet-only/vnetUserListener.o
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c: In function ‘VNetUserListenerEventHandler’:
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: (Each undeclared identifier is reported only once
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:240: error: for each function it appears in.)
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c: In function ‘VNetUserListenerRead’:
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: implicit declaration of function ‘signal_pending’
/tmp/vmware-root/modules/vmnet-only/vnetUserListener.c:282: error: implicit declaration of function ‘schedule’
make[2]: *** [/tmp/vmware-root/modules/vmnet-only/vnetUserListener.o] Error 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmnet-only] Error 2
make[1]: Leaving directory `/opt/temp/linux-2.6.32′
make: *** [vmnet.ko] Error 2
Failed to compile module vmci

33 Comentarios | deja el tuyo

2 enlaces entrantes

31 Comentarios en “Instalar/reinstalar VMware 7 en Linux con el kernel 2.6.32”

  1. Ivan dice:

    Pues a mi no me va con el player y ese mismo kernel, yo ya no se si no sera porque al compilar yo mismo el kernel no se crean los headers y a ver si va a ser que “echa en falta” los headers del kernel 2.6.32.4

  2. Ivan dice:

    Actualizo mi problema por si a alguien le pasaba lo mismo. Ahora ya funciona, lo que he hecho ha sido desinstalar el vmware player 3, volverlo a instalar, hacer que el link simbolico /usr/src/linux apunte a las headers del kernel 2.6.32.4 (previamente las cree con make-kpkg) eb lugar de apuntar directamente a la carpeta de las fuentes del kernel cono estaba antes y luego parchear vmnet.tar y vmci.tar tal como se explica aqui y asi he conseguido que funcione. Lo que no se ahora es si funciona por lo de las headers o por otra cosa. si alguien me puede iluminar…

    Un saludo

  3. Pavel dice:

    Great, many thanks!

  4. Alex Is dice:

    Muchas gracias muchacho!

    Un frances.

  5. Daniel dice:

    hola tengo una duda para el problema con el vmci tengo que agregar la librería al archivo /tmp/vmci-only/linux/vmciKernelIf.c ya lo hice y me sigue marcando errores al intentar compilar los módulos tienes alguna idea?????

    gracias y saludos!!!

    • jgnavarro dice:

      tar xvf /usr/lib/vmware/modules/source/vmnet.tar -C /tmp
      tar xvf /usr/lib/vmware/modules/source/vmci.tar -C /tmp

      cd /tmp

      perl -pi -e ‘s,(“vnetInt.h”),\1\n#include “compat_sched.h”,’ vmnet-only/vnetUserListener.c
      perl -pi -e ‘s,(“compat_page.h”),\1\n#include “compat_sched.h”,’ vmci-only/include/pgtbl.h

      tar cvf /usr/lib/vmware/modules/source/vmnet.tar /tmp/vmnet-only
      tar cvf /usr/lib/vmware/modules/source/vmci.tar /tmp/vmci-only

  6. pedro dice:

    Se agradece, funciono altiro.
    Ya me tenia medio frustrado que no funcionara en fedora 12.

  7. jgnavarro dice:

    mejor haced esto (es lo mismo):

    tar xvf /usr/lib/vmware/modules/source/vmnet.tar -C /tmp
    tar xvf /usr/lib/vmware/modules/source/vmci.tar -C /tmp

    cd /tmp

    perl -pi -e ‘s,(“vnetInt.h”),\1\n#include “compat_sched.h”,’ vmnet-only/vnetUserListener.c
    perl -pi -e ‘s,(“compat_page.h”),\1\n#include “compat_sched.h”,’ vmci-only/include/pgtbl.h

    tar cvf /usr/lib/vmware/modules/source/vmnet.tar /tmp/vmnet-only
    tar cvf /usr/lib/vmware/modules/source/vmci.tar /tmp/vmci-only

  8. Jaime dice:

    Me ha funcionado estupendamente, con el 2.6.32 al actualizar a ubuntu 91.0.

    gracias

¡Déjanos tu comentario!