在 CentOS 上**手动编译驱动(kernel module / driver)**通常分为几种场景:
下面以**最常见的“手动编译内核模块驱动”**为例说明完整流程。
sudo yum groupinstall "Development Tools" -y
sudo yum install kernel-devel kernel-headers -y
⚠️ 注意:
kernel-devel 的版本 必须和当前运行内核一致
查看当前内核:
uname -r
查看已安装 kernel-devel:
rpm -qa | grep kernel-devel
如不一致:
sudo yum install kernel-devel-$(uname -r)
常见来源:
tar.gz 源码包示例:
cd /usr/src
sudo tar -xzf driver.tar.gz
cd driver
大多数驱动支持:
make
如果驱动依赖特定内核路径:
make KDIR=/usr/src/kernels/$(uname -r)
sudo make install
或手动:
sudo cp *.ko /lib/modules/$(uname -r)/extra/
sudo depmod -a
sudo modprobe driver_name
查看是否加载:
lsmod | grep driver_name
如果是长期维护驱动(如 NVIDIA、无线网卡),推荐 DKMS:
sudo yum install dkms -y
结构示例:
driver/
├── driver.c
├── Makefile
└── dkms.conf
dkms.conf 示例:
PACKAGE_NAME="driver"
PACKAGE_VERSION="1.0"
BUILT_MODULE_NAME[0]="driver"
DEST_MODULE_LOCATION[0]="/extra"
AUTOINSTALL="yes"
添加并编译:
sudo dkms add ./driver
sudo dkms build driver/1.0
sudo dkms install driver/1.0
✅ 确保:
uname -r == kernel-devel 版本
sudo yum install kernel-devel-$(uname -r)
sudo dkms rebuild driver/1.0
CentOS + Secure Boot 需签名:
sudo /usr/src/kernels/$(uname -r)/scripts/sign-file
tar -xzf igb-5.10.0.tar.gz
cd igb-5.10.0/src
make
sudo make install
sudo modprobe igb
如果你能提供:
我可以给你针对性的编译步骤。