Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1150712
  • 博文数量: 101
  • 博客积分: 110
  • 博客等级: 民兵
  • 技术积分: 1842
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-24 13:26
个人简介

专注linux

文章分类

全部博文(101)

文章存档

2017年(2)

2016年(12)

2015年(17)

2014年(41)

2013年(27)

2012年(3)

分类: LINUX

2015-12-10 08:51:30

昨天(2015-12-08),一不小心将内核模块全都删除了,汗。。。。郁闷了好久,也想了些办法,依然没有救活原系统,无奈只好重装。
之前的系统,我安装vmware 一直不能成功使用,各种版本vmware试了个遍。。。。。
全部都是报“在运行vmware之前需要编译一些必要的模块”,然后弹出对话框让我指定对应内核头文件路径,指定之后,提示没有找到正在使用的内核版本的头文件。。。就那么持续了1个多月没有解决。
重装后,我直接安装了vmware workstation10.0.2,安装成功,在启动时,弹出需要编译一些模块,但是对话框的样式完全与之前尝试时不同了,很是奇怪。只有一个vmnet模块没有编译通过,经过之前的各种尝试,也知道问题在什么地方,所以迳直去做了修改,然后在启动编译通过,正常使用了。。。
经过这个对比,我在想为什么会有这样的差异。或许是在之前的系统中我首先安装了vmware workstation 12,然后卸载,又装了10、9、vmware Player12、7等等进行尝试,但是vmware在卸载时并没有经编译模块的组件卸载掉,导致了我折腾了那么久。

我的系统信息:
Linux localhost.localdomain 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

安装的vmware workstation版本:VMware-Workstation-Full-10.0.2-1744117.x86_64

出现的问题: vmware 中的vmnet 编译未通过

解决方法:在/usr/lib/vmware/modules/source中找到vmnet.tar,将其解压,修改filter.c文件的206、259行的编译选项:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)  ==>  #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)

小版本有差异,代码行数是有些不同的,可参照以下:
主要是分别修改下面这两行的编译选项
1、VNetFilterHookFn(const struct nf_hook_ops *ops,
2、transmit = (ops->hooknum == VMW_NF_INET_POST_ROUTING);

修改好后,保存,将vmnet-only打包为vmnet.tar 替换原包。

再运行vmware即可。

update 2016.7.26

昨天将centos升级,内核随之升级为了3.10.0-327.22.2.el7.x86_64。
vmware的vmnet模块也要相应的重新编译,较上个版本,nf_hookfn函数类型有所变化:

点击(此处)折叠或打开

  1. typedef unsigned int nf_hookfn(const struct nf_hook_ops *ops,
  2.                    struct sk_buff *skb,
  3.                    const struct net_device *in,
  4.                    const struct net_device *out,
  5. #ifndef __GENKSYMS__
  6.                    const struct nf_hook_state *state
  7. #else
  8.                    int (*okfn)(struct sk_buff *)
  9. #endif
  10.                    );
增加了__GENKSYMS__宏判断定义。

将vmnet中的filter.c中VNetFilterHookFn函数定义添加以上宏判断,保存,打包。执行sudo vmware即可



阅读(2727) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~