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. Tierso dice:

    I love you man!!!
    you+”google translate”
    VMWare Player running like a charm now.

  2. Darkbook dice:

    Disculpa, me tomé el atrevimiento de colocar un enlace a tu página en mi blogroll y añadir un rss. Si no estas de acuerdo hazmelo saber

  3. ayeye dice:

    /tmp$ wget -q -O vmci.patch ‘http://p.casidiablo.net/?dl=4‘ ; cat vmci.patch | patch -p0
    (Stripping trailing CRs from patch.)
    can’t find file to patch at input line 3
    Perhaps you used the wrong -p or –strip option?
    The text leading up to this was:
    ————————–
    |— vmci-only/include/pgtbl.h 2009-12-08 14:42:26.993362502 -0500
    |+++ pgtbl.h 2009-12-08 14:42:19.737364526 -0500
    ————————–
    File to patch: ?

    pls help me …thks

  4. Cristian dice:

    Hi ayeye…

    Try to make it this way:

    cd /tmp
    tar xf /usr/lib/vmware/modules/source/vmnet.tar
    wget -q -O vmnet.patch 'http://p.casidiablo.net/?dl=5'
    patch -p0 < vmnet.patch
    sudo tar cf /usr/lib/vmware/modules/source/vmnet.tar vmnet-only

    Tell me whether it works or not ;)

  5. ayeye dice:

    Hi ,Thks again,i tried but don’t work…
    Happy New Year !

    nico@acerni:/tmp$ wget -q -O vgainmnet.patch ‘http://p.casidiablo.net/?dl=5
    nico@acerni:/tmp$ patch -p0 < vmnet.patch(Stripping trailing CRs from patch.)
    patching file vmnet-only/vnetUserListener.c
    patch unexpectedly ends in middle of line
    Reversed (or previously applied) patch detected! Assume -R? [n]
    Apply anyway? [n] y
    Hunk #1 FAILED at 34.
    1 out of 1 hunk FAILED — saving rejects to file vmnet-only/vnetUserListener.c.rej
    nico@acerni:/tmp$ wget -q -O vmnet.patch 'http://p.casidiablo.net/?dl=5&#039;
    nico@acerni:/tmp$ patch -p0 < vmnet.patch
    (Stripping trailing CRs from patch.)
    patching file vmnet-only/vnetUserListener.c
    patch unexpectedly ends in middle of line
    Reversed (or previously applied) patch detected! Assume -R? [n]
    Apply anyway? [n]
    Skipping patch.
    1 out of 1 hunk ignored — saving rejects to file vmnet-only/vnetUserListener.c.rej
    nico@acerni:/tmp$

  6. Cristian dice:

    Hello Ayeye…

    Here is not New Year yet XD

    So… I think you have a different version of VMWare. Could you please pastebin your vnetUserListener.c file? I want to take a look of it ;)

    Bye!

  7. ayeye dice:

    Thanks, I solved the problem, put your 1st patch and changing the 2 ° by hand, now works all right ….
    Thks so much 4 all i like ur blog….
    see u …

  8. fermin dice:

    Que gran ayuda¡¡

    saludos

  9. TeNeX dice:

    hola, no se si me puedas ayudar yo tengo el mismito problema pero con vmware server 2.0.2, baje unos parches que estaban en el foro de vmware los cuales tampoco me sirvieron… intentare tu metodo (aunque tal vez este de mas mencionar qeu tu metodo es para workstation pero que puedo perder? de todas maneras no jala la maquina virtual)

    si sabes de alguna solución para el kernel 2.6.32-trunk-686 me agradaría saberlo
    de ante mano gracias

  10. TeNeX dice:

    bueeeno esto sucedio:

    rc0:/usr/lib/vmware/modules/source# wget -q -O vmnet.patch ‘http://p.casidiablo.net/?dl=5‘ ; cat vmnet.patch | patch -p0
    (Stripping trailing CRs from patch.)
    patching file vmnet-only/vnetUserListener.c
    patch unexpectedly ends in middle of line
    Hunk #1 succeeded at 34 with fuzz 2.
    rc0:/usr/lib/vmware/modules/source#

    y ya ni intente el segundo

  11. TeNeX dice:

    he aqui la historia completa:

    rc0:/usr/lib/vmware/modules/source# wget -q -O vmnet.patch ‘http://p.casidiablo.net/?dl=5‘ ; cat vmnet.patch | patch -p0
    (Stripping trailing CRs from patch.)
    patching file vmnet-only/vnetUserListener.c
    patch unexpectedly ends in middle of line
    Hunk #1 succeeded at 34 with fuzz 2.
    rc0:/usr/lib/vmware/modules/source# wget -q -O vmci.patch ‘http://p.casidiablo.net/?dl=4‘ ; cat vmci.patch | patch -p0
    (Stripping trailing CRs from patch.)
    patching file vmci-only/include/pgtbl.h
    patch unexpectedly ends in middle of line
    Hunk #1 succeeded at 24 with fuzz 1.
    rc0:/usr/lib/vmware/modules/source# ps -A|grep vm
    rc0:/usr/lib/vmware/modules/source# /etc/init.d/vmware start
    VMware Server is installed, but it has not been (correctly) configured
    for the running kernel. To (re-)configure it, invoke the
    following command: /usr/bin/vmware-config.pl.

    rc0:/usr/lib/vmware/modules/source# vmware-config.pl -p
    Making sure services for VMware Server are stopped.

    Stopping VMware autostart virtual machines:
    Virtual machines failed
    Stopping VMware management services:
    VMware Virtual Infrastructure Web Access
    VMware Server Host Agent failed
    Stopping VMware services:
    VMware Authentication Daemon done
    Virtual machine communication interface done
    Virtual machine monitor done
    Bridged networking on /dev/vmnet0 done
    Host network detection done
    DHCP server on /dev/vmnet1 done
    Host-only networking on /dev/vmnet1 done
    Bridged networking on /dev/vmnet2 done
    DHCP server on /dev/vmnet8 done
    NAT service on /dev/vmnet8 done
    Host-only networking on /dev/vmnet8 done
    Virtual ethernet done

    None of the pre-built vmmon modules for VMware Server is suitable for your
    running kernel.

  12. javing. dice:

    Creo que los links del wget no funcionan..

    He intentado aplicarla y no da aun sigo con el problema..

  13. Ivan dice:

    No funcionan los links.

    • Cristian dice:

      Lo siento Ivan… al parecer la base de datos donde estaban los parches se borró :mrgreen:

      He actualizado la entrada donde explico cómo hacer los pasos sin los parches (manualmente).

      Un saludo!

  14. Ivan dice:

    Christian muchas gracias tanto por la informacion como por responder tan rapidamente. Mi problema es con el Vmware Player nuevo y el kernel 2.6.32.4
    Me falla al compilar el vmnet pero simplemente dice que no encuentra el directorio /tmp/vmware-root/modules/vmnet-only
    Crei que esta solucion me valdria pero no funciono. Aunque he de decir que antes de aplicarle me fallaba tambien el vmci pero despues ya no, ahora solo falla el vmnet. No se de que podra ser…

  15. Kasiopea dice:

    Hola …
    Solo queria agradecer al creador de este post y confirmar que también fue mi solución al actualizar debian testing del kernel 2.6.30-2 al kernel 2.6.32 trunk y con el vmware workstation 6.5.3

    En principio vmware actualizó todo excepto la tarjeta de red virtual, así que tuve suficiente con añadir #include “compat_sched.h”, volver a comprimir y ejecutar de nuevo vmware workstation.
    La actualización fue correcta.

    Mil gracias

¡Déjanos tu comentario!