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

dic, 30 2008 - 1:33 pm

Error resolviendo dependencias y la variable EAPI [Gentoo Linux]

Un error frecuente después de instalar Gentoo es que, al buscar un paquete con Portage usando el comando emerge -s, y si el paquete tiene la variable EAPI=2 en los repositorios, aparece algo como lo siguiente:

* kde-base/kde-l10n [ Masked ]
Traceback (most recent call last):
File "/usr/bin/emerge", line 6971, in 
retval = emerge_main()
File "/usr/bin/emerge", line 6945, in emerge_main
myopts, myfiles, spinner)
File "/usr/bin/emerge", line 5815, in action_search
searchinstance.output()
File "/usr/bin/emerge", line 638, in output
mysettings=self.settings, all=True)[1]
File "/usr/bin/emerge", line 461, in _getfetchlist
value = func(*args, **kwargs)
File "/usr/lib/portage/pym/portage.py", line 7164, in getfetchlist
(mypkg, eapi.lstrip("-")))
portage_exception.InvalidDependString: getfetchlist():
'kde-base/kde-l10n-4.1.2' has unsupported EAPI: '2'

Esto sucede buscando varios tipos de paquetes, como por ejemplo KDE (emerge -s kde4). El error parece estar corregido en la versión de desarrollo de Portage, pero mientras liberan la nueva versión es posible solucionar el problema siguiendo estos pasos:

  1. Descargar y descomprimir este parche
  2. Ejecutar el comando:
    patch /usr/lib/portage/bin/emerge /tmp/search_invalid.patch

Un comentario | deja el tuyo

dic, 12 2008 - 3:09 pm

Solución problema Fedora 10 [failed to get a TID...]

A muchas personas les ha pasado recientemente que, después de actualizar o instalar Fedora 10, no pueden usar adecuadamente el PackageKit (el equivalente al Synaptic en Ubuntu.). El error que suele aparecer es el siguiente:

failed to get a TID: A security policy in place prevents this sender from sending this message to this recipient, see message bus configuration file (rejected message had interface "org.freedesktop.PackageKit.Transaction" member "SetLocale" error name "(unset)" destination "org.freedesktop.PackageKit") (0)

Esto hace que no podamos añadir o eliminar aplicaciones usando una interfaz gráfica, y que tengamos que recurrir a la consola y al comando yum.

La solución, o al menos lo que me ha servido, es editar el archivo /etc/dbus-1/system.conf como root de la siguiente manera:

  • Primero hacemos una copia de respaldo del archivo:
    # cp -v /etc/dbus-1/system.conf{,bak}
  • Cambiamos las líneas 57 y 58 que tienen esta apariencia:<allow send_requested_reply="true" send_type="method_return"/>
    <allow send_requested_reply="true" send_type="error"/>

    Por esto:

    <allow send_requested_reply="true"/>

  • Borrar las líneas 66 y 67 que son:

    <allow receive_requested_reply="true" receive_type="method_return"/>
    <allow receive_requested_reply="true" receive_type="error"/>

    Nota: según comentan en los foros de Fedora, dichas líneas algunas veces están comentadas y otras no. En mi caso estaban comentadas y por tanto no las eliminé.

  • Guardar el archivo y cerrarlo.
  • Reiniciar el sistema.

Es todo. Como decía, en mi caso se solucionó el error inmediatamente, así que espero que te sirva también, si se te presenta el error.

3 Comentarios | deja el tuyo