1、yum -y install kernel_devel
2、yum -y install kernel_headers
3、检查是否有路径/usr/src/kernels/$(uname -r) (若不存在,表示yum下载的kernel_devel和kernel_headers和系统内核版本存在差异,rpm -e卸载后,再执行yum -y install kernel_devel-$(uname -r)和yum -y install kernel_headers-$(uname -r),注:若yum找不到指定版本,需网页到阿里镜像源对应版本下载rpm包)
4、cd /usr/src/kernels/$(uname -r)/drivers/block 检查当前目录是否有nbd.c(没有的话需从centos官网下载,路径为http://vault.centos.org/***/os/Source/SPackages/kernel-***.src.rpm,再从该rpm中取出nbd.c考至/usr/src/kernels/$(uname -r)/drivers/block下)
5、修改Makefile,只保留“obj-$(CONFIG_BLK_DEV_NBD) += nbd.o”这一行,其他全部删除
6、make CONFIG_BLK_DEV_NBD=m -C /usr/src/kernels/$(uname -r) M=$(pwd) ,执行编译,当前目录下生成nbd.ko,insmod nbd.ko检查是否成功。
注:若生成的驱动insmod报错"insmod: error inserting 'nbd.ko': -1 Unknown symbol in module",大概率是yum自动下载的kernel_devel和kernel_headers与系统内核版本存在差异,rpm -qa|grep kernel 检查版本号和本机的uname -r版本号是否完全一致,若不一致需卸载后重新指定版本安装