配置Linux系统以支持设备驱动开发,核心在于准备好内核头文件、编译工具链以及可加载模块的运行环境。只有这样,开发者才能编译并运行自己编写的驱动程序。

一、安装基础编译工具
大多数发行版默认不带完整的开发工具。以 Debian 或 Ubuntu 为例,需要安装 gcc、make 以及当前内核对应的头文件包。
# 更新软件源并安装必要工具 sudo apt update sudo apt install -y build-essential sudo apt install -y linux-headers-$(uname -r)
如果是 CentOS 或 Rocky Linux,可以使用 yum 或 dnf 安装 kernel-devel 与 gcc。
二、获取内核源码并配置
有时需要完整内核源码来参考结构或开启特定选项。可从内核官网或发行版仓库获取,然后通过菜单配置。
# 假设已下载 linux-6.x.tar.xz 到当前目录 tar -xf linux-6.x.tar.xz cd linux-6.x # 使用当前系统配置作为基础 cp /boot/config-$(uname -r) .config make menuconfig
在菜单中确认 Enable_loadable_module_support 相关选项开启,保存退出即可。
三、编写并编译简单驱动模块
下面给出一个最小字符设备驱动示例,用于验证环境是否可用。
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int __init hello_init(void) {
printk(KERN_INFO "hello driver loadedn");
return 0;
}
static void __exit hello_exit(void) {
printk(KERN_INFO "hello driver unloadedn");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
对应的 Makefile 内容如下:
obj-m += hello.o KDIR := /lib/modules/$(shell uname -r)/build all: make -C $(KDIR) M=$(PWD) modules clean: make -C $(KDIR) M=$(PWD) clean
执行 make 后会产生 hello.ko 文件。
四、加载与卸载测试
使用 insmod 与 rmmod 命令即可完成模块的装载和移除,并用 dmesg 查看输出。
sudo insmod hello.ko dmesg | tail sudo rmmod hello dmesg | tail
五、常见问题说明
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 编译报找不到 linux/module.h | 未安装内核头文件 | 安装 linux-headers 或 kernel-devel |
| insmod 提示 Invalid module format | 内核版本与头文件不一致 | 确认 $(uname -r) 与头文件目录匹配 |
按照上述流程配置后,Linux 系统就具备了设备驱动开发的基本条件,可以继续深入研究字符设备、块设备与网络驱动的编写。