安装的最新版的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, 0, &iov, len);
更改为:
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) return skb_copy_datagram_iovec(skb, 0, &iov, len); #else struct iov_iter to; iov_iter_init(&to, READ, &iov, 1, len); return skb_copy_datagram_iter(skb, 0, &to, len); #endif
保存文件,然后重新压缩
sudo tar -uvf vmnet.tar vmnet-only
-
删除先前的解压后修改的文件
-
sudo rm -r vmnet-only
-
再次运行
GUI (Workstation or Player) 出现提升框后点install然后让它创建相关的组件。
时间: 2024-10-11 13:00:51