流程

方法一

以下配置仅执行一次,并以 linux kernel 3.13.0 为例

$ cd ~
$ apt-get source linux-source-3.13.0
$ cd linux-3.13.0
$ cp -v /boot/config-$(uname -r) ./.config
$ make oldconfig
$ make prepare
$ make scripts

对于每个内核版本,需要只需要以下命令,并以 rdma_rxe.ko为例进行说明

$ apt-get install linux-headers-$(uname -r)
$ cd ./linux-3.13.0
$ cp -v /usr/src/linux-headers-$(uname -r)/Module.symvers .
$ mv -v /lib/modules/$(uname -r)/kernel/drivers/infiniband/sw/rxe/rdma_rxe.ko /lib/modules/$(uname -r)/kernel/drivers/infiniband/sw/rxe/rdma_rxe.ko.backup

修改模块源代码并编译安装

$ cd ./linux-3.13.0/drivers/infiniband/sw/rxe
$ vim rxe.c
$ make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
$ make -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install # This will install the kernel module in /lib/modules/$(uname -r)/extra/
# try the following if make modules_install fail
# sudo cp ./linux-3.13.0/drivers/infiniband/sw/rxe/rdma_rxe.ko /lib/modules/$(uname -r)/kernel/drivers/infiniband/sw/rxe/
# sudo depmod
$ modprobe -r rdma_rxe
$ modprobe rdma_rxe

方法二

以下配置仅执行一次

$ cd ~
$ apt-get source linux-image-unsigned-$(uname -r)
$ cd ./linux-xxx
$ mv -v /lib/modules/$(uname -r)/kernel/drivers/infiniband/sw/rxe/rdma_rxe.ko /lib/modules/$(uname -r)/kernel/drivers/infiniband/sw/rxe/rdma_rxe.ko.backup

修改模块源代码并编译安装

$ cd ./linux-xxx/drivers/infiniband/sw/rxe
$ vim rxe.c
$ make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
$ make -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install # This will install the kernel module in /lib/modules/$(uname -r)/extra/
# try the following if make modules_install fail
# sudo cp ./linux-xxx/drivers/infiniband/sw/rxe/rdma_rxe.ko /lib/modules/$(uname -r)/kernel/drivers/infiniband/sw/rxe/
# sudo depmod
$ modprobe -r rdma_rxe
$ modprobe rdma_rxe

参考