本文将描述 DKMS 是什么、怎么用、有哪些问题。
如果要问 Linux 内核模块如何发布、安装。脑回路的第一反应肯定是 make && insmod。
上述方法可以满足嵌入式场景,因为嵌入式产品的软件是整体发布,包括:内核、模块、软件等交付件。但是在 PC/服务器 领域,各个组件都是互相独立的,如果一个模块基于内核 A 编译并发布,那用户更改内核后,之前发布的内核模块就不能用了。
所以,DELL 发布了 DKMS,全称 Dynamic Kernel Module System。可以做到内核变更后自动编译模块,适配新内核。
DKMS 既是软件包也是规范,使用 DKMS 必须遵守 DKMS 约定的规范。下面我们以一个可编译的内核模块为例说明 DKMS 怎么用。
DKMS 模块代码目录位于 /usr/src/modulename-version
,比如:/usr/src/tinylab-1.0.0
,表示 tinylab 模块的 1.0.0 版本。
前提:有一个可编译的内核模块,且目录符合 DKMS 规范
- root@llc-vpc:/home/llc/tmp/module# tree /usr/src/tinylab-1.0.0/
- /usr/src/tinylab-1.0.0/
- ├── Makefile
- └── tinylab.c
-
- 0 directories, 2 files
添加 dkms.conf
root@llc-vpc:/usr/sr