如何为自定义内核安装内核头?

如何为自定义内核安装内核头?

我使用的是 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 时,出现了以下窗口:

安装 VMware Workstation

这是因为未找到目录 /usr/src/linux-headers-5.15.64。

我的问题是:

  1. 为什么我使用 5.15.0 版本作为源内核文件,内核版本却从 5.15.0-56 更改为 5.15.64?
  2. 如何生成目录 /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

我能够用不同的方法解决这个问题。

https://youtu.be/xOnrdMQd1vU

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

相关内容