You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为特定Ubuntu版本构建内核模块遇加载错误及源码匹配问题

构建OpenvSwitch内核模块加载失败:Invalid module format错误

问题详情

  • 加载模块时出错:
$ sudo insmod net/openvswitch/openvswitch.ko
insmod: ERROR: could not insert module net/openvswitch/openvswitch.ko: Invalid module format
  • 模块modinfo信息:
name:           openvswitch 
vermagic:       6.5.13-g1daceaa37695 SMP preempt mod_unload 
  • 系统运行内核版本:
$ uname -a
Linux virtual-machine 6.5.0-25-generic #25~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Feb 20 16:09:15 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
  • 当前Git仓库信息:
$ git remote -v
origin  https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy (fetch)
origin  https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy (push)
  • 当前分支/标签状态:
$ git branch 
* (HEAD detached at Ubuntu-hwe-6.5-6.5.0-25.25_22.04.1)
  master

核心问题:找不到与当前运行内核匹配的源码来构建模块。

解决步骤

1. 根源分析

模块的vermagic字段(6.5.13-g1daceaa37695)与系统运行内核版本(6.5.0-25-generic)不匹配,说明构建模块时使用的内核源码版本和当前运行的内核不一致,导致模块格式不兼容。

2. 获取匹配的内核源码

  • 直接通过apt安装对应内核的源码包:
sudo apt update && sudo apt install linux-source-6.5.0

源码会解压到/usr/src/linux-source-6.5.0目录下。

  • 或者从当前Git仓库确认源码匹配性:
    当前已处于Ubuntu-hwe-6.5-6.5.0-25.25_22.04.1标签,先核对内核版本:
cd /path/to/your/linux/source
make kernelversion

如果输出与6.5.0-25-generic不符,拉取仓库更新并重新切换标签:

git fetch origin
git checkout Ubuntu-hwe-6.5-6.5.0-25.25_22.04.1

3. 配置内核编译环境

  • 拷贝当前运行内核的配置文件到源码目录:
cp /boot/config-6.5.0-25-generic /path/to/your/linux/source/.config
  • 生成匹配的编译配置:
cd /path/to/your/linux/source
make olddefconfig
make prepare
make modules_prepare

4. 重新构建并加载OpenvSwitch模块

  • 进入OpenvSwitch源码目录,指定匹配的内核源码路径重新构建:
cd /path/to/openvswitch/source
make clean
make KERNELDIR=/path/to/your/matching/linux/source
  • 构建完成后重新加载模块:
sudo insmod net/openvswitch/openvswitch.ko

内容的提问来源于stack exchange,提问作者Cpp Code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 16:52:12