查找相關資料發現原因在於升級到ubuntu 14.04之後現在的Linux內核版本是3.13,這個內核版本修改了一些底層函數,而VMWare的相關源碼包還沒有來得及修改相關代碼。由於是內核版本的問題,所以同樣的問題也大量出現在Fedora等系統上。
因此同樣的問題可以繼續存在於3.14, 3.15等後續版本中。
解決方法爲修改vmnet模塊的源碼包中的兩處代碼。
1,獲取root權限,進入相關目錄:
su - root
cd /usr/lib/vmware/modules/source
2,解壓vmnet源碼包(得到vmnet-only文件夾):
tar -xf vmnet.tar
3,備份原來的文件:
mv vmnet.tar vmnet.tar.bak
4,修改源文件filter.c:
4.1,修改206行的:VNetFilterHookFn(const unsigned int hooknum // IN:
爲:VNetFilterHookFn(const struct nf_hook_ops *ops, // IN:
4.2,修改255行的: transmit = (hooknum == VMW_NF_INET_POST_ROUTING);
爲: transmit = (ops->hooknum == VMW_NF_INET_POST_ROUTING);
5,打包修改過的文件,刪除無用的文件
tar -uf vmnet.tar vmnet-only
rm -rf vmnet-only
6,重新編譯內核模塊,啓動vmware
可以直接點擊vmware workstation的圖標,啓動自動檢測和編譯過程;也可以通過命令:
vmware-modconfig --console --install-all