1. 工具准备
sudo apt install -y build-essential dh-make debhelper devscripts
2. 确定下内核版本
uname -a

3. 创建特定的目录
mkdir -p driver_deb
mkdir -p driver_deb/DEBIAN
mkdir -p driver_deb/lib/modules/$(uname -r)/kernel/drivers/misc/
其中misc要替换成自己想放的目录,misc只是一个简单的示例,字符设备驱动
4. copy driver到deb目录
cp ~/project/linux_driver_study/ubuntu/hello_driver/hello_driver.ko ./driver_deb/lib/modules/5.15.0-136-generic/kernel/drivers/misc/
选择自己的目录
5. 编写控制文件 (DEBIAN/control)
touch driver_deb/DEBIAN/control
Package: driver-kmod
Version: 1.0.0
Section: kernel
Priority: optional
Architecture: amd64
Depends: linux-image-5.15.0-136-generic
Maintainer: Zhongjun.yu@QUECTEL.COM
Description: Pre-built kernel module for MyDevice (hello_driver.ko)
This package installs the pre-compiled kernel module (hello_driver.ko) for the MyDevice hardware. It is built specifically for kernel version 5.15.0-136-generic.
**WARNING:** This driver will stop working if the kernel is upgraded! A new package built against the new kernel version is required.
根据客户信息修改此内容
- 关键点解释:
-
Package: 给您的驱动包起个名字(如mydriver-kmod)。Version: 设置您驱动的版本。Architecture: 必须匹配 您的.ko文件编译的目标架构(运行dpkg --print-architecture在目标机器上查看)。Depends: linux-image-$(uname -r): 这是核心! 它声明此包只能 安装在具有 完全匹配 内核版本$(uname -r)(即您步骤 1 获取的版本) 的系统上。如果系统内核升级了,apt/dpkg会阻止安装此包(因为依赖不满足),或者会在升级后标记此包为"因依赖问题未配置"。这明确告诉用户和管理员:此驱动只适用于特定内核。Description: 清晰描述,并包含 警告:此驱动与内核版本绑定,内核升级后失效。
6. 编写安装/卸载脚本
安装后脚本 ( DEBIAN/postinst**):** 用于在安装完 .ko 文件后更新内核模块依赖信息 (depmod)。
touch driver_deb/DEBIAN/postinst
#!/bin/sh
set -e
# 更新模块依赖关系 (非常重要!否则可能无法加载)
/sbin/depmod -a || true
# 通常不建议在这里自动加载模块,由系统按需加载或配置modprobe规则更好
# /sbin/modprobe hello_driver > /dev/null 2>&1 || true
exit 0
卸载前脚本 ( DEBIAN/prerm**):** 尝试在删除 .ko 文件前卸载模块(如果已加载)。
touch driver_deb/DEBIAN/prerm
#!/bin/sh
set -e
# 检查模块是否加载,如果加载则尝试卸载
if /sbin/lsmod | grep -q '^hello_driver\s'; then
/sbin/rmmod hello_driver || true # 忽略卸载失败(如模块正在使用)
fi
exit 0
卸载后脚本 ( DEBIAN/postrm**):** 在删除 .ko 文件后再次更新模块依赖信息。
#!/bin/sh
set -e
# 再次更新模块依赖关系 (清理)
/sbin/depmod -a || true
exit 0
7. 分配权限
chmod 0755 driver_deb/DEBIAN/postinst
chmod 0755 driver_deb/DEBIAN/postrm
chmod 0755 driver_deb/DEBIAN/prerm
chmod 0755 driver_deb/DEBIAN/control
8. 构建deb包
dpkg-deb --build driver_deb/

9. 安装 .deb 包
sudo apt install ./driver_deb.deb # 首选,自动处理依赖
或
sudo dpkg -i driver_deb.deb # 如果依赖已明确满足

10. 验证驱动是否安装
ls -l /lib/modules/5.15.0-136-generic/kernel/drivers/misc/hello_driver.ko

sudo insmod /lib/modules/5.15.0-136-generic/kernel/drivers/misc/hello_driver.ko
lsmod | grep hello_driver # 检查是否加载
sudo rmmod hello_driver # 卸载
11. 其他补充命令
dpkg -l | grep driver-kmod #查看是否已经安装

sudo dpkg -P driver-kmod #卸载

卸载后就没有ko了
