手动编译ovs的Linux内核模块geneve

本文详细介绍了如何在Linux内核默认不包含Geneve模块的情况下,通过下载源码、修改Makefile并编译kernel模块,以实现Geneve模块的加载,以便于OVS/OVN的安装过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装ovs/ovn过程中,需要内核模块geneve, 但是有些Linux内核默认是不打开geneve标志的,所以需要手动build这个模块。经过复杂摸索,总结如下可行方式:

编译内核模块geneve步骤

  1. 用yum安装编译内核需要的源码文件: yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
  2. 下载相应版本的kernel的代码:https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.91.tar.gz
  3. 解压,并提取出文件geneve.c, 并放到目录/usr/src/kernels/$(uname -a)/drivers/net/
  4. 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

  
  1. 编译:make -C /lib/modules/`uname -r`/build M=`pwd`,即可编译geneve.ko成功
  2. 将编译得到的geneve.ko文件拷贝到内核模块所在目录:cp geneve.ko /usr/lib/modules/$(uname -r)/kernel/drivers/net
  3. 执行 depmod -a && modprobe geneve , 此时geneve模块已经加载至内核。
  4. 执行 lsmod | grep geneve 验证已有geneve模块
  5. 将geneve.ko放到开机模块自动加载 vim /etc/modules-load.d/geneve.conf, 输入geneve

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值