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.