kali linux 2016.1下安装VMware12.1.1打不开的处理过程

来源:互联网 发布:openstack 创建网络 编辑:程序博客网 时间:2024/05/16 13:38

对过程不感兴趣的朋友可以拉到最后看最终解决方法

1、安装内核头文件

从官网下载VMware安装包之后先安装内核头文件

我的kali是64位的,用“uname -r”查看内核版本是 4.3.0-kali1-amd64

直接安装头文件

apt-get install linux-headers-$(uname -r)

会提示找不到软件包

root@wangsansan:~# apt-get install linux-headers-4.3.0-kalil-amd64
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
E: 无法定位软件包 linux-headers-4.3.0-kalil-amd64
E: 无法按照 glob ‘linux-headers-4.3.0-kalil-amd64’ 找到任何软件包
E: 无法按照正则表达式 linux-headers-4.3.0-kalil-amd64 找到任何软件包

建议是先更新一遍或者直接安装4.6.0-kali1-amd64的内核头文件

A:更新
先添加源,然后执行下面的命令

apt-get update
apt-get dist-upgrade

具体过程就不说了,这个过程很漫长,我更新了一个下午。
更新完之后可能会进不了桌面,开机的时候进恢复模式执行一下这条命令

apt-get install xorg

B:直接安装4.6.0的内核头文件
添加源之后执行下面的语句

apt-get update
apt-get install linux-headers-4.6.0-kali1-amd64

内核头文件安装完成之后就可以装VMware了

2、VMware

VMware的安装过程就不说了,在安装完成之后启动VMware会出现这个窗口
VMware Kernel Module Updater
这里写图片描述

到最后一部启动服务就出错了,然后会弹出一个这样的对话框

这里写图片描述

根据提示查看日志文件
跳到最后一行

W110: Failed to build vmnet. Failed to execute the build command.

vmnet编译失败

点确定

这里写图片描述

大概意思是说运行VMware之前,需要编译一些模块到内核中运行。

我们现在就看看具体是怎么回事,我们先进他的模块的源码目录,把源码解压之后make,在终端中查看到底是什么问题。

**模拟编译过程**#cd进那些模块的源码目录cd /usr/lib/vmware/modules/source/#把vmnet.tar解压出来tar zxvf vmnet.tar#进入解压出来的那个目录cd vmnet-only#模拟编译一下make

第一次错误:

编译失败,返回的信息如下

/usr/src/linux-headers-4.6.0-kali1-common/scripts/Makefile.build:296: recipe for target ‘/usr/lib/vmware/modules/source/vmnet-only/userif.o’ failed
make[4]: * [/usr/lib/vmware/modules/source/vmnet-only/userif.o] Error 1
/usr/src/linux-headers-4.6.0-kali1-common/Makefile:1446: recipe for target ‘module/usr/lib/vmware/modules/source/vmnet-only’ failed
make[3]: * [module/usr/lib/vmware/modules/source/vmnet-only] Error 2
Makefile:146: recipe for target ‘sub-make’ failed
make[2]: * [sub-make] Error 2
Makefile:8: recipe for target ‘all’ failed
make[1]: * [all] Error 2
make[1]: Leaving directory ‘/usr/src/linux-headers-4.6.0-kali1-amd64’
Makefile:120: recipe for target ‘vmnet.ko’ failed
make: * [vmnet.ko] Error 2

百度搜索关键词“vmnet-only/userif.o’ failed”没有找到和这个问题匹配的文章。
然后上谷歌搜索同样的关键词,找到一篇文章
http://alouche.net/blog/2012/06/22/patching-vmware-vmnet-module-linux-3-2/
这篇文章只给了一条命令

wget https://github.com/alouche/vmware-vmnet-3.2-kernel/tarball/3.2.0 -O - | tar -xzf - --transform 's/alouche-vmware-vmnet-3.2-kernel-0dcdbb9/vmnet-only/' && tar cvf vmnet.tar vmnet-only

这条命令的意思是下载一个vmnet.tar的包,解压出来再打包里面的源文件,放到vmnet-only文件夹,再打包为vmnet.tar,最后替换掉/usr/lib/vmware/modules/source/目录下的vmnet.tar

如果上面的链接失效了这里提供一个百度云的资源
http://pan.baidu.com/s/1csUG5w

尝试这个方法,还是不能编译vmnet这个模块,再重复上面的步骤模拟make编译vmnet

第二次错误:

/usr/src/linux-headers-4.6.0-kali1-common/scripts/Makefile.build:296: recipe for target ‘/usr/lib/vmware/modules/source/vmnet-only/driver.o’ failed
make[4]: * [/usr/lib/vmware/modules/source/vmnet-only/driver.o] Error 1
/usr/src/linux-headers-4.6.0-kali1-common/Makefile:1446: recipe for target ‘module/usr/lib/vmware/modules/source/vmnet-only’ failed
make[3]: * [module/usr/lib/vmware/modules/source/vmnet-only] Error 2
Makefile:146: recipe for target ‘sub-make’ failed
make[2]: * [sub-make] Error 2
Makefile:8: recipe for target ‘all’ failed
make[1]: * [all] Error 2
make[1]: Leaving directory ‘/usr/src/linux-headers-4.6.0-kali1-amd64’
Makefile:126: recipe for target ‘vmnet.ko’ failed
make: * [vmnet.ko] Error 2

这一次又以“vmnet-only/driver.o’ failed”为关键词搜索,这次搜索到的修复方案就比较多的,我参照的是这个
http://www.justfbt.com/2015/08/28/Unable-to-run-Vmware-workstation-11-failed-to-build-vmnet/

这篇文章提供的最终修复方案如下:

#apt-get install build-essential#curl http://pastie.org/pastes/9934018/download -o /tmp/vmnet-3.19.patch#cd /usr/lib/vmware/modules/source#tar -xf vmnet.tar#patch -p0 -i /tmp/vmnet-3.19.patch#tar -cf vmnet.tar vmnet-only#rm -r *-only#vmware-modconfig --console --install-all

这个方案是下载一个vmnet的补丁文件,更改的文件是driver.c

如果上面的链接失效,百度云链接
http://pan.baidu.com/s/1cKEZcq

这个方案还是没能解决我的问题,接着又再一次make

第三次错误:

这次的错误如下:

/usr/src/linux-headers-4.6.0-kali1-common/scripts/Makefile.build:296: recipe for target ‘/tmp/modconfig-0f4RRy/vmnet-only/hub.o’ failed
make[4]: * [/tmp/modconfig-0f4RRy/vmnet-only/hub.o] Error 1
/usr/src/linux-headers-4.6.0-kali1-common/Makefile:1446: recipe for target ‘module/tmp/modconfig-0f4RRy/vmnet-only’ failed
make[3]: * [module/tmp/modconfig-0f4RRy/vmnet-only] Error 2
Makefile:146: recipe for target ‘sub-make’ failed
make[2]: * [sub-make] Error 2
Makefile:8: recipe for target ‘all’ failed
make[1]: * [all] Error 2
make[1]: Leaving directory ‘/usr/src/linux-headers-4.6.0-kali1-amd64’
Makefile:126: recipe for target ‘vmnet.ko’ failed
make: * [vmnet.ko] Error 2
make: Leaving directory ‘/tmp/modconfig-0f4RRy/vmnet-only’
Unable to install all modules. See log for details.

这次搜了好久,都没找到有人和我一样错误。
看到这么一个标题的文章

“Workstation 12.1 does not compile on kernel 4.6.0-1”

https://communities.vmware.com/thread/536705?start=0&tstart=0

vmware社区的解决方案(最终解决方案):

after kernel 4.4 (VMWare Workstation 12) need some changes in c code:
/usr/lib/vmware/modules/source
1) vmmon.tar
- untar
- change ./vmmon-only/linux/hostif.c
- replace all:
“get_user_pages” to “get_user_pages_remote”
- tar and replace original
2) vmnet.tar
- untar
- change ./vmnet-only/userif.c
- replace all:
“get_user_pages” to “get_user_pages_remote”
- tar and replace original

在kernel4.4内核中需要修改两个源文件的code
1)vmmon.tar
把vmmon-only/linux/hostif.c文件里的“get_user_pages”全都替换成“get_user_pages_remote”,我这里用的vim编辑器,不习惯用vim的也可以用其他编辑器替换字符串

cd /usr/lib/vmware/modules/source
tar xf vmmon.tar
cd vmmon-only/linux/
vim hostif.c
:%s/get_user_pages/get_user_pages_remote/g
:wq
cd ../..
tar cvf vmmon.tar vmmon-only

2)vmnet.tar
把/vmnet-only/userif.c文件里的“get_user_pages”全都替换成“get_user_pages_remote”,方法和修改vmmon.tar一样的

cd /usr/lib/vmware/modules/source
tar xf vmnet.tar
cd vmnet-only
vim userif.c
:%s/get_user_pages/get_user_pages_remote/g
:wq
cd ../..
tar cvf vmnet.tar vmnet-only

现在再运行一遍vmware,可以成功运行了

这里写图片描述

附上一张熟悉的启动界面

前两个错误有人用上面的方法成功解决了问题,不过我没有,如果有朋友遇到同样的错误可以尝试一下这些解决办法。

写在最后:学习一款软件或一个操作系统,最好的方法就是不断的遇到问题并自己去解决问题。当你成功解决了你的问题的时候,你的兴奋无可言喻。要体会这种兴奋,你将会花费很多时间和精力,去相遇无数次failed和error。
(去TM的鸡汤)

博客的文章都会发到个人订阅号上,欢迎关注
这里写图片描述

1 0
原创粉丝点击