julio 05, 2005

VMware GSX Server 3.1 en Kernel Linux 2.6.11

No es posible compilar los modulos necesarios para vmware en un kernel 2.6.11 debido a que carece de referencia a un simbolo "skb_copy_datagram" que ha desaparecido en estas nuevas versiones, en http://www.tuxx-home.at/archives/2005/03/17/T11_45_40/ se nos da una rapida guia de como parchear el codigo del modulo para poder instalarlo sin problemas.

En resumen:


~# cd /usr/lib/vmware/modules/source
/usr/lib/vmware/modules/source# tar xf vmnet.tar
/usr/lib/vmware/modules/source# cd vmnet-only/
/usr/lib/vmware/modules/source/vmnet-only# patch patching file userif.c
/usr/lib/vmware/modules/source/vmnet-only# cd ..
/usr/lib/vmware/modules/source# rm vmnet.tar
/usr/lib/vmware/modules/source# tar cf vmnet.tar vmnet-only/
/usr/lib/vmware/modules/source# rm -r vmnet-only/

--- userif.c.orig 2005-03-17 09:22:35.179266320 +0100
+++ userif.c 2005-03-17 09:33:59.798453546 +0100
@@ -560,7 +560,8 @@
u_int16_t csum16;

skl = skb->h.raw - skb->data;
- if (skb_copy_datagram(skb, 0, buf, skl)) {
+ struct iovec iov = { .iov_base = buf, .iov_len = skl };
+ if (skb_copy_datagram_iovec(skb, 0, &iov, skl)) {
return -EFAULT;
}
csum = VNetCsumCopyDatagram(skb, skl, buf + skl);
@@ -572,7 +573,8 @@
return -EFAULT;
}
} else {
- if (skb_copy_datagram(skb, 0, buf, count)) {
+ struct iovec iov = { .iov_base = buf, .iov_len = count };
+ if (skb_copy_datagram_iovec(skb, 0, &iov, count)) {
return -EFAULT;
}
}

comentarios: