【Linux系列】Fedora40安装VMware Workstation Pro报错

在这里插入图片描述

问题描述

由于Fedora 40使用的Linux内核是6.9,导致安装VMware Workstation Pro 时,安装依赖无法成功,具体报错如下

..................CC [M]  /tmp/modconfig-a8Fcf5/vmnet-only/smac.oCC [M]  /tmp/modconfig-a8Fcf5/vmnet-only/vnetEvent.oCC [M]  /tmp/modconfig-a8Fcf5/vmnet-only/vnetUserListener.o
In file included from ./include/linux/spinlock.h:305,from ./include/linux/sched.h:2138,from /tmp/modconfig-a8Fcf5/vmnet-only/bridge.c:25:
/tmp/modconfig-a8Fcf5/vmnet-only/bridge.c: In function ‘VNetBridgeReceiveFromVNet’:
/tmp/modconfig-a8Fcf5/vmnet-only/vmnetInt.h:44:39: error: ‘dev_base_lock’ undeclared (first use in this function); did you mean ‘device_lock’?44 | #define dev_lock_list()    read_lock(&dev_base_lock)|                                       ^~~~~~~~~~~~~
./include/linux/rwlock.h:56:48: note: in definition of macro ‘read_lock’56 | #define read_lock(lock)         _raw_read_lock(lock)|                                                ^~~~
/tmp/modconfig-a8Fcf5/vmnet-only/bridge.c:587:4: note: in expansion of macro ‘dev_lock_list’587 |    dev_lock_list();|    ^~~~~~~~~~~~~
/tmp/modconfig-a8Fcf5/vmnet-only/vmnetInt.h:44:39: note: each undeclared identifier is reported only once for each function it appears in44 | #define dev_lock_list()    read_lock(&dev_base_lock)|                                       ^~~~~~~~~~~~~
./include/linux/rwlock.h:56:48: note: in definition of macro ‘read_lock’56 | #define read_lock(lock)         _raw_read_lock(lock)|                                                ^~~~
/tmp/modconfig-a8Fcf5/vmnet-only/bridge.c:587:4: note: in expansion of macro ‘dev_lock_list’587 |    dev_lock_list();|    ^~~~~~~~~~~~~
/tmp/modconfig-a8Fcf5/vmnet-only/bridge.c: In function ‘VNetBridgeUp’:
/tmp/modconfig-a8Fcf5/vmnet-only/vmnetInt.h:44:39: error: ‘dev_base_lock’ undeclared (first use in this function); did you mean ‘device_lock’?44 | #define dev_lock_list()    read_lock(&dev_base_lock)|                                       ^~~~~~~~~~~~~
./include/linux/rwlock.h:56:48: note: in definition of macro ‘read_lock’56 | #define read_lock(lock)         _raw_read_lock(lock)|                                                ^~~~
/tmp/modconfig-a8Fcf5/vmnet-only/bridge.c:902:4: note: in expansion of macro ‘dev_lock_list’902 |    dev_lock_list();|    ^~~~~~~~~~~~~
make[3]: *** [scripts/Makefile.build:244: /tmp/modconfig-a8Fcf5/vmnet-only/bridge.o] Error 1
make[2]: *** [/usr/src/linux-6.9-rc1/Makefile:1919: /tmp/modconfig-a8Fcf5/vmnet-only] Error 2
make[1]: *** [Makefile:240: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-6.9-rc1'
make: *** [Makefile:117: vmnet.ko] Error 2
make: Leaving directory '/tmp/modconfig-a8Fcf5/vmnet-only'
Unable to install all modules.  See log for details.

在我探索了好久,才发现解决这个问题需要两步。(Github讨论的,开源就是坑)


解决方案:

1. 下载依赖源码

其中的17.0.0是你VMware的版本号,如果你也不清楚,建议去github看看,地址是https://github.com/mkubecek

  wget https://github.com/mkubecek/vmware-host-modules/archive/workstation-17.0.0.tar.gztar -xzf workstation-17.0.0.tar.gz

现在如果你编译安装,肯定是会报错的,如果报错跟我一样,那么跟着下一步走。
编译安装是

  cd vmware-host-modules-workstation-17.0.0makesudo make install

2. 修改源代码

修改/vmnet-only/vmnetInt.h

# 找到
@@ -41,8 +41,13 @@compat_skb_set_network_header(skb, sizeof (struct ethhdr)),  \dev_queue_xmit(skb)                                   \)
-#define dev_lock_list()    read_lock(&dev_base_lock)
-#define dev_unlock_list()  read_unlock(&dev_base_lock)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 9, 0)
+#   define dev_lock_list()    rcu_read_lock()
+#   define dev_unlock_list()  rcu_read_unlock()
+#else
+#   define dev_lock_list()    read_lock(&dev_base_lock)
+#   define dev_unlock_list()  read_unlock(&dev_base_lock)
+#endifextern struct proto vmnet_proto;

- 意思是删除
+ 意思是增加

3. 编译安装依赖

此时再次编译安装

  cd vmware-host-modules-workstation-17.0.0makesudo make install

就可以成功打开软件了。
在这里插入图片描述
成功进入软件。

自动VMware被收购了,个人用户免费以后就不那么容易安装了,真是坑。
如果你安装失败了,可以看看大佬们的讨论贴
https://github.com/mkubecek/vmware-host-modules/issues/239

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/36734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

液体粒子计数器的原理及常见型号选择 lighthouse代理商北京中邦兴业

​液体颗粒计数用于测量液体样品中颗粒的大小和分布。通过用激光二极管照射液体样品并检测散射光来测量颗粒分布和尺寸。散射光的性质与粒子大小的大小有关。液体颗粒计数器可用于批量取样或在线(连续监测)应用,如水处理厂,或用于…

ADC位数、增益调制与参考电压

位数:12bit、10bit、8bit 一般就是对应的ADC值分别为:4095、1023、255,也就选用对应位数时ADC的最大值。 增益的作用 增益设置用于放大或缩小输入信号,使其适配到ADC的输入范围。增益设置可以通过配置SAADC的通道配置寄存器来实…

Vscode lanuch.json

Intro 使用launch.json 能够方便的运行需要传很多参数的代码文件 如下: import math import argparse # 1、导入argpase包def parse_args():parse argparse.ArgumentParser(descriptionCalculate cylinder volume) # 2、创建参数对象parse.add_argument(--rad…

怎么处理整合了shiro的应用的RPC接口鉴权问题

这篇文章分享一下:当一个服务提供者整合了shiro安全框架来实现权限访问控制时,服务消费者通过feign请求服务提供者的接口时的鉴权不通过问题。 问题描述 博主有一个项目pms(权限管理系统),使用了shiro框架来实现鉴权功…

【免费可视化工具】智慧港口全景监测大屏引领行业变革

在传统的港口运营中,人们往往要面对繁琐的数据、复杂的流程和不确定的风险。但随着科技的发展,智慧港口全景监测大屏,集数据整合、实时监控、智能分析于一体,为港口运营提供了全新的解决方案。 今天要说的是山海鲸可视化搭建的智慧…

Android 通知组

一. 通知组简介 从 Android 7.0(API 级别 24)开始,您可以在一个组中显示相关通知。如下所示: 图 1. 收起(顶部)和展开(底部)的通知组。 注意 :如果应用发出 4 条或更多条通知且未…

Django(根据Models中模型类反向生成数据库表)—— python篇

一、数据库的配置 1、 django默认支持 sqlite,mysql, oracle,postgresql数据库。 sqlite:django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 , 引擎名称:django.db.backends.sqlite3 mysql:引擎名称&#xff…

解决Transformer根本缺陷,所有大模型都能获得巨大改进

即使最强大的 LLM 也难以通过 token 索引来关注句子等概念,现在有办法了。 最近两天,马斯克和 LeCun 的口水战妥妥成为大家的看点。这两位 AI 圈的名人你来我往,在推特(现为 X)上相互拆对方台。 LeCun 在宣传自家最新论…

leetcode 动态规划(基础版)单词拆分

题目: 题解: 一种可行的dp做法是基于完全背包问题,将s看成是一个背包,wordDict看作是物品,然后往s中放入物品判断最终是否可以变为给定的s即可。这道题和上一题都用到了在dp如何枚举连续子串和状态表示:枚…

Golang 百题(实战快速掌握语法)_2

返回集合中满足指定条件的最后一个元素 本实验将实现判断给定集合中的元素是否符合,并返回符合的最后一个元素。 知识点 forfmt.Error 适合人群 本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。 许可证 内容…

潮玩手办盲盒前端项目模版的技术探索与应用案例

一、引言 在数字化时代,随着消费者对个性化和艺术化产品的需求日益增长,潮玩手办和盲盒市场逐渐崭露头角。为了满足这一市场需求,前端技术团队需要构建一个功能丰富、用户友好的在线平台。本文旨在探讨潮玩手办盲盒前端项目模版的技术实现&a…

FuTalk设计周刊-Vol.025

🔥🔥AI漫谈 热点捕手🔥🔥 1、耗时半年,实地调研!泣血2万字,破除你的人工智能焦虑《2023最全AI商业落地调研报告》 链接https://www.bilibili.com/video/BV1YB4y1f7GE?share_sourcecopy_web &…

Vue3路由守卫的理解

官网:导航守卫 | Vue Router 目录 1.路由类型 1.1导航守卫 1.2路由独享 1.3组件内守卫 2.路由元信息 1.路由类型 1.1导航守卫 全局 :所有路由都会触发 router.beforeEach((to,from,next)>{}) router.afterEach((to,form,next)>{}) 1.2路由独享 路由表中的组件 be…

计算机公共课面试常见问题:线性代数篇

目录 1. 特征向量和特征值代表什么含义? 2. 矩阵的秩是什么?满秩代表什么?不满秩呢? 3. 奇异值分解是什么? …

2024上海初中生古诗文大会倒计时4个多月:真题示例和独家解析

现在距离2024年初中生古诗文大会还有4个多月时间,我们继续来看10道选择题真题和详细解析,以下题目截取自我独家制作的在线真题集,都是来自于历届真题,去重、合并后,每道题都有参考答案和解析。 为帮助孩子自测和练习&…

改变AI历史的Transformer是如何帮助LLM大模型工作的?看图解密Transformer原理,看不懂算我输!

在过去的几年里,大型语言模型(LLM)的出现,为长达数十年的智能机器构建的探索中带来了巨大的飞跃。 这项基于试图模拟人类大脑的研究技术,也在近几年催生了一个新领域——Generative AI 生成式人工智能,简单理解就是可以 通过模仿…

llama-3 本地化部署实验

国产大模型的API 有限,编写langchain 应用问题很多。使用openai 总是遇到网络问题,尝试使用ollama在本地运行llama-3。结果异常简单。效果不错。llama-3 的推理能力感觉比openai 的GPT-3.5 好。 Ollama 下载 官网:https://ollama.com/downl…

武汉凯迪正大—漆包圆线软化击穿试验仪 漆包线检测仪器

产品功能 武汉凯迪正大电气有限公司生产KDZD-JC软化击穿试验仪用于检测3.00mm及以下漆包线在热状态下漆膜软化后的绝缘性能,根据设定的预热温度、试验时间、仪器自动完成对试样的预加热、加负荷、加试验电压,达到试验时间或试样被击穿时即卸负荷&#x…

基于ARM的通用的Qt移植思路

文章目录 实验环境介绍一、确认Qt版本二、确认交叉编译工具链三、配置Qt3.1、修改qmake.conf3.2、创建autoConfig.sh配置文件 四、编译安装Qt五、移植Qt安装目录六、配置Qt creator6.1、配置qmake6.2、配置GCC编译器6.3、配置G编译器6.4、配置编译器套件6.5、创建应用 七、总结…

【Linux杂货铺】Linux学习之路:期末总结篇1

第一章 什么是Linux? Linux 是 UNIX 操作系统的一个克隆;它由林纳斯 本纳第克特 托瓦兹从零开始编写,并在网络上众多松散的黑客团队的帮助下得以发展和完善;它遵从可移植操作系统接口(POSIX)标准和单一 UNIX 规范…