安装的最新版的linux15.04 安装VMware-Workstation11,运行gui程序的时候出现,VMware Kernel Module Update的提示窗口,
说是要更新vmnet-device。
点击install,显示安装vmnet 组件无法成功!
解决办法:
-
进入mware module 源代码目录修改相关路径
cd /usr/lib/vmware/modules/source
-
解压 vmnet modules.
sudo tar -xvf vmnet.tar
-
使用你喜欢的文本编辑器打开vmnet-only/driver.c
如:gedit,vim,emacs等sudo gedit vmnet-only/driver.c
267行修改如下:
-
if (filp && filp->f_op && filp->f_op->ioctl == VNetFileOpIoctl) {
ret = VNetFileOpIoctl(filp->f_dentry->d_inode, filp, iocmd, ioarg);
}
return ret;更改为:
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)
if (filp && filp->f_op && filp->f_op->ioctl == VNetFileOpIoctl) {
ret = VNetFileOpIoctl(filp->f_dentry->d_inode, filp, iocmd, ioarg);
}
return ret;
#else
if (filp && filp->f_op && filp->f_op->ioctl == VNetFileOpIoctl) {
ret = VNetFileOpIoctl(filp->f_path.dentry->d_inode, filp, iocmd, ioarg);
}
return ret;
#endif -
1194附近,
修改如下:
if (filp && filp->f_dentry) {
inode = filp->f_dentry->d_inode;
}
err = VNetFileOpIoctl(inode, filp, iocmd, ioarg);
return err;更为为:
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)
if (filp && filp->f_dentry) {
inode = filp->f_dentry->d_inode;
}
err = VNetFileOpIoctl(inode, filp, iocmd, ioarg);
return err;
#else
if (filp && filp->f_path.dentry) {
inode = filp->f_path.dentry->d_inode;
}
err = VNetFileOpIoctl(inode, filp, iocmd, ioarg);
return err;
#endif -
保存这个文件然后打开
vmnet-only/userif.c
sudo gedit vmnet-only/userif.c
-
526行附近修改如下:
return skb_copy_datagram_iovec(skb, , &iov, len);
更改为:
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)
return skb_copy_datagram_iovec(skb, , &iov, len);
#else
struct iov_iter to;
iov_iter_init(&to, READ, &iov, , len);
return skb_copy_datagram_iter(skb, , &to, len);
#endif -
保存文件,然后重新压缩
sudo tar -uvf vmnet.tar vmnet-only
删除先前的解压后修改的文件
sudo rm -r vmnet-only
再次运行
GUI (Workstation or Player) 出现提升框后点install然后让它创建相关的组件。