如何使用包管理器安装和加载独特的驱动程序

如何使用包管理器安装和加载独特的驱动程序

我不是 Linux 包管理器方面的专家。

如果我为嵌入式设备开发一个全新的内核驱动程序,我可以将其添加到 Linux 映像中并在启动时加载它insmodmodprobe

apt-get但是,如何才能让任何人使用包管理器从 Linux 终端安装和加载此驱动程序呢?

答案1

我建议打包您的模块并依赖数据管理系统负责实际的编译和安装——这可以确保每当安装新内核时都会重建您的模块。

要做到这一点,你需要

  • 提供Makefile构建模块的能力(与内核模块一样)

  • 在文件中描述您的模块dkms.conf例如

    PACKAGE_VERSION="1.2.3"
    PACKAGE_NAME="my_module"
    CLEAN="make clean"
    BUILT_MODULE_NAME[0]="my_module"
    BUILT_MODULE_LOCATION[0]="/src"
    DEST_MODULE_LOCATION[0]="/extra"
    MAKE[0]="make KVER=$kernelver -C ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build"
    AUTOINSTALL="yes"
    
  • 打包你的模块而不构建它 - 你的debian/rules文件看起来像

    #!/usr/bin/make -f
    
    PACKAGE_NAME=$(shell grep PACKAGE_NAME= dkms.conf | cut -d= -f2 | cut -d\" -f2)
    PACKAGE_VERSION=$(shell grep PACKAGE_VERSION= dkms.conf | cut -d= -f2 | cut -d\" -f2)
    export PACKAGE_NAME PACKAGE_VERSION
    
    %:
      dh $@
    
    # Nothing to configure, build or auto-install (this all happens after
    # installation using dkms)
    override_dh_auto_configure:
    override_dh_auto_build:
    override_dh_auto_install:
    

    并且您的debian/install文件将声明您需要安装的各种源文件,例如

    #!/bin/sh
    
    for dir in src Makefile; do
        echo ${dir} /usr/src/${PACKAGE_NAME}-${PACKAGE_VERSION}
    done
    
  • build-depend ondh-sequence-dkms负责处理其他所有事情。

看看我的ddcci包作为一个工作示例。

相关内容