VMware Cloud Community
drixter
Contributor
Contributor

FreeBSD 10 - VMWare Tools compilation error

Hi,

I'm getting the problem with the compilation of vmware-tools on FreeBSD 10. I think it is because the FreeBSD is using now clang instead gcc.

Starting VMware Tools services in the virtual machine:

   Switching to guest configuration:                                   done

   Guest memory manager:                                              failed

   Guest operating system daemon:                                      done

Unable to start services for VMware Tools

Execution aborted.

Direct module compilation:

root@database:~/vmware-tools-distrib/lib/modules/source/vmmemctl-only # make

os.c:298:22: error: implicit declaration of function 'kmem_alloc_nofault' is invalid in C99 [-Werror,-Wimplicit-function-declaration]

   vm_offset_t res = kmem_alloc_nofault(kernel_map, PAGE_SIZE);

                     ^

os.c:355:14: error: incompatible pointer types passing 'vm_map_t' (aka 'struct vm_map *') to parameter of type 'struct vmem *'

      [-Werror,-Wincompatible-pointer-types]

   kmem_free(kernel_map, (vm_offset_t)mapping, PAGE_SIZE);

             ^~~~~~~~~~

@/vm/vm_extern.h:59:29: note: passing argument to parameter here

void kmem_free(struct vmem *, vm_offset_t, vm_size_t);

                            ^

os.c:372:33: error: implicit declaration of function 'kmem_alloc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]

   p->bitmap = (unsigned long *)kmem_alloc(kernel_map, p->size);

                                ^

os.c:372:33: note: did you mean 'kmem_malloc'?

   p->bitmap = (unsigned long *)kmem_alloc(kernel_map, p->size);

                                ^~~~~~~~~~

                                kmem_malloc

@/vm/vm_extern.h:58:13: note: 'kmem_malloc' declared here

vm_offset_t kmem_malloc(struct vmem *, vm_size_t size, int flags);

            ^

os.c:372:16: error: cast to 'unsigned long *' from smaller integer type 'int' [-Werror,-Wint-to-pointer-cast]

   p->bitmap = (unsigned long *)kmem_alloc(kernel_map, p->size);

               ^

os.c:379:14: error: incompatible pointer types passing 'vm_map_t' (aka 'struct vm_map *') to parameter of type 'struct vmem *'

      [-Werror,-Wincompatible-pointer-types]

   kmem_free(kernel_map, (vm_offset_t)p->bitmap, p->size);

             ^~~~~~~~~~

@/vm/vm_extern.h:59:29: note: passing argument to parameter here

void kmem_free(struct vmem *, vm_offset_t, vm_size_t);

                            ^

5 errors generated.

*** Error code 1

Stop.

make: stopped in /root/vmware-tools-distrib/lib/modules/source/vmmemctl-only

Using a workaround what I find on net gives me:

make: "/usr/share/mk/bsd.own.mk" line 457: MK_CLANG_IS_CC can't be set by a user.

Can someone help me with this issue or point me to some resulution?

VMWare ESXi 5.5.0 Build 1331820

Regards,

Reply
0 Kudos
3 Replies
drixter
Contributor
Contributor

Hi,

pkg install open-vm-tools-nox11

Better than nothing.

sharix
Contributor
Contributor

Hello,

I prepared a simple patch, following development changes of 9->10.

Currently it's only for esxi-5.1 vmware-freebsd-tools available:

ftp://ftp.omnilan.de/pub/FreeBSD/OmniLAN/vmware-esxi_kernel-modules/FreeBSD-10_ko-5.1-source.patch

Maybe it's applicaple to 5.5 tools also, haven't checked.

Reply
0 Kudos
HarryOfAllTrade
Contributor
Contributor

I created a YouTube video on how to get FreeBSD 10 installed on ESXi. It also covers getting the VMware tools properly installed as well. I created a script that automates the process and it applies all the patches needed for VMware tools to work.

My script will apply patches need for either 5.0, 5.1, or 5.5.  For 5.5 there is a command line option that needs to be set. All the details you need are in the video. In the video description there is a link to the uncut version of the video and it shows every step. It might be able to help you out.

Reply
0 Kudos