26 de mayo de 2007

Instalando VMware Server en Fedora Core 6

Existen muchos port sobre problemas en la instalacion de VMware Server sobre Fedora, muchos con trucos que no funcionan, sobre todo si posees las ultimas actualizaciones del Kernel con la ultima version de VMware Server. Supongo que han dado tantas vueltas en distintas paginas y conocen como efectuar la instalacion de VMware. Basicamente estos son los requerimientos o la instalacion que efectue en mi caso, por lo tanto voy a obviar muchos pasos e involucrarnos en concfreto al problema.

Requerimientos:

Kernel version: 2.6.20-1.2948.fc6
VMware server Version: 1.03 en formato RPM
Instalar kernel-devel y Xinetd.

Post Instalacion

Una vez instalados todos los requerimientos, debemos ejecutar vmware-config.pl
y por supueto, el error.
Este es parte de error que genera la configuracion :



Using 2.6.x kernel build system.
make: se ingresa al directorio `/tmp/vmware-config10/vmmon-only'
make -C /lib/modules/2.6.20-1.2948.fc6/build/include/.. SUBDIRS=$PWD
SRCROOT=$PWD/. modules
make[1]: se ingresa al directorio
`/usr/src/kernels/2.6.20-1.2948.fc6-i686'
CC [M] /tmp/vmware-config10/vmmon-only/linux/driver.o
In file included from
/tmp/vmware-config10/vmmon-only/linux/driver.c:80:
/tmp/vmware-config10/vmmon-only/./include/compat_kernel.h:21:
error: expected declaration specifiers or ‘...’
before ‘compat_exit’
/tmp/vmware-config10/vmmon-only/./include/compat_kernel.h:21:
error: expected declaration specifiers or ‘...’
before ‘exit_code’
/tmp/vmware-config10/vmmon-only/./include/compat_kernel.h:21:
aviso: el tipo de dato por defecto es ‘int’ en la
declaración de ‘_syscall1’
make[2]: *** [/tmp/vmware-config10/vmmon-only/linux/driver.o] Error 1
make[1]: *** [_module_/tmp/vmware-config10/vmmon-only] Error 2
make[1]: se sale del directorio
`/usr/src/kernels/2.6.20-1.2948.fc6-i686'
make: *** [vmmon.ko] Error 2
make: se sale del directorio `/tmp/vmware-config10/vmmon-only'
Unable to build the vmmon module.
For more information on how to troubleshoot module-related problems,
please
visit our Web site at
"http://www.vmware.com/download/modules/modules.html" and
"http://www.vmware.com/support/reference/linux/prebuilt_modules_linux.html".
Execution aborted.

Como se observa el error es causado en una de las cabeceras de vmmon de VMware, y eso es lo que vamos a solventar.

Codigo de la cabecera compat_kernel.h
A continuacion el codigo de la cabecera compat_kernel.h y la linea 21 resaltada en blanco. Lo que hacemos es colocarla como comentario, y solventado el problema. Es usado para procesadores de 64 bit y arm y provee un acceso a la funcion de salida Exit().




#ifndef
__COMPAT_KERNEL_H__
# define __COMPAT_KERNEL_H__
#include <asm/unistd.h>
/*
* Used by _syscallX macros. Note that this is global
variable, so
* do not rely on its contents too much. As exit() is only
function
* we use, and we never check return value from exit(), we
have
* no problem...
*/
extern int errno;
/*
* compat_exit() provides an access to the exit() function. It
must * be named compat_exit(), as exit() (with different
signature) is * provided by x86-64, arm and other (but not by
i386).
*/
#define __NR_compat_exit __NR_exit
//static
inline _syscall1(int, compat_exit, int, exit_code);

/*
* wait_for_completion and friends did not exist before 2.4.9.
*/
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 9)
#define compat_complete_and_exit(comp, status) complete_and_exit(comp,
status)
#else
/*
* See compat_wait_for_completion in compat_completion.h.
* compat_exit implicitly performs an unlock_kernel, in
resident code,
* ensuring that the thread is no longer running in module
code when the
* module is unloaded.
*/
#define compat_complete_and_exit(comp, status) do { \
lock_kernel(); \
up(comp); \
compat_exit(status); \
} while (0)
#endif
#endif /* __COMPAT_KERNEL_H__ */

Se preguntaran donde consigo este archivo.....
El mismo esta en un archivo comprimito tar llamado vmmon.tar, que instala vmware y en el caso de fedora es instalado en /usr/lib/vmware/modules/source/vmmon.tar, debemos descomrpimir este archivo en una carpeta temporal. Al descomprimirlo, buscar dentro de la carpeta vmmon_only/include el archivo compat_kernel.h y editarlo. En la edicion del archivo colocar como comentatio la linea 21, anteponiendo una doble barra de division (//).
Guardar la modificacion, empaquetar nuevamente directorio vmmon en formato tar y copiarlo nuevamente en /usr/lib/vmware/modules/source/vmmon.tar.
Ahora podemos ejecutar vmware-config.pl y responder a las preguntas que nos haga el instalador.

Esto es todo, si tienen alguna duda no duden en escribirme.
Share Up To 110 % - 10% Affiliate Program