印象中 Archlinux 下的 VMWare Workstation 总是出问题, 因此写这个帖子, 记录出问题时间/原因/解决方案.

PS: 每次更新内核后可能需要重新编译 vmware 的内核模块, 并且可能会影响到 openconnect(VPN) 的使用, 因此只有在重启电脑前才更新内核, 其他情况下只更新应用程序:

yaourt -Syua --ignore linux* --noconfirm

2017-02-26

内核由 linux-lts(4.4) 切换 linux(4.9), 导致编译 vmware 内核模块 vmnet 出错:

$ sudo vmware
Stopping VMware services:
VMware Authentication Daemon done
VM communication interface socket family done
Virtual machine communication interface done
Virtual machine monitor done
Blocking file system done
make: 进入目录“/tmp/modconfig-8XIMI8/vmmon-only”
Using kernel build system.
/sbin/make -C /lib/modules/4.9.11-1-ARCH/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: 进入目录“/usr/lib/modules/4.9.11-1-ARCH/build”
CC [M] /tmp/modconfig-8XIMI8/vmmon-only/linux/driver.o
CC [M] /tmp/modconfig-8XIMI8/vmmon-only/linux/hostif.o
CC [M] /tmp/modconfig-8XIMI8/vmmon-only/linux/driverLog.o
CC [M] /tmp/modconfig-8XIMI8/vmmon-only/common/memtrack.o
CC [M] /tmp/modconfig-8XIMI8/vmmon-only/common/apic.o
CC [M] /tmp/modconfig-8XIMI8/vmmon-only/common/vmx86.o
CC [M] /tmp/modconfig-8XIMI8/vmmon-only/common/cpuid.o
/tmp/modconfig-8XIMI8/vmmon-only/linux/hostif.c: 在函数‘HostIFGetUserPages’中:
/tmp/modconfig-8XIMI8/vmmon-only/linux/hostif.c:1166:67: 错误:传递‘get_user_pages’的第 5 个参数时在不兼容的指针类型间转换 [-Werror=incompatible-pointer-types]
retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL);
^~~~~~
In file included from /tmp/modconfig-8XIMI8/vmmon-only/./include/compat_page.h:23:0,
from /tmp/modconfig-8XIMI8/vmmon-only/linux/hostif.c:32:
./include/linux/mm.h:1280:6: 附注:需要类型‘struct vm_area_struct **’,但实参的类型为‘struct page **’
long get_user_pages(unsigned long start, unsigned long nr_pages,
^~~~~~~~~~~~~~
/tmp/modconfig-8XIMI8/vmmon-only/linux/hostif.c:1166:13: 错误:提供给函数‘get_user_pages’的实参太多
retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL);
^~~~~~~~~~~~~~
In file included from /tmp/modconfig-8XIMI8/vmmon-only/./include/compat_page.h:23:0,
from /tmp/modconfig-8XIMI8/vmmon-only/linux/hostif.c:32:
./include/linux/mm.h:1280:6: 附注:在此声明
long get_user_pages(unsigned long start, unsigned long nr_pages,
^~~~~~~~~~~~~~
/tmp/modconfig-8XIMI8/vmmon-only/linux/driver.c:1283:1: 警告:always_inline function might not be inlinable [-Wattributes]
LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
^~~~~~~~~~~~~~~~~~~~~~~
cc1:有些警告被当作是错误
make[2]: *** [scripts/Makefile.build:293:/tmp/modconfig-8XIMI8/vmmon-only/linux/hostif.o] 错误 1
make[2]: *** 正在等待未完成的任务....
make[1]: *** [Makefile:1490:_module_/tmp/modconfig-8XIMI8/vmmon-only] 错误 2
make[1]: 离开目录“/usr/lib/modules/4.9.11-1-ARCH/build”
make: *** [Makefile:120:vmmon.ko] 错误 2
make: 离开目录“/tmp/modconfig-8XIMI8/vmmon-only”
...

解决方案:

#!/bin/sh
cd /usr/lib/vmware/modules/source
tar xf vmmon.tar
mv vmmon.tar vmmon.old.tar
sed -r -i -e 's/KERNEL_VERSION\(4, 6, 0\)/KERNEL_VERSION\(4, 9, 0\)/g' vmmon-only/linux/hostif.c
sed -r -i -e 's/retval = get_user_pages\(\(unsigned long\)uvAddr, numPages, 0, 0, ppages, NULL\);/retval = get_user_pages\(\(unsigned long\)uvAddr, numPages, 0, ppages, NULL\);/g' vmmon-only/linux/hostif.c
tar cf vmmon.tar vmmon-only
rm -r vmmon-only
tar xf vmnet.tar
mv vmnet.tar vmnet.old.tar
sed -r -i -e 's/KERNEL_VERSION\(4, 6, 0\)/KERNEL_VERSION\(4, 9, 0\)/g' vmnet-only/userif.c
sed -r -i -e 's/retval = get_user_pages\(addr, 1, 1, 0, \&page, NULL\);/retval = get_user_pages\(addr, 1, 0, \&page, NULL\);/g' vmnet-only/userif.c
tar cf vmnet.tar vmnet-only
rm -r vmnet-only

Archlinux 下的 VMWare Workstation 维护笔记的更多相关文章

  1. Ubuntu 14.04/14.10下安装VMware Workstation 11图文教程

    VMware workstation 是一个可以进行桌面操作的虚拟软件.它可以让我们在一台电脑或者虚拟机中运行多个虚拟机. 由VMware公司研发和维护.由于是商业软件,我们需要买他们家的许可证或者说 ...

  2. [转] Ubuntu 14.04/14.10下安装VMware Workstation 11图文教程

    点击这里查看原文 译者:GuiltyMan 本文由 Linux公社翻译组 原创翻译  Linux公社 诚意奉献 更多请访问此处博客网站 VMware workstation 是一个可以进行桌面操作的虚 ...

  3. windows 下使用VMware Workstation Pro 工具,ubuntu创建虚拟机

    本文记录windows 下使用VMware Workstation Pro 工具,ubuntu创建虚拟机 的步骤 第一步 [文件] --- [新建虚拟机]   第二步 弹出的新建虚拟机向导对话框 标准 ...

  4. win8.1下使用vmware workstation 来编译ffmpeg

    先吐槽下,T440预装的win8.1 采用 UEFI+GPT分区导致 无法使用传统的EasyBCD来达到win+ubuntu双系统效果, 尝试了2天全部失败,等以后有时间了 买块U盘再干掉win8 现 ...

  5. linux主机下的Vmware Workstation配置NAT设置 端口映射-Ubuntu为例

    最近折腾虚拟机,由于是在linux下进行的,而相关资料比较少,所以遇到了一些问题. 一个就是配置vmware workstation的NAT设置.因为一般来说,NAT可以共享主机的ip,从而能以主机身 ...

  6. 【转】Windows 7下用VMware Workstation 10虚拟机安装 Ubuntu 14.04

    一.软件下载 1.VMware Workstation v10.0.1虚拟机官方简体中文版下载(附永久KEY注册密钥) http://www.linuxidc.com/Linux/2012-11/73 ...

  7. windows 10 下安装VMware Workstation Pro 15.0(亲测可用!)

    参考链接:https://blog.csdn.net/qq_39016934/article/details/90285915 VMware Workstation Pro 15.0的下载官网:htt ...

  8. VMware Workstation 学习笔记

    1. 什么是虚拟机:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.可以运行在一个完全隔离环境中的完整计算机系统. 2. 虚拟机的用途:测试软件.搭建某种特定需求的环境 ...

  9. 解决Ubuntu系统下的VMware Workstation无法打开虚拟网络编辑器界面的问题

    本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=630 操作环境: Ubuntu 17 VMware 14 pro for Linux 问题描述: 我在Ubuntu ...

随机推荐

  1. [NOI2012][bzoj2879] 美食节 [费用流+动态加边]

    题面 传送门 思路 先看看这道题 修车 仔细理解一下,这两道题是不是一样的? 这道题的不同之处 但是有一个区别:本题中每一种车有多个需求,但是这个好办,连边的时候容量涨成$p\lbrack i\rbr ...

  2. cf 853 D Michael and Charging Stations [dp]

    题面: 传送门 思路: 看到题目,第一思路是贪心,但是我很快就否决掉了(其实分类贪心也可以做) 然后就想,贪心不能解决的状态缺失,是否可以用dp来解决呢? 事实证明是可以的 我们设dp[i][j]表示 ...

  3. Codeforces Round #315 (Div. 2) A 水且坑

    A. Music time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  4. 先将Excel导入到gridview再添加进数据库【Excel批量添加】

    原文发布时间为:2008-10-27 -- 来源于本人的百度文章 [由搬家工具导入] 前台: <%@ Page Language="C#" AutoEventWireup=& ...

  5. .net web api返回结果为json

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面为大家介绍几种不错的方法 web api写api接口时默认返回的是把你的对象序列化后以 ...

  6. 【jetty】Jetty与Tomcat的区别

    Jetty 的架构从前面的分析可知,它的所有组件都是基于 Handler 来实现,当然它也支持 JMX.但是主要的功能扩展都可以用 Handler 来实现.可以说 Jetty 是面向 Handler ...

  7. Java使用apache的开源数据处理框架commons-dbutils完成增删改

    主要使用这个开源jar包的QueryRunner类的update方法来完成数据库的增删改操作. package demo; import java.sql.Connection; import jav ...

  8. LeetCode OJ-- Surrounded Regions **@

    https://oj.leetcode.com/problems/surrounded-regions/ 棋盘类的题目.找出所有没有被 X 包围的 O 使用深搜,但是太深了,run time erro ...

  9. AC日记——仙岛求药 openjude 2727

    仙岛求药 思路: bfs: 来,上代码: #include <cstdio> #include <cstring> #include <iostream> #inc ...

  10. svn安装配置使用小总结

    1svn:版本控制系统服务端与客户端协作服务端:subversion客户端:eclipse_svn_site-1.10.5.zip插件1安装问题:    1subversion版本过高    会出现版 ...