我最近更新到了 Ubuntu 17.04。不幸的是,我无法运行 VMware Workstation,因为无法安装内核模块。
这是日志文件:
2017-04-16T12:59:06.065+01:00| vthread-4| I125:VMware Workstation 日志 pid=6683 版本=12.5.2 构建=build-4638234 选项=Release 2017-04-16T12:59:06.065+01:00| vthread-4| I125:该进程是 64 位。 2017-04-16T12:59:06.065+01:00| vthread-4| I125:主机代码页=UTF-8 编码=UTF-8 2017-04-16T12:59:06.065 + 01:00 | vthread-4 | I125:主机是 Linux 4.10.0-19-generic Ubuntu 17.04 2017-04-16T12:59:06.064+01:00| vthread-4| I125:DictionaryLoad:无法打开文件“/usr/lib/vmware/settings”:没有此文件或目录。 2017-04-16T12:59:06.064+01:00| vthread-4| I125:在 /usr/lib/vmware/settings 中未找到 PREF 可选首选项文件。使用默认值。 2017-04-16T12:59:06.064+01:00| vthread-4| I125:DictionaryLoad:无法打开文件“/root/.vmware/config”:没有此文件或目录。 2017-04-16T12:59:06.064+01:00| vthread-4| I125:未在 /root/.vmware/config 中找到 PREF 可选首选项文件。使用默认值。 2017-04-16T12:59:06.064+01:00| vthread-4| I125:PREF 无法检查首选项文件的权限。 2017-04-16T12:59:06.064+01:00| vthread-4| I125:DictionaryLoad:无法打开文件“/root/.vmware/preferences”:没有此文件或目录。 2017-04-16T12:59:06.064+01:00| vthread-4| I125:PREF 无法加载用户偏好设置。 2017-04-16T12:59:06.107+01:00| vthread-4| W115:记录到 /tmp/vmware-root/vmware-6683.log 2017-04-16T12:59:06.113+01:00| vthread-4| I125:使用正在运行的内核获取信息。 2017-04-16T12:59:06.113+01:00| vthread-4| I125:创建了新的pathsHash。 2017-04-16T12:59:06.113 + 01:00 | vthread-4 | I125:将 4.10.0-19-generic 的标头路径设置为“/lib/modules/4.10.0-19-generic/build/include”。 2017-04-16T12:59:06.113+01:00| vthread-4| I125:验证内核版本“4.10.0-19-generic”的路径“/lib/modules/4.10.0-19-generic/build/include”。 2017-04-16T12:59:06.113+01:00| vthread-4| I125:无法找到 /lib/modules/4.10.0-19-generic/build/include/linux/version.h 2017-04-16T12:59:06.113+01:00| vthread-4| I125:未找到 /lib/modules/4.10.0-19-generic/build/include/linux/version.h,而是寻找 generated/uapi/linux/version.h。 2017-04-16T12:59:06.113+01:00| vthread-4| I125:使用 /usr/bin/gcc 进行预处理检查 2017-04-16T12:59:06.119 + 01:00 | vthread-4 | I125:预处理 UTS_RELEASE,获得值“4.10.0-19-generic”。 2017-04-16T12:59:06.119+01:00| vthread-4| I125:内核“4.10.0-19-generic”的头文件路径“/lib/modules/4.10.0-19-generic/build/include”有效。哇哦! 2017-04-16T12:59:06.247+01:00| vthread-4| I125:找到符号版本文件 /lib/modules/4.10.0-19-generic/build/Module.symvers 2017-04-16T12:59:06.248+01:00| vthread-4| I125:从 /lib/modules/4.10.0-19-generic/build/Module.symvers 读取符号版本。 2017-04-16T12:59:06.265 + 01:00 | vthread-4 | I125:读取 21363 个符号版本 2017-04-16T12:59:06.265+01:00| vthread-4| I125:读取 vmmon 模块的信息。 2017-04-16T12:59:06.265+01:00| vthread-4| I125:读取 vmnet 模块的信息。 2017-04-16T12:59:06.265+01:00| vthread-4| I125:读取 vmblock 模块的信息。 2017-04-16T12:59:06.265+01:00| vthread-4| I125:读取 vmci 模块的信息。 2017-04-16T12:59:06.265+01:00| vthread-4| I125:读取 vsock 模块的信息。 2017-04-16T12:59:06.265+01:00| vthread-4| I125:设置 vsock 以依赖于 vmci。 2017-04-16T12:59:06.265+01:00| vthread-4| I125:在“vmmon”上调用 modinfo。 2017-04-16T12:59:06.267+01:00| vthread-4| I125:“/sbin/modinfo”以状态 256 退出。 2017-04-16T12:59:06.267+01:00| vthread-4| I125:在“vmnet”上调用 modinfo。 2017-04-16T12:59:06.268+01:00| vthread-4| I125:“/sbin/modinfo”以状态 256 退出。 2017-04-16T12:59:06.268+01:00| vthread-4| I125:在“vmblock”上调用 modinfo。 2017-04-16T12:59:06.269+01:00| vthread-4| I125:“/sbin/modinfo”以状态 256 退出。 2017-04-16T12:59:06.269+01:00| vthread-4| I125:在“vmci”上调用 modinfo。 2017-04-16T12:59:06.270+01:00| vthread-4| I125:“/sbin/modinfo”以状态 256 退出。 2017-04-16T12:59:06.270+01:00| vthread-4| I125:在“vsock”上调用 modinfo。 2017-04-16T12:59:06.271+01:00| vthread-4| I125:“/sbin/modinfo”以状态 0 退出。 2017-04-16T12:59:06.286+01:00| vthread-4| I125:待安装:vmmon 状态:0 2017-04-16T12:59:06.286+01:00| vthread-4| I125:待安装:vmnet 状态:0 2017-04-16T12:59:06.308+01:00| vthread-4| I125:使用正在运行的内核获取信息。 2017-04-16T12:59:06.308 + 01:00 | vthread-4 | I125:将 4.10.0-19-generic 的标头路径设置为“/lib/modules/4.10.0-19-generic/build/include”。 2017-04-16T12:59:06.308+01:00| vthread-4| I125:验证内核版本“4.10.0-19-generic”的路径“/lib/modules/4.10.0-19-generic/build/include”。 2017-04-16T12:59:06.308 + 01:00 | vthread-4 | I125:无法找到/lib/modules/4.10.0-19-generic/build/include/linux/version.h 2017-04-16T12:59:06.308+01:00| vthread-4| I125:未找到 /lib/modules/4.10.0-19-generic/build/include/linux/version.h,而是寻找 generated/uapi/linux/version.h。 2017-04-16T12:59:06.308+01:00| vthread-4| I125:使用 /usr/bin/gcc 进行预处理检查 2017-04-16T12:59:06.313 + 01:00 | vthread-4 | I125:预处理 UTS_RELEASE,获得值“4.10.0-19-generic”。 2017-04-16T12:59:06.313+01:00| vthread-4| I125:内核“4.10.0-19-generic”的头文件路径“/lib/modules/4.10.0-19-generic/build/include”有效。哇哦! 2017-04-16T12:59:06.434 + 01:00 | vthread-4 | I125:找到符号版本文件/lib/modules/4.10.0-19-generic/build/Module.symvers 2017-04-16T12:59:06.434+01:00| vthread-4| I125:从 /lib/modules/4.10.0-19-generic/build/Module.symvers 读取符号版本。 2017-04-16T12:59:06.451 + 01:00 | vthread-4 | I125:读取 21363 个符号版本 2017-04-16T12:59:06.451 + 01:00 | vthread-4 | I125:从 FileEntry 检索到内核头路径:/lib/modules/4.10.0-19-generic/build/include 2017-04-16T12:59:06.451 + 01:00 | vthread-4 | I125:将内核头路径更新为/lib/modules/4.10.0-19-generic/build/include 2017-04-16T12:59:06.451+01:00| vthread-4| I125:验证内核版本“4.10.0-19-generic”的路径“/lib/modules/4.10.0-19-generic/build/include”。 2017-04-16T12:59:06.451 + 01:00 | vthread-4 | I125:无法找到/lib/modules/4.10.0-19-generic/build/include/linux/version.h 2017-04-16T12:59:06.451+01:00| vthread-4| I125:未找到 /lib/modules/4.10.0-19-generic/build/include/linux/version.h,而是寻找 generated/uapi/linux/version.h。 2017-04-16T12:59:06.451+01:00| vthread-4| I125:使用 /usr/bin/gcc 进行预处理检查 2017-04-16T12:59:06.456+01:00| vthread-4| I125:预处理 UTS_RELEASE,获得值“4.10.0-19-generic”。 2017-04-16T12:59:06.456+01:00| vthread-4| I125:内核“4.10.0-19-generic”的头文件路径“/lib/modules/4.10.0-19-generic/build/include”有效。哇哦! 2017-04-16T12:59:06.457+01:00| vthread-4| I125:在“/usr/bin/gcc”找到编译器 2017-04-16T12:59:06.459+01:00| vthread-4| I125:获得 gcc 版本“6.3.0”。 2017-04-16T12:59:06.459+01:00| vthread-4| I125:GCC 版本与内核 GCC 小版本完美匹配。 2017-04-16T12:59:06.459+01:00| vthread-4| I125:使用用户提供的编译器“/usr/bin/gcc”。 2017-04-16T12:59:06.461+01:00| vthread-4| I125:获得 gcc 版本“6.3.0”。 2017-04-16T12:59:06.461+01:00| vthread-4| I125:GCC 版本与内核 GCC 小版本完美匹配。 2017-04-16T12:59:06.462+01:00| vthread-4| I125:尝试为内核“4.10.0-19-generic”找到合适的 PBM 集。 2017-04-16T12:59:06.462+01:00| vthread-4| I125:未找到与内核“4.10.0-19-generic”匹配的 PBM 集。 2017-04-16T12:59:06.462+01:00| vthread-4| I125:GCC 版本与内核 GCC 小版本完美匹配。 2017-04-16T12:59:06.462+01:00| vthread-4| I125:验证内核版本“4.10.0-19-generic”的路径“/lib/modules/4.10.0-19-generic/build/include”。 2017-04-16T12:59:06.462+01:00| vthread-4| I125:无法找到 /lib/modules/4.10.0-19-generic/build/include/linux/version.h 2017-04-16T12:59:06.462+01:00| vthread-4| I125:未找到 /lib/modules/4.10.0-19-generic/build/include/linux/version.h,而是寻找 generated/uapi/linux/version.h。 2017-04-16T12:59:06.462+01:00| vthread-4| I125:使用 /usr/bin/gcc 进行预处理检查 2017-04-16T12:59:06.468+01:00| vthread-4| I125:预处理 UTS_RELEASE,获得值“4.10.0-19-generic”。 2017-04-16T12:59:06.468+01:00| vthread-4| I125:内核“4.10.0-19-generic”的头文件路径“/lib/modules/4.10.0-19-generic/build/include”有效。哇哦! 2017-04-16T12:59:06.469+01:00| vthread-4| I125:GCC 版本与内核 GCC 小版本完美匹配。 2017-04-16T12:59:06.469+01:00| vthread-4| I125:验证内核版本“4.10.0-19-generic”的路径“/lib/modules/4.10.0-19-generic/build/include”。 2017-04-16T12:59:06.469+01:00| vthread-4| I125:无法找到 /lib/modules/4.10.0-19-generic/build/include/linux/version.h 2017-04-16T12:59:06.469+01:00| vthread-4| I125:未找到 /lib/modules/4.10.0-19-generic/build/include/linux/version.h,而是寻找 generated/uapi/linux/version.h。 2017-04-16T12:59:06.469+01:00| vthread-4| I125:使用 /usr/bin/gcc 进行预处理检查 2017-04-16T12:59:06.475 + 01:00 | vthread-4 | I125:预处理 UTS_RELEASE,获得值“4.10.0-19-generic”。 2017-04-16T12:59:06.475+01:00| vthread-4| I125:内核“4.10.0-19-generic”的头文件路径“/lib/modules/4.10.0-19-generic/build/include”有效。哇哦! 2017-04-16T12:59:06.475+01:00| vthread-4| I125:使用临时目录“/tmp”。 2017-04-16T12:59:06.476+01:00| vthread-4| I125:使用正在运行的内核获取信息。 2017-04-16T12:59:06.476+01:00| vthread-4| I125:将 4.10.0-19-generic 的标头路径设置为“/lib/modules/4.10.0-19-generic/build/include”。 2017-04-16T12:59:06.476+01:00| vthread-4| I125:验证内核版本“4.10.0-19-generic”的路径“/lib/modules/4.10.0-19-generic/build/include”。 2017-04-16T12:59:06.476+01:00| vthread-4| I125:无法找到 /lib/modules/4.10.0-19-generic/build/include/linux/version.h 2017-04-16T12:59:06.476+01:00| vthread-4| I125:未找到 /lib/modules/4.10.0-19-generic/build/include/linux/version.h,而是寻找 generated/uapi/linux/version.h。 2017-04-16T12:59:06.476+01:00| vthread-4| I125:使用 /usr/bin/gcc 进行预处理检查 2017-04-16T12:59:06.481 + 01:00 | vthread-4 | I125:预处理 UTS_RELEASE,获得值“4.10.0-19-generic”。 2017-04-16T12:59:06.481+01:00| vthread-4| I125:内核“4.10.0-19-generic”的头文件路径“/lib/modules/4.10.0-19-generic/build/include”有效。哇哦! 2017-04-16T12:59:06.608 + 01:00 | vthread-4 | I125:找到符号版本文件/lib/modules/4.10.0-19-generic/build/Module.symvers 2017-04-16T12:59:06.608+01:00| vthread-4| I125:从 /lib/modules/4.10.0-19-generic/build/Module.symvers 读取符号版本。 2017-04-16T12:59:06.626 + 01:00 | vthread-4 | I125:读取 21363 个符号版本 2017-04-16T12:59:06.626+01:00| vthread-4| I125:在“vmmon”上调用 modinfo。 2017-04-16T12:59:06.628+01:00| vthread-4| I125:“/sbin/modinfo”以状态 256 退出。 2017-04-16T12:59:06.628+01:00| vthread-4| I125:在“vmnet”上调用 modinfo。 2017-04-16T12:59:06.630+01:00| vthread-4| I125:“/sbin/modinfo”以状态 256 退出。 2017-04-16T12:59:07.100+01:00| vthread-4| I125:将 vmmon 的目标路径设置为“/lib/modules/4.10.0-19-generic/misc/vmmon.ko”。 2017-04-16T12:59:07.101+01:00| vthread-4| I125:从“/usr/lib/vmware/modules/source/vmmon.tar”中提取 vmmon 源。 2017-04-16T12:59:07.106+01:00| vthread-4| I125:成功提取 vmmon 源。 2017-04-16T12:59:07.106 + 01:00 | vthread-4 | I125:使用命令“/usr/bin/make -j4 -C /tmp/modconfig-JzkDhJ/vmmon-only auto-build HEADER_DIR=/lib/modules/4.10.0-19-generic/build/include CC=/usr/bin/gcc IS_GCC_3=no”构建模块 2017-04-16T12:59:08.721+01:00| vthread-4| W115:无法构建 vmmon。无法执行构建命令。 2017-04-16T12:59:08.723+01:00| vthread-4| I125:将 vmnet 的目标路径设置为“/lib/modules/4.10.0-19-generic/misc/vmnet.ko”。 2017-04-16T12:59:08.723+01:00| vthread-4| I125:从“/usr/lib/vmware/modules/source/vmnet.tar”中提取 vmnet 源。 2017-04-16T12:59:08.729+01:00| vthread-4| I125:成功提取 vmnet 源。 2017-04-16T12:59:08.729+01:00| vthread-4| I125:使用命令“/usr/bin/make -j4 -C /tmp/modconfig-JzkDhJ/vmnet-only auto-build HEADER_DIR=/lib/modules/4.10.0-19-generic/build/include CC=/usr/bin/gcc IS_GCC_3=no”构建模块 2017-04-16T12:59:10.142+01:00| vthread-4| W115:无法构建 vmnet。无法执行构建命令。
答案1
我遇到了完全相同的问题。对我有用的解决方案在这篇文章中:
如何在 Linux 4.10 内核上安装 VMWare Workstation 12
正常安装 VMware
在我们的例子中,我们使用一个捆绑文件安装了 VMware。要运行该捆绑包,您必须
chmod u+x
在其上运行,然后运行:sudo ./VMware-Workstation-Full-12.5.bundle #(example filename)
安装 GCC 和 build-essentials
sudo apt install gcc build-essential
修补 VMware
sudo tar -xf /usr/lib/vmware/modules/source/vmmon.tar sudo nano vmmon-only/linux/hostif.c
在第 1162 行左右,更改
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL); #else retval = get_user_pages(current, current->mm, (unsigned long)uvAddr, numPages, 0, 0, ppages, NULL); #endif
到
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) retval = get_user_pages((unsigned long)uvAddr, numPages, 0, ppages, NULL); #else #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL); #else retval = get_user_pages(current, current->mm, (unsigned long)uvAddr, numPages, 0, 0, ppages, NULL); #endif #endif
保存文件并退出,然后:
sudo tar -cf /usr/lib/vmware/modules/source/vmmon.tar vmmon-only/ sudo tar -xf /usr/lib/vmware/modules/source/vmnet.tar sudo nano vmnet-only/userif.c
第 114 行以下,更改
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) retval = get_user_pages(addr, 1, 1, 0, &page, NULL); #else retval = get_user_pages(current, current->mm, addr, 1, 1, 0, &page, NULL); #endif
到
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) retval = get_user_pages(addr, 1, 0, &page, NULL); #else #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) retval = get_user_pages(addr, 1, 1, 0, &page, NULL); #else retval = get_user_pages(current, current->mm, addr, 1, 1, 0, &page, NULL); #endif #endif
保存文件,退出,然后重新 tar 该文件
sudo tar -cf /usr/lib/vmware/modules/source/vmnet.tar vmnet-only/
再次运行 VMware
现在只需正常启动 VMware,它就应该正确安装 vmon 和 vmnet。
答案2
我正在运行 Budgie 17.04,VMware 运行良好。我只安装了构建工具:
sudo apt install gcc make
一旦启动 VMware,它将成功编译所需的模块。
我使用的包是VMware-Player-12.5.5-5234757.x86_64.bundle。