更新单个内核模块/驱动程序

更新单个内核模块/驱动程序

我需要一个相当旧的内核中较新版本的内核模块。

如何替换主流linux内核的单个内核模块并且只编译这个模块?

答案1

警告:无法保证新版驱动程序与旧内核兼容。但值得一试。

  1. 在内核中查找较新的驱动程序。有两个选项:您可以使用内核 git 中的原始内核驱动程序,例如https://github.com/torvalds/linux/tree/master/drivers。选择一个标签来查找所需的特定内核版本非常方便。下载特定的thedriver.h文件thedriver.c并将它们放入新目录中。

    第二种方法是从以下位置获取 Ubuntu 的新内核http://packages.ubuntu.com或通过apt-get source ...

  2. 安装软件包build-essentialslinux-kernel-headers

  3. 现在我们为这个单个模块创建一个 makefile,如下所示cyberciti.bizthedriver.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
    
  4. 现在,在此目录中,键入make以编译驱动程序。

  5. 如果一切顺利,thedriver.ko应该已经创建一个可以放入文件夹中的文件/lib/modules/$kernelversion/kernel/drivers(不要忘记创建备份)

相关内容