我不是 Linux 包管理器方面的专家。
如果我为嵌入式设备开发一个全新的内核驱动程序,我可以将其添加到 Linux 映像中并在启动时加载它insmod
等modprobe
。
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 on
dh-sequence-dkms
负责处理其他所有事情。
看看我的ddcci
包作为一个工作示例。