请教Linux中内核模块(ko)开源和闭源的问题

请教Linux中内核模块(ko)开源和闭源的问题,第1张

比如Intel开源的图形界弊拿弊面驱动位于内核的:

/lib/modules/`uname -r`/kernel/drivers/gpu/drm/i915/i915.ko

Nvidia的闭源驱动则以 DKMS 动态内核模块放置在敏滚 :

/lib/modules/`uname -r`/updates/dkms/

Dynamic Kernel Module Support Framework

DKMS is a framework designed to allow individual kernel modules to be upgraded without changing the whole kernel. It is also very easy to rebuild modules as you upgrade kernels.

动态内核模块DKMS的用途包括:

在不影响现有内核的情况下,安装新的模块到现有系统上,比如Nvidia和AMD的闭源驱动程序.

当你更新内核租族时,将非常容易重建模块,比如VirtualBox在Linux上的虚拟化驱动.

假设模块的源文件为hello.c,源码如下:

使用该文件兄中编译内核模块。

正常情况下,Makefile文件内容如下:

执行 make 命令,生成hello.ko文件。

执行 sudo insmod hello.ko 命令,安装该模块。

执行腔猛 lsmod 命令,查看安装的模块。就会看到第一行的就是hello模块。

但是,如果想自定义模块名称为 xmodule ,而不是默认的 hello ,如何实现呢?方法如下:

在Makefile中重命名obj-m并将obj-m的依赖关系设置为原始模块(hello)

修改后的Makefile文件内容如下:

将obj-m设置为 xmodule .o,并使 xmodule .o依赖于 hello .o.

执行 make 命令后,伍尘桥生成 xmodule .ko, 而不是 hello .ko,

安装命令: sudo insmod xmodule.ko

查看命令: lsmod ,就会看到被安装名为 xmodule 的模块。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12510444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存