在ubuntu 24.04 上安装vmware workstation 17.5.1

embedded/2024/9/23 9:26:47/

ubuntu安装在新组装的i9 14900机器上,用来学习笨叔的ARM64体系结构编程,也熟悉Linux的用法。但有时候写文档总是不方便,还是需要window来用。因此想在ubuntu 24.04上安装Linux版本的vmware worksation 17.5.1以虚拟机的方式安装windows 11。其结果是在启动vmware时报告"Cannot open /dev/mvmon: No such file or directory. Please make sure that the kernel module 'vmmon' is loaded"。也就是提示vmmon.ko 没有安装。由于ubuntu 24.04刚出没多久,vmware公司并没有发布可以支持24.04的内核的vmware 版本,但挺不住有牛人啊,他们修改了vmmon和vmnet的驱动源代码以支持24.04。本以为这就结束了,但是本机bios有secure boot啊,内核模块需要签名,但是怎么签都不成功,知道试了不同的参数(noenc)才算成功,弄到了凌晨2:30啊,这里记录下来以方便后来者。

安装编译内核模块依赖

sudo apt install net-tools libncurses-dev libssl-dev build-essential openssl openssl gcc-aarch64-linux-gnu gdb-multiarch git bison flex bc vim universal-ctags cscope cmake python3-dev python3-venv mokutil

下载vmmon和vmnet内核模块源代码

git clone https://github.com/mkubecek/vmware-host-modules.git
cd vmware-host-modules
git checkout -b workstation-17.5.1 remotes/origin/workstation-17.5.1make
sudo make install

验证vmmon.ko和vmnet.ko已经安装

$ modinfo -n vmnet
/lib/modules/6.8.0-31-generic/misc/vmnet.ko
modinfo -n vmmon
/lib/modules/6.8.0-31-generic/misc/vmmon.ko

签名vmmon.ko和vmnet.ko

生成密钥对

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -noenc -days 36500 -subj "/CN=VMware/"

其中noenc非常关键,没有这个,运行下面的sign-file时总是报错。

签名

如果modinfo vmmon不能显示vmmon.ko则下面的命令直接使用绝对路径,替换掉$(modinfo -n vmmon),绝对路径为/lib/modules/6.8.0-31-generic/misc/vmmon.ko 和/lib/modules/6.8.0-31-generic/misc/vmnet.ko

sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vmmon)sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vmnet)

将公钥导入系统的 MOK 列表

下面的命令会提示输入密码,请记住这个密码,系统重启时需要输入这个密码。

sudo mokutil --import MOK.der

重启系统,用于导入MOK

bios会提示是否Enroll MOK,选择它

然后输入密码

再次启动vmware,vmware启动成功!


http://www.ppmy.cn/embedded/30351.html

相关文章

wpf 树形结构

Simplifying the WPF TreeView by Using the ViewModel Pattern - CodeProject 【原创】WPF TreeView带连接线样式的优化(WinFrom风格) - iDream2016 - 博客园 (cnblogs.com)

深入剖析Tomcat(五) 剖析Servlet容器并实现一个简易Context与Wrapper容器

上一章介绍了Tomcat的默认连接器,后续程序都会使用默认连接器。前面有讲过Catalina容器的两大块内容就是连接器与Servlet容器。不同于第二章的自定义丐版Servlet容器,这一章就来探讨下Catalina中的真正的Servlet容器究竟长啥样。 四种容器 在Catalina中…

鸿蒙OpenHarmony【轻量系统 编写“Hello World”程序】 (基于Hi3861开发板)

编写“Hello World”程序 下方将通过修改源码的方式展示如何编写简单程序,输出“Hello world”。请在下载的源码目录中进行下述操作。 确定目录结构。 开发者编写业务时,务必先在./applications/sample/wifi-iot/app路径下新建一个目录(或一…

标贝语音识别技术在金融领域中的应用实例

随着语音识别技术与文本挖掘、自然语言处理等技术的不断融合,智能语音交互技术在金融领域中爆发了出巨大的应用潜力。标贝科技根据自身与金融领域合作的经验为大家梳理出以下几点智能语音识别技术在金融领域中的应用实例。 一、智能柜台服务 语音识别的主要功能就…

Redis 实战1

SDS Redis 只会使用 C 字符串作为字面量, 在大多数情况下, Redis 使用 SDS (Simple Dynamic String,简单动态字符串)作为字符串表示。 比起 C 字符串, SDS 具有以下优点: 常数复杂度获取字符串…

C++ 智能指针

智能指针是针对内存泄漏的问题进行处理。 场景1 我们写一个模拟除法函数&#xff0c;调用一下。该函数会对除数为0的情况抛异常&#xff1a; #include<iostream> using namespace std;double chu(int a, int b) {if (b 0){throw invalid_argument("除数不能为0&a…

极语言在全屏游戏中,按住D同时按X键,松开X键,再松开D键的程序

程序段 模拟按键(布尔 按住D, 布尔 按住X); 定义按键常量整数 VK_D 0x44整数 VK_X 0x58; 检测D和X键是否同时按住如果(按住D 和 按住X){; 模拟松开X键按键消息(VK_X, 0, 0, "keyup"); 模拟松开D键&#xff08;稍后一些执行&#xff0c;以确保X键先松开&#xff09;…

【Jenkins】持续集成与交付 (八):Jenkins凭证管理(实现使用 SSH 、HTTP克隆Gitlab代码)

🟣【Jenkins】持续集成与交付 (八):Jenkins凭证管理(实现使用 SSH 、HTTP克隆Gitlab代码) 1、安装Credentials Binding、git插件2、凭证类型及用途3、(用户名和密码类型)凭证的添加和使用3.1 用户密码类型3.2 测试凭证是否可用3.3 开始构建项目3.3 查看结果(进入Jenk…