安装ovs/ovn过程中,需要内核模块geneve, 但是有些Linux内核默认是不打开geneve标志的,所以需要手动build这个模块。经过复杂摸索,总结如下可行方式:
编译内核模块geneve步骤
- 用yum安装编译内核需要的源码文件: yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
- 下载相应版本的kernel的代码:https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.91.tar.gz
- 解压,并提取出文件geneve.c, 并放到目录/usr/src/kernels/$(uname -a)/drivers/net/
- cd /usr/src/kernels/$(uname -r)/drivers/net 备份原有Makefile,重新编写Makefile
# Makefile
KERNELDIR := /usr/src/kernels/4.19.90-25.0.v2111.ky10.sw_64
CURRENT_PATH := $(shell pwd)
obj-m := geneve.o
build: kernel_modules
kernel_modules:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
- 编译:make -C /lib/modules/`uname -r`/build M=`pwd`,即可编译geneve.ko成功
- 将编译得到的geneve.ko文件拷贝到内核模块所在目录:cp geneve.ko /usr/lib/modules/$(uname -r)/kernel/drivers/net
- 执行 depmod -a && modprobe geneve , 此时geneve模块已经加载至内核。
- 执行 lsmod | grep geneve 验证已有geneve模块
- 将geneve.ko放到开机模块自动加载 vim /etc/modules-load.d/geneve.conf, 输入geneve