VmWare player & kernel 2.6.37

Hi all,

I'm trying to launch VmWare 3.1.3 in a ubuntu 10.10 unvironment.

I compiled and installed the latest kernel vanilla from www.kernel.org, I modified the vmmon, vsock etc.to be compiled, but at the last I receive this error:

Starting VMware services:
   VMware USB Arbitrator                                               done
   Virtual machine monitor                                            failed
   Virtual machine communication interface                            failed
   VM communication interface socket family                           failed
   Blocking file system                                               failed
   Virtual ethernet                                                   failed

ALL compiling end fine i.e. no errors, es.

make -C /lib/modules/2.6.37-custom/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
      MODULEBUILDDIR= modules
make[1]: ingresso nella directory "/usr/src/linux-2.6.37"
  CC [M]  /tmp/vmware-root/modules/vmci-only/linux/driver.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/linux/driverLog.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciContext.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciDatagram.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciDriver.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciDs.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciEvent.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciGroup.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciHashtable.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciProcess.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciQueuePair.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciResource.o
  LD [M]  /tmp/vmware-root/modules/vmci-only/vmci.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/vmware-root/modules/vmci-only/vmci.mod.o
  LD [M]  /tmp/vmware-root/modules/vmci-only/vmci.ko
make[1]: uscita dalla directory "/usr/src/linux-2.6.37"

what's wrong ??

When I start vmware a loto of windows tell me that cannot be loaded the /dev/vmmon is not loaded.. the virtual machine is busy...

I don't how to fix it.

Help me !! 🙂

PS thos os the patch applied:

diff -ru original//vmci-only/include/compat_semaphore.h patched//vmci-only/include/compat_semaphore.h
--- original//vmci-only/include/compat_semaphore.h    2010-11-11 15:37:25.000000000 -0500
+++ patched//vmci-only/include/compat_semaphore.h    2010-11-20 10:11:56.000000000 -0500
@@ -28,7 +28,7 @@
#endif


-#if defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)
+#if (defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
    /*
     * The -rt patch series changes the name of semaphore/mutex initialization
     * routines (across the entire kernel).  Probably to identify locations that
@@ -41,7 +41,7 @@
       #define DECLARE_MUTEX(_m)  DEFINE_SEMAPHORE(_m)
    #endif
    #ifndef init_MUTEX
-      #define init_MUTEX(_m) semaphore_init(_m)
+      #define init_MUTEX(_m) sema_init(_m,1)
    #endif
#endif

diff -ru original//vmmon-only/linux/driver.c patched//vmmon-only/linux/driver.c
--- original//vmmon-only/linux/driver.c    2010-11-11 15:37:22.000000000 -0500
+++ patched//vmmon-only/linux/driver.c    2010-11-29 23:09:16.000000000 -0500
@@ -145,7 +145,7 @@
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && \
     (defined(CONFIG_SMP) || defined(CONFIG_PREEMPT))
-#  define kernel_locked_by_current() kernel_locked()
+#  define kernel_locked_by_current() (current->lock_depth >= 0)
#else
#  define kernel_locked_by_current() 0
#endif
@@ -170,6 +170,7 @@
static int LinuxDriver_Ioctl(struct inode *inode, struct file *filp,
                            u_int iocmd, unsigned long ioarg);
#if defined(HAVE_UNLOCKED_IOCTL) || defined(HAVE_COMPAT_IOCTL)
+#define VMW_HAVE_UNLOCKED_IOCTL
static long LinuxDriver_UnlockedIoctl(struct file *filp,
                            u_int iocmd, unsigned long ioarg);
#endif
diff -ru original//vmnet-only/compat_semaphore.h patched//vmnet-only/compat_semaphore.h
--- original//vmnet-only/compat_semaphore.h    2010-11-11 15:37:23.000000000 -0500
+++ patched//vmnet-only/compat_semaphore.h    2010-11-20 10:11:56.000000000 -0500
@@ -28,7 +28,7 @@
#endif


-#if defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)
+#if (defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
    /*
     * The -rt patch series changes the name of semaphore/mutex initialization
     * routines (across the entire kernel).  Probably to identify locations that
@@ -41,7 +41,7 @@
       #define DECLARE_MUTEX(_m)  DEFINE_SEMAPHORE(_m)
    #endif
    #ifndef init_MUTEX
-      #define init_MUTEX(_m) semaphore_init(_m)
+      #define init_MUTEX(_m) sema_init(_m,1)
    #endif
#endif

diff -ru original//vsock-only/shared/compat_semaphore.h patched//vsock-only/shared/compat_semaphore.h
--- original//vsock-only/shared/compat_semaphore.h    2010-11-11 13:04:44.000000000 -0500
+++ patched//vsock-only/shared/compat_semaphore.h    2010-11-20 10:11:56.000000000 -0500
@@ -28,7 +28,7 @@
#endif


-#if defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)
+#if (defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
    /*
     * The -rt patch series changes the name of semaphore/mutex initialization
     * routines (across the entire kernel).  Probably to identify locations that
@@ -41,7 +41,7 @@
       #define DECLARE_MUTEX(_m)  DEFINE_SEMAPHORE(_m)
    #endif
    #ifndef init_MUTEX
-      #define init_MUTEX(_m) semaphore_init(_m)
+      #define init_MUTEX(_m) sema_init(_m,1)
    #endif
#endif

cheers

Angelo

Comments

Analyzing the error I realized:

The code is "well" compiled:

Using 2.6.x kernel build system.
make: ingresso nella directory "/tmp/vmware-root/modules/vmmon-only"
make -C /lib/modules/2.6.37-custom/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
      MODULEBUILDDIR= modules
make[1]: ingresso nella directory "/usr/src/linux-2.6.37"
  CC [M]  /tmp/vmware-root/modules/vmmon-only/linux/driver.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/linux/driverLog.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/linux/hostif.o
/tmp/vmware-root/modules/vmmon-only/linux/hostif.c: In function ‘HostIFReadUptimeWork’:
/tmp/vmware-root/modules/vmmon-only/linux/hostif.c:2004: warning: ‘newUpBase’ may be used uninitialized in this function
  CC [M]  /tmp/vmware-root/modules/vmmon-only/linux/iommu.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/comport.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/cpuid.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/hashFunc.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/memtrack.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/phystrack.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/task.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/vmx86.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/vmcore/moduleloop.o
  LD [M]  /tmp/vmware-root/modules/vmmon-only/vmmon.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/vmware-root/modules/vmmon-only/vmmon.mod.o
  LD [M]  /tmp/vmware-root/modules/vmmon-only/vmmon.ko
make[1]: uscita dalla directory "/usr/src/linux-2.6.37"
make -C $PWD SRCROOT=$PWD/. \
      MODULEBUILDDIR= postbuild
make[1]: ingresso nella directory "/tmp/vmware-root/modules/vmmon-only"
make[1]: "postbuild" è aggiornato.
make[1]: uscita dalla directory "/tmp/vmware-root/modules/vmmon-only"
cp -f vmmon.ko ./../vmmon.o
make: uscita dalla directory "/tmp/vmware-root/modules/vmmon-only"

but the service don't start:

Built vsock module
Starting VMware services:
   VMware USB Arbitrator                                               done
   Virtual machine monitor                                            failed
   Virtual machine communication interface                            failed
   VM communication interface socket family                           failed
   Blocking file system                                               failed
   Virtual ethernet                                                   failed
Unable to start services

because:

FATAL: Error inserting vmmon (/lib/modules/2.6.37-custom/misc/vmmon.ko): Invalid module format

I don't know what I have to do !

I had to install the latest kernel compiled, but not installed.... 🙂 Now it works fine.

Version history
Revision #:
1 of 1
Last update:
‎01-14-2011 03:36 PM
Updated by: