我使用的是 Ubuntu 22.04。默认内核是 5.15.0-56。但是,由于我的笔记本电脑键盘有问题(错误 ID#216158,我应该修补内核。 以下是修补内核的步骤。
uname -r (to check current kernel version: 5.15.0-56)
apt source linux-image-unsigned-5.15.0-56
cd ./linux-5.15.0
patch -p1 < ../path/to/patchfile
make oldconfig
make -j 16
make modules_install
make install
该错误已修复,但我不知道为什么我的内核更改为 5.15.64。虽然我使用 5.15.0 作为源文件并使用旧的内核配置。
当我尝试安装 VMWare Workstation 时,出现了以下窗口:
这是因为未找到目录 /usr/src/linux-headers-5.15.64。
我的问题是:
- 为什么我使用 5.15.0 版本作为源内核文件,内核版本却从 5.15.0-56 更改为 5.15.64?
- 如何生成目录 /usr/src/linux-headers-5.15.64 ?
这些是安装在我的机器上的内核。
$ dpkg --list | grep "linux-image" | grep "^ii"
ii linux-image-5.15.0-25-generic 5.15.0-25.25 amd64 Signed kernel image generic
ii linux-image-5.15.0-56-generic 5.15.0-56.62 amd64 Signed kernel image generic
ii linux-image-generic-hwe-22.04 5.15.0.56.54 amd64 Generic Linux kernel image
解决了问题
在@Terrance 给我一些解释之后,我尝试使用我之前提到的类似步骤重建内核。然而不同之处在于内核的源文件。我使用以下命令。
apt source linux-source-5.15.0
但是,/usr/src 上没有内核头,但是我可以正确运行 VMWare Workstation 17。
答案1
我能够用不同的方法解决这个问题。
sudo apt-get 更新 && sudo apt-get 升级 -y
sudo apt-get 安装 gcc build-essentials -y
下载 VMware Workstation 17 https://www.vmware.com/go/getworkstation-linux
cd 下载 && chmod u+x VMware* && sudo ./VMware*
在终端中运行这些命令
openssl req -new -x509 -newkey rsa:2048 -keyout VMWARE17.priv -outform DER -out VMWARE17.der -nodes -days 36500 -subj "/CN=VMWARE/"
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE17.priv ./VMWARE17.der $(modinfo -n vmmon)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE17.priv ./VMWARE17.der $(modinfo -n vmnet)
tail $(modinfo -n vmmon) | grep "附加模块签名"
sudo mokutil——导入 VMWARE17.der
完成上述所有命令后,您需要重启计算机,然后注册 MOK(您的密钥),然后再次重启。当您重新登录时,一切就绪!
mokutil --test-key VMWARE17.der