在linux中有时候需要用到自己修改过的nvme driver,我的linux环境是centos
1、查询centos版本
uname -r
3.10.0-327.el7.x86_64
2、搜索centos的src.rpm包,解压
rpm -i https://buildlogs.centos.org/c7.1511.00/kernel/20151119220809/3.10.0-327.el7.x86_64/kernel-3.10.0-327.el7.src.rpm
3、找到linux内核源码
/root/rpmbuild/SOURCES/linux-3.10.0-327.el7.tar.xz
4、编译nvme driver
在源码目录中找到nvme-core.c nvme-scsi.c nvme.h三个文件,拷贝到单独的文件夹内。增加一个makefile
ifneq ($(KERNELRELEASE),)
nvme_driver-objs:= nvme-core.o nvme-scsi.o
obj-m := nvme_driver.o
else
PWD := $(shell pwd)
KVER ?= $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
all:
$(MAKE) -C $(KDIR) M=$(PWD)
clean:
rm -fr *.o *.mod.c *.ko .tmp_versions
endif
5、insmod driver
modprobe -r nvme
insmod nvme-driver.ko
替换掉原来的nvme driver