温馨提示×

centos如何编译驱动

小樊
49
2026-09-06 08:49:42
栏目: 智能运维

在 CentOS 上编译(内核)驱动,通常步骤如下。下面以 CentOS 7 / CentOS 8 为例,原理也适用于 Stream 版本。


一、准备编译环境

1. 安装内核开发包和编译工具

sudo yum groupinstall "Development Tools" -y
sudo yum install kernel-devel kernel-headers -y

⚠️ 注意:
kernel-devel 的版本必须和 当前运行内核 完全一致
查看当前内核:

uname -r

例如:

3.10.0-1160.el7.x86_64

则必须安装:

kernel-devel-3.10.0-1160.el7.x86_64

二、编写或获取驱动源码

示例(最简字符驱动 hello.c):

#include <linux/module.h>
#include <linux/kernel.h>

static int __init hello_init(void)
{
    printk(KERN_INFO "Hello, CentOS driver!\n");
    return 0;
}

static void __exit hello_exit(void)
{
    printk(KERN_INFO "Goodbye, CentOS driver!\n");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");

三、编写 Makefile

obj-m += hello.o

KDIR := /lib/modules/$(shell uname -r)/build
PWD  := $(shell pwd)

all:
	make -C $(KDIR) M=$(PWD) modules

clean:
	make -C $(KDIR) M=$(PWD) clean

四、编译驱动

make

成功后会生成:

hello.ko

五、加载和测试驱动

sudo insmod hello.ko
dmesg | tail
sudo rmmod hello
dmesg | tail

六、常见问题

1. 报错:missing kernel headers

sudo yum install kernel-headers

2. 内核版本不一致

uname -r
rpm -qa | grep kernel-devel

不一致时重启到对应内核,或安装对应 kernel-devel

3. 签名问题(Secure Boot)

如果启用了 Secure Boot:

  • 需要签名 .ko
  • 或使用 mokutil 导入自定义密钥

七、适用于 CentOS 8 / Stream

sudo dnf groupinstall "Development Tools"
sudo dnf install kernel-devel kernel-headers

其余步骤相同。


如果你有:

  • 特定硬件(网卡 / GPU / USB)
  • 官方提供的 .tar.gz 驱动
  • 报错信息

可以直接贴出来,我可以帮你针对性分析。

0 踩