VMware player 4.0.4 更新后驱动编译失败的解决办法

从VMware player 4.0.2 升级到 4.0.4之后,启动的时候提示模块Virtual Network Device和VMware Blocking Filesystem编译失败。解决方案:

  • 进入 /usr/lib/vmware/modules/source
  • 执行 tar xf vmnet.tar
  • 执行 tar xf vmblock.tar

然后修改vmblock-only/linux/filesystem.c 第528行,将

rootDentry = d_alloc_root(rootInode);

改成

rootDentry = d_make_root(rootInode);

接下来修改vmnet/userif.c,将第520行开始的代码:

	 tmpCsum = csum_and_copy_to_user(vaddr + frag->page_offset,
					 curr, frag->size, 0, &err);
	 kunmap(frag->page);```

改成

```vaddr = kmap(frag->page.p);
	 tmpCsum = csum_and_copy_to_user(vaddr + frag->page_offset,
					 curr, frag->size, 0, &err);
	 kunmap(frag->page.p);```

然后打开netif.c,将第134行的

```.ndo_set_multicast_list = VNetNetifSetMulticast,```

改成

```.ndo_set_rx_mode = VNetNetifSetMulticast,```

接下来修改filter.c,在开头加入

```#include <linux/module.h>```

改动结束,然后打包文件:

```lexchou@lex-work:/usr/lib/vmware/modules/source » sudo tar cf vmnet.tar vmnet-only                                                                                                                                                       
lexchou@lex-work:/usr/lib/vmware/modules/source » sudo tar cf vmblock.tar vmblock-only```

启动vmware player会要求重新编译驱动,这次虽然编译成功,但vmware player还是报错说失败,关闭vmware player重新打开即可

Last modified on 2012-08-28