Hace unos días, me encontré con un error de VirtualBox que prácticamente inhabilitaba las máquinas virtuales. Ahora me pasó lo mismo pero con VMware y por fortuna, la resolución es prácticamente la misma, aunque la forma en que se leen los módulos cambia un poco. Ahora veremos cómo resolver el error VMware vmmon y vmnet.
El problema
Antes de iniciar, mi versión de Kernel es Linux 6.4.12-200.fc38.x86_64
. En Fedora y GNOME 44.4.
Cuando abres VMware (aunque antes te haya funcionado), te pide compilar dos módulos: vmmon y vmnet, sin embargo, al dar “Install” comienza el proceso y pero termina por dar un error:
Unable to install all modules. See log /tmp/vmware...
Nos salen estos mensajes, sin mayor opción. Pero ahí tenemos el archivo de log que luego veremos.
Si vas a la consola y ejecutas el siguiente comando te da el mismo resultado (error) pero con un poco más de detalle. Recomendado para que luego vayas a buscar el detalle en Google.
sudo vmware-modconfig --console --install-all
Por ahí vemos iluminado skb_sgo_segment
, que es la clave para poder encontrar el error y resolverlo.
2023-09-06T01:51:07.298Z In(05) host-63922 /tmp/modconfig-acJwaN/vmnet-only/bridge.c:1413:11: error: implicit declaration of function ‘skb_gso_segment’; did you mean ‘tcp_gso_segment’? [-Werror=implicit-function-declaration]
Este es el error con más detalle que se encuentra en el archivo de log que nos aparece en el mensaje del principio: /tmp/vmware-manuelhdez/vmware-68709.log
.
Resolver Error VMware vmmon y vmnet
Como ya lo mencioné antes, la solución es muy parecida a la del error de VirtualBox, con un par de pasos extra. Sigue esto paso a paso y seguro que se arregla.
Primero accedemos al directorio de donde VMware toma los archivos que va a compilar:
cd /usr/lib/vmware/modules/source
Vamos a extraer el contenido del directorio vmnet para modificar un archivo:
tar -xvf vmnet.tar
Ahora abrimos el archivo /usr/lib/vmware/modules/source/vmnet-only/bridge.c
.
En este archivo, agregamos después de la línea 29 lo siguiente:
#include <net/gso.h>
Guardamos y luego debemos empaquetar de nuevo el directorio con el archivo ya modificado:
# Creamos una copia (por si luego algo sale raro)
mv vmnet.tar vmnet.tar.original
# Empaquetamos de nuevo
tar -cf vmnet.tar vmnet-only
Ejecutamos de nuevo el comando:
vmware-modconfig --console --install-all
Con esto se va el error y por fin ha compilado los módulos.
Listo. Gracias por leer.