DKMS简介
DKMS全称是Dynamic Kernel Module Support,它可以帮我们维护内核外的驱动程序,在内核版本变动之后可以自动重新生成新的模块。
1.背景
对于没有内核编程经验的使用者来说,使用者可能经常困惑:为什么更新操作系统之后,原来用的好好的驱动程序突然就不能用了?
Linux模块和内核是有依赖关系的,如果发行版的内核版本发生变动,之前老内核版本上编译的模块将无法继续使用。一般的解决方案是:打开源码,手动重新再编译(make)一遍。
这样重复的操作有些繁琐且是反生产力的,就是Dell创建的DKMS项目的意义所在。
DKMS正是为了解决因为内核变动而导致有些模块(比如驱动程序)不能正常运行的情况而产生的。在内核版本变动之后可以自动重新生成新的模块。
2.DKMS使用
2.1安装
在使用dkms之前首先需要确保系统中已经安装了 DKMS。在Ubuntu下可以执行下面这个命令安装:
sudo apt-get install dkms
安装完毕之后,我们就可以开始使用 DKMS了。
本文的例子来自Ubuntu Wiki,大家可以从这里下载。
使用DKMS编译安装内核模块
DKMS的使用流程可以用下图简单表示:
以hello-0.1为例,我们首先需要把代码copy到"/usr/src"下面,这样完整路径将是"/usr/src/hello-0.1"。
DKMS要求我们的代码目录必须以&