问题标签 [dkms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
949 浏览

linux - 使用 dkms 修补现有内核模块

如这里和其他地方所述,创建带有内核模块的 debian 包似乎相当容易。我想用patch更新现有模块。我该怎么办?我真的没有要解压缩的源代码压缩包,而是我会使用模块源代码来构建 dkms 正在构建的任何内核版本。

例如,假设我安装了内核版本 1.2.3,那么我想使用 1.2.3 版本的源代码构建内核模块 uvcvideo,并添加一个补丁。我是在创建 dkms .deb 包之前获取源代码,还是在构建过程中以某种方式获取它们?

这个问题有意义吗?怎么做?

0 投票
1 回答
574 浏览

c - 为内核模块创建 DKMS 包,依赖于内核头文件

背景

我开发了一个 Linux 设备驱动程序 (ASoC)。现在我想将它作为 DKMS 包发布。目标机器是带有 Raspbian 的 Raspberry Pi。

问题

我的源代码依赖于 Linux/sound/soc/codecs/目录中的一个头文件。该文件在目标机器上不存在。

解决方法 1

我可以将所需的头文件添加到我的 DKMS 包中。但这感觉不对,因为我认为我应该使用正在构建模块的内核源代码中的头文件(例如 4.6、4.7 ...)。

解决方法 2

apt-get source ...我可以告诉最终用户在构建模块之前下载整个内核源代码 ( )。但是仅仅因为一个头文件就安装超过 700MB 感觉也不对。该包kernel-headers-不包含我需要的文件。

问题

有比这两种解决方法更好的解决方案吗?你有什么建议?

0 投票
1 回答
912 浏览

linux - 如何使用 DKMS 构建设备树覆盖?

我正在尝试使用 DKMS 为正在运行的内核(4.4)构建设备树覆盖。我天真的Makefile如下:

但是,我收到以下错误:

我该如何解决?没有root权限应该是可能的,对吧?

使用 DKMS 构建 dt 叠加层的标准Makefile 是什么样的?

编辑:我想我已经解决了这个问题,见下文。但是,仍然欢迎合格的答案。

0 投票
1 回答
1022 浏览

linux - 什么时候需要重建 initrd(Linux 初始 ramdisk)?

背景:我正在为我的内核模块开发一个 DKMS 包。DKMS 联机帮助页包含以下句子:

REMAKE_INITRD = 该指令指定在模块安装到内核后是否应该重新制作您的 initrd。

问题:什么时候需要重新制作 initrd?在将模块安装到内核后,如何确定是否需要重新制作 initrd?

0 投票
2 回答
4785 浏览

linux - 如何让 DKMS 通过正确的 ARCH 来“制作”?

我正在尝试使用 DKMS 构建模块。我的问题是我似乎无法让 DKMS 通过正确的 ARCH 来“制作”。它继续使用我的操作系统内核的架构,即 armv7l。但是没有映射
/usr/src/linux/arch/armv7l
需要往里面看
/usr/src/linux/arch/arm

我尝试将 -a arm, -k 4.4.21-v7+/arm 作为参数传递给“dkms build”,但它没有将其传递给“make”。将 BUILD_EXCLUSIVE_ARCH="arm" 添加到 /usr/src/rtl8812AU-4.3.14/dkms.conf 也没有什么区别。

sudo dkms build -m ${DRV_NAME} -v ${DRV_VERSION} -k 4.4.21-v7+/arm

此内核不需要内核准备。跳过...

构建模块:
清理构建区域....
'make'....(错误退出状态:2)
错误!内核上模块构建的错误返回状态:4.4.21-v7+ (arm)
有关更多信息,请参阅 /var/lib/dkms/rtl8812AU/4.3.14/build/make.log。

猫/var/lib/dkms/rtl8812AU/4.3.14/build/make.log

DKMS make.log for rtl8812AU-4.3.14 for kernel 4.4.21-v7+ (arm)
Thu Sep 29 16:36:07 UTC 2016
make ARCH=armv7l CROSS_COMPILE= -C /lib/modules/4.4.21-v7+/build M=/var/lib/dkms/rtl8812AU/4.3.14/build modules
make[1]: Entering directory '/usr/src/linux'
Makefile:606: arch/armv7l/Makefile: No such file or directory
make[1 ]: 没有规则来制作目标'arch/armv7l/Makefile'。停止。
make[1]: 离开目录 '/usr/src/linux'
Makefile:1576: recipe for target 'modules' failed
make: [modules] Error 2

如何解决这个问题?
谢谢你

0 投票
2 回答
1397 浏览

virtualbox - 无法在 ubuntu 15.10 上安装 virtualbox

我按照https://gist.github.com/PartTimeLegend/5328700操作,但出现如下错误:</p>

dmesg发现错误:

我的 virtualbox 安装日志文件:

https://drive.google.com/open?id=0B9Z0DTPHWdIVVXk5VWQxcE5XQ2c

我搜索了很多并尝试了很多,但直到现在还没有解决方案。如果有人可以在这里帮助我会很好:) 非常感谢!

0 投票
2 回答
12755 浏览

virtual-machine - VirtualBox 共享剪贴板和文件

VirtualBox 5.2.6使用Windows 10. 有一个Ubuntu虚拟机,我想从中访问主机的剪贴板和文件。我试着用

机器>设置>>通用>高级>共享剪贴板

我也试过

设备>共享剪贴板>双向

我也安装virtualbox-guest-dkms了,但是没有效果。

0 投票
1 回答
238 浏览

c - 为 dkms 禁用 -Werror

我目前正在尝试将内核模块安装到 Ubuntu。我已将模块的源文件复制到/usr/src/applespi-0.1.

然后,我做了

并得到

make.log:https ://pastebin.com/ySsHrgUt

我的目标是在编译此源文件时禁用 -Werror。但是,我似乎找不到带有 -Werror 标志的 Makefile。

0 投票
1 回答
48 浏览

vagrant - 使用 vagrant 时如何查看使用 virtualbox 设置的接口

我已经设置了一个默认的流浪者设置,我希望能够从主人那里找出我能从客人那里得到的信息。

对于 virtualbox 设置,会发生一些伪接口,您可以使用这些伪接口来路由和防火墙来宾传出连接。但是,当使用 vagrant 时,我注意到私有空间 eth0 的可用性,它通过主机接口进行了 NAT。使用 iproute2 搜索并查看 procfs 根本不会显示任何界面。

不久前,我发现 vbox 驱动程序绕过了从主机检查接口的所有常用方法。有没有办法从主机找到更多关于来宾接口的信息,以及我应该将哪个链作为防火墙流量的目标?

0 投票
1 回答
1575 浏览

dkms - 仅为特定内核版本构建 dkms 模块

您如何定义 dkms.conf 以便仅为特定内核版本或版本范围构建 DKMS 模块?

背景:

我们正在使用的当前内核(例如 4.4)中存在有缺陷的驱动程序,但在 4.10 中已修复。我制作了包含 4.10 源代码的 dkms 包,在内核 4.4 上一切正常。但是当我们使用更高版本的内核版本(例如 4.15)更新到更高版本的操作系统版本(或 HWE 版本)时,我想避免在内核版本为 4.10 或更高版本时重建(现在可能更旧的)4.10 内核驱动程序。

这是我的基本dkms.conf文件

我尝试BUILD_EXCLUSIVE_KERNEL匹配4.N内核版本

预期行为 - 不会为 kernel 安装内核模块4.15.0-43-generic。实际行为 - 正常安装

我的阅读表明替代方法可能有效(对于这个测试,我只是匹配我当前的内核版本)将编译规则更改为无操作。

如果这有什么不同,我在 Debian/Ubuntu 平台上。