我需要一个相当旧的内核中较新版本的内核模块。
如何替换主流linux内核的单个内核模块并且只编译这个模块?
答案1
警告:无法保证新版驱动程序与旧内核兼容。但值得一试。
在内核中查找较新的驱动程序。有两个选项:您可以使用内核 git 中的原始内核驱动程序,例如https://github.com/torvalds/linux/tree/master/drivers。选择一个标签来查找所需的特定内核版本非常方便。下载特定的
thedriver.h
文件thedriver.c
并将它们放入新目录中。第二种方法是从以下位置获取 Ubuntu 的新内核http://packages.ubuntu.com或通过
apt-get source ...
安装软件包
build-essentials
和linux-kernel-headers
现在我们为这个单个模块创建一个 makefile,如下所示cyberciti.biz,
thedriver.o
必须替换为驱动程序名称。在包含驱动程序代码的文件夹中,创建一个Makefile
包含以下内容的文件:obj-m += thedriver.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
现在,在此目录中,键入
make
以编译驱动程序。如果一切顺利,
thedriver.ko
应该已经创建一个可以放入文件夹中的文件/lib/modules/$kernelversion/kernel/drivers
(不要忘记创建备份)