Debian 有两个头文件包,一个依赖于体系结构,另一个则不依赖于体系结构。他们将标头安装在/usr/src/$LINUX/common
和中/usr/src/$LINUX/$ARCH
,从而安装两个目录:build 和 source 中的/lib/modules
。这会导致 dkms 出现很多问题。
有没有充分的理由解释为什么它会这样做,而普通的却不会?
答案1
对于评论来说这有点太长了,但这并不是一个答案。
您可以通过发布以下内容来帮助澄清未知问题:
inxi -Fxz
这将有助于显示您的设置可能存在的问题。
几点:
dkms 不是一个东西,它是模块和构建脚本等的集合。您需要指定哪个模块失败了,这不是 dkms 失败,它可以与当前 Debian 内核一起工作的模块正常工作。特定 dkms 模块失败的事实意味着您必须找出它失败的原因,而不是为什么标准 Debian 打包能够正常工作并按预期工作。 Dkms 没有失败,而是你的模块失败了,几乎 100% 确定。
支持任何随机模块不是 Debian 内核的工作,因此您必须非常具体地了解哪个模块出现故障。 dkms 与标准 Debian 打包标头方式没有一般问题,只要模块及其 dkms 代码正确并支持内核,它就可以正常工作。
你没有提到你正在使用哪个 Debian 分支,这很重要。稳定的?下一个稳定,又名“破坏者”,不稳定?
您安装与您的体系结构相对应的 linux-headers 包,然后将公共包作为依赖项拉入。 Common的意思是共同的,即1个公共包在不同的架构中都是相同的,偶尔也会有例外。
例子:
apt-cache search linux-headers
...
linux-headers-5.10.0-6-686 - Header files for Linux 5.10.0-6-686
linux-headers-5.10.0-6-686-pae - Header files for Linux 5.10.0-6-686-pae
linux-headers-5.10.0-6-amd64 - Header files for Linux 5.10.0-6-amd64
linux-headers-5.10.0-6-cloud-amd64 - Header files for Linux 5.10.0-6-cloud-amd64
linux-headers-5.10.0-6-common - Common header files for Linux 5.10.0-6
linux-headers-5.10.0-6-common-rt - Common header files for Linux 5.10.0-6-rt
linux-headers-5.10.0-6-rt-686-pae - Header files for Linux 5.10.0-6-rt-686-pae
linux-headers-5.10.0-6-rt-amd64 - Header files for Linux 5.10.0-6-rt-amd64
...
请注意例外情况,rt 内核有其自己的公共文件,但除此之外,一个公共文件是共享的。 Debian 总是做这样的事情,这就是所谓的良好包装。事实上,debian 提供良好的打包并不是一个错误或问题,它只是揭示了 dkms 模块中的一个错误或问题。