Monday, January 9, 2012

VMWare Workstation 8 and Linux Kernel 3.2

I have just completed compiling Linux Kernel 3.2, the latest release of Linux Kernel which was released early this month. Like always, new major release brings a lot of improvements which can be seen in KernelNewbies.

For those who would like to compile Linux Kernel 3.2, please pay attention when it comes to ethernet drivers. You must make sure that you have written down your ethernet card vendor as the configuration will ask you again and if you failed to answer (by typing no or picking the wrong vendor), you will end up with no ethernet driver loaded and if you are connected to the Internet using a wire, then you are out of connection. Luckily it can be solved by just recompiling the kernel and load the new module.

New kernel means new patch for VMWare and i have confirmed that a patch from Weltal's Blog is working like charm. All you need is to apply the patch included and it should go just fine. Please change the version according to the VMWare Workstation or VMWare Player version installed on your machine.

In case you find this error:
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c: In function ‘IOMMU_AdjustMappings’:
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c:180:4: error: implicit declaration of
function ‘iommu_found’ [-Werror=implicit-function-declaration]
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c: In function ‘IOMMU_RegisterDevice’:
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c:415:7: error: too few arguments to 
function ‘iommu_domain_alloc’
include/linux/iommu.h:68:29: note: declared here
Then, you can fix this problem by :
cd /usr/lib/vmware/modules/source
tar -xvf vmmon.tar
cd vmmon-only/linux/
vi iommu.c
add this lines on top of the file
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)
#include <linux/pci.h>
#define iommu_found() iommu_present(&pci_bus_type)
#define iommu_domain_alloc() iommu_domain_alloc(&pci_bus_type)
#endif
then finish it by saving it and then:
cd /usr/lib/vmware/modules/source
rm vmmon.tar
tar -cvf vmmon.tar vmmon-only/
vmware-modconfig --console --install-all
That's it. You can start your VMWare and voila... it's working again.