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