红联Linux门户
Linux帮助

Ubuntu Kylin 15.04下安装vmware 11不能用的解决方法

发布时间:2015-05-12 15:20:24来源:ubuntukylin作者:ubuntukylin

首先VMware 11的支持名单中还没有Ubuntu Kylin 15.04,实质上该版本不支持Linux 3.19内核,下面有网友给出解决方法,碰到这个问题的请试一试。


解决方法:

$ cd /usr/lib/vmware/modules/source
$ sudo tar -xvf vmnet.tar

修改 driver.c 和 userif.c:

在 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 – 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 -cvf vmnet.tar vmnet-only/
$ sudo rm -rf vmnet-only/
$ sudo vmware-modconfig –console –install-all


解决Ubuntu15.04中VMware workstaion无法打开:http://www.linuxdiyf.com/linux/11979.html

安装Ubuntu Kylin VM虚拟机并安装VMware tools:http://www.linuxdiyf.com/linux/11814.html