Ubuntu – Why doesn’t bridged networking work on VMware Server 2.0 w/ Ubuntu 9.04

networkingUbuntuvmware-server

I'm installing VMware Server 2.0 on an Ubuntu 9.04 system. I have an Ubuntu 9.04 guest with Bridged network interface configured.

When I try to get an address during installation, the guest fails to contact the DHCP server. NAT and Host-only networking both work fine, however.

Best Answer

Answering my own question, as the information is located in two places and not easily searchable, hopefully this helps someone else.

The problem is that the VSOCK module isn't getting compiled, despite gcc, binutils and the kernel source packages all being present.

ii  binutils                                  2.19.1-0ubuntu3                    The GNU assembler, linker and binary utiliti
ii  gcc                                       4:4.3.3-1ubuntu1                   The GNU C compiler
ii  linux-headers-2.6.28-11                   2.6.28-11.42                       Header files related to Linux kernel version
ii  linux-headers-2.6.28-11-server            2.6.28-11.42                       Linux kernel headers for version 2.6.28 on x
ii  linux-image-2.6.28-11-server              2.6.28-11.42                       Linux kernel image for version 2.6.28 on x86
ii  linux-source-2.6.28                       2.6.28-11.42                       Linux kernel source for version 2.6.28 with 

There is actually a bug filed on Launchpad about this issue, and a user submitted a patch to a similar query on Ubuntu Forums. Patching the vmware-config.pl as described worked for me. Here's the patch:

--- /usr/bin/vmware-config.pl.orig  2008-11-28 12:06:35.641054086 +0100
+++ /usr/bin/vmware-config.pl   2008-11-28 12:30:38.593304082 +0100
@@ -4121,6 +4121,11 @@
     return 'no';
   }

+  if ($name eq 'vsock') {
+    print wrap("VMWare config patch VSOCK!\n");
+    system(shell_string($gHelper{'mv'}) . ' -vi ' . shell_string($build_dir . '/../Module.symvers') . ' ' . shell_string($build_dir . '/vsock-only/' ));
+  }
+
   print wrap('Building the ' . $name . ' module.' . "\n\n", 0);
   if (system(shell_string($gHelper{'make'}) . ' -C '
              . shell_string($build_dir . '/' . $name . '-only')
@@ -4143,6 +4148,10 @@
     if (try_module($name, $build_dir . '/' . $name . '.o', 0, 1)) {
       print wrap('The ' . $name . ' module loads perfectly into the running kernel.'
                  . "\n\n", 0);
+      if ($name eq 'vmci') {
+   print wrap("VMWare config patch VMCI!\n");
+   system(shell_string($gHelper{'cp'}) . ' -vi ' . shell_string($build_dir.'/vmci-only/Module.symvers') . ' ' . shell_string($build_dir . '/../'));
+      } 
       remove_tmp_dir($build_dir);
       return 'yes';
     }