前言

最近想编辑下KVM虚拟机磁盘的文件,看资料需要使用ndb服务,但发现Centos7 系统中默认竟没有ndb.ko 文件,参考网上资料,发现该驱动需要内核编译才可获得的,特此记录一下。

nbd 编译安装

yum install kernel-devel kernel-headers elfutils-libelf-devel

# 查看OS 版本
rel=`cat /etc/redhat-release |awk '{print $4}'`
# 查看内核版本
uname -r

# 下载对应版本内核源码
cd /tmp
wget https://mirrors.aliyun.com/centos-vault/7.5.1804/os/Source/SPackages/kernel-3.10.0-862.el7.src.rpm
rpm -ihv kernel-3.10.0-862.el7.src.rpm
cd ~/rpmbuild/SOURCES
tar Jxvf linux-3.10.0-862.el7.tar.xz -C /usr/src/kernels/
cd /usr/src/kernels/
mv linux-3.10.0-862.el7 $(uname -r)
cd $(uname -r)
make mrproper
# 从yum安装的内核文件夹中复制Module.symvers
cp ../3.10.0-862.14.4.el7.x86_64/Module.symvers ./
# 复制当前系统的内核配置文件
cp /boot/config-$(uname -r) ./.config
make oldconfig
make prepare
make scripts
# 修复编译出错 error: ‘REQ_TYPE_SPECIAL’ undeclared
sed -i "s/sreq.cmd_type =.*/sreq.cmd_type = 7;/g" drivers/block/nbd.c
make CONFIG_BLK_DEV_NBD=m M=drivers/block
cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/
# 加载驱动
depmod -a
# 查看驱动信息
modinfo nbd

###