我安装了 3.16 和 4.0 版的linux-image
软件包。在登录期间,我可以在“高级选项”菜单项中选择要启动的内核。但是,当我安装 DKMS 模块时,它仅针对较新版本进行编译:
Setting up fglrx-modules-dkms (1:14.12-1) ...
Loading new fglrx-14.12 DKMS files...
Building only for 4.0.0-1-amd64
Run Code Online (Sandbox Code Playgroud)
3.16 也安装了相关包 ( linux-headers
, linux-kbuild
, linux-compiler-gcc
)。
为什么没有为旧内核映像编译包?我可以配置的内容,以免被编译?
module-assistant
一段时间以来,它一直是编译和构建包含内核模块的二进制 Debian 软件包的事实上的方法。最近出现了一个类似的实用程序 - dkms
。
如果有人有使用这两种方法的经验,请比较和对比使用一种与另一种的优缺点。
答案中要解决的一项是是否也dkms
为内核模块构建二进制 Debian 软件包,如果是,如何,如果是,由m-a
和构建的软件包之间有什么区别dkms
(如果有)。
我个人从来没有用过dkms
,但我已经module-assistant
零星使用了很多年,这是一个很好的体验。我没有立即试验的计划dkms
,所以我认为我不是写答案的合适人选。
不用说,任何答案都应该基于第一手经验,而不是从网络论坛复制。使用两者的工作示例会很好。可能nvidia-kernel
,因为这是很常用的。是的,我知道它是一个专有的内核模块。:-(
更新:感谢 jordanm 的回答。我想要一些更详细的关于引擎盖下正在发生的事情的东西,对于m-a
和dkms
,尽管我最初没有提到这一点。此外,听起来大部分时间dkms
都会透明和自动地工作。但是dkms
. 他们如何处理手动编译/安装的内核?从二进制包安装或本地安装。
我已经根据debian wiki上的说明在 Debian Jessie 上安装了 vitualbox 。
通过运行:
apt-get install linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') virtualbox
Run Code Online (Sandbox Code Playgroud)
在安装过程中报告了一些错误。
现在我想重新配置 virtualbox-dkms 但我收到此错误:
Loading new virtualbox-4.3.18 DKMS files...
Building only for 3.16-3-amd64
Module build for the currently running kernel was skipped since the
kernel source for this kernel does not seem to be installed.
Run Code Online (Sandbox Code Playgroud)
注意:uname -r
显示3.16-3-amd64
但我在 /usr/src 中的源文件夹被命名为:
linux-headers-3.16.0-4-amd64
.
我不知道该怎么办!
debian kernel-modules software-installation linux-kernel dkms
我的系统上安装了多个 DKMS 模块,其中一些是我的,还有一些属于非常重要的维护包,例如 Oracle 的 VirtualBox 5。
我发现在每次内核升级时,所有 DKMS 模块都会损坏并且没有安装在新内核中。我认为这是我自己模块中代表我的错误配置,但是现在我看到 VirtualBox 也损坏了,我怀疑是其他原因。
如何调试为什么 DKMS 没有在较新的内核版本中安装模块?
我使用的是内核 3.19,Ubuntu 14.04。
内核升级后dkms status
没有输出任何内容,这意味着我的 DKMS 模块都没有正确安装。
我正在尝试删除此 dkms 模块,但遇到了麻烦。
我跑
sudo dkms uninstall rtl8812au/4.3.14
Run Code Online (Sandbox Code Playgroud)
我得到
Error! The module/version combo: rtl8812au-4.3.14
is not located in the DKMS tree.
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时dkms status
,我得到
8188eu, 1.0, 4.13.0-26-generic, x86_64: installed
bcmwl, 6.30.223.271+bdcom, 4.13.0-26-generic, x86_64: installed
mt7610u_sta, 1.0, 4.13.0-26-generic, x86_64: installed (WARNING! Diff between built and installed module!)
rtl8812au, 4.3.8.12175.20140902+dfsg: added
Run Code Online (Sandbox Code Playgroud)
当我进入以下文件夹中的 Makefile.dkms 时,
y9@y9-aspire:~/rtl8812AU_8821AU_linux$ ls
clean core ifcfg-wlan0 Makefile README.md
contrib dkms.conf include Makefile.dkms runwpa
CONTRIBUTORS.md fetch.sh Kconfig os_dep wlan0dhcp
contributors.sh hal LICENSE platform
Run Code Online (Sandbox Code Playgroud)
我懂了
modname := rtl8812au
DKMS := …
Run Code Online (Sandbox Code Playgroud) 我需要应用内核补丁(https://lkml.org/lkml/2015/3/31/929)才能让我的触摸板正常工作。我想我应该使用 dkms 来做到这一点。我正在阅读的大部分内容都是关于让 dkms 创建模块的。它也可以用来修补内核吗?
我期待什么:
全部自动进行,但比安装预编译内核慢一点。
我走在正确的轨道上吗?我该怎么做?(你能指出手册中正确的页面吗)
我使用的是Ubuntu 15.04
Linux kubuntu 3.19.0-15-generic #15-Ubuntu SMP 四月 16 日星期四 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
我有一个场景,我需要在内核更新后重新编译我的显示驱动程序。我正在尝试在启动时使用 Bash 脚本使其自动化。因此,我需要一种方法来知道我的内核已更改,并为新运行的内核重新安装驱动程序。
我正在考虑在第一次安装驱动程序时将内核版本输出到文件中,并在我的脚本中始终检查该文件内容是否与现在安装的内容不同。
这是正确的方法吗?我将不胜感激任何关于如何知道自从我上次安装驱动程序以来内核是否发生变化的建议。
我想根据 NVIDIA CUDA 工具包网站上的信息安装 CUDA
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-rhel8-10-2-local-10.2.89-440.33.01-1.0-1.x86_64.rpm
sudo rpm -i cuda-repo-rhel8-10-2-local-10.2.89-440.33.01-1.0-1.x86_64.rpm
sudo dnf clean all
sudo dnf -y module install nvidia-driver:latest-dkms
sudo dnf -y install cuda
...
Error:
Problem 1: conflicting requests
- nothing provides dkms needed by kmod-nvidia-latest-dkms-3:440.33.01-1.el8.x86_64
Run Code Online (Sandbox Code Playgroud)
如果我通过启用epel
sudo subscription-manager repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"
[sudo] password for adminsafe20:
Repository 'codeready-builder-for-rhel-8-x86_64-rpms' is enabled for this system.
Run Code Online (Sandbox Code Playgroud)
看起来不错,但我没有看到任何返回,yum search dkms
除了:
============================== Name Matched: dkms ==============================
kmod-nvidia-latest-dkms.x86_64 : NVIDIA display driver kernel module
Run Code Online (Sandbox Code Playgroud)
我收到与尝试安装之前相同的原始消息:
- nothing provides dkms …
Run Code Online (Sandbox Code Playgroud) 我需要.deb
在没有连接的树莓派上安装一个软件包。当我尝试使用以下命令安装此类包时:
sudo dpkg -i <name>.deb
Run Code Online (Sandbox Code Playgroud)
我收到错误:
dpkg: dependency problems prevent configuration of rtl8192eu-dkms:
rtl8192eu-dkms depends on dkms (>= 1.95); however:
package dkms is not installed.
dpkg: error processing package rtl8192eu-dkms (--install)
dependency problems - leaving unconfigured
errors were encountered while processing:
rtl8192eu-dkms
Run Code Online (Sandbox Code Playgroud)
我确实有另一台 Windows 计算机可以从中下载文件,但从哪里获取这些文件?