Ubuntu 22.04 编译 Linux 5.16.5 内核报错:FAILED: load BTF from vmlinux: Invalid argument

这篇具有很好参考价值的文章主要介绍了Ubuntu 22.04 编译 Linux 5.16.5 内核报错:FAILED: load BTF from vmlinux: Invalid argument。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

Ubuntu22.04 自带内核版本是5.15,今日想编译一个高版本的 5.16.5 内核,不料编译却报错:

  CALL    scripts/checksyscalls.sh
  CALL    scripts/atomic/check-atomics.sh
  DESCEND objtool

  DESCEND bpf/resolve_btfids
  CHK     include/generated/compile.h
  CHK     kernel/kheaders_data.tar.xz
  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  AR      init/built-in.a
  LD      vmlinux.o
  MODPOST vmlinux.symvers
  MODINFO modules.builtin.modinfo
  GEN     modules.builtin
  LD      .tmp_vmlinux.btf
  BTF     .btf.vmlinux.bin.o
  LD      .tmp_vmlinux.kallsyms1
  KSYMS   .tmp_vmlinux.kallsyms1.S
  AS      .tmp_vmlinux.kallsyms1.S
  LD      .tmp_vmlinux.kallsyms2
  KSYMS   .tmp_vmlinux.kallsyms2.S
  AS      .tmp_vmlinux.kallsyms2.S
  LD      vmlinux
  BTFIDS  vmlinux
FAILED: load BTF from vmlinux: Invalid argument
make: *** [Makefile:1161: vmlinux] Error 255
make: *** Deleting file 'vmlinux'

网上搜了下说要将 .config 配置文件中 CONFIG_DEBUG_INFO_BTF=y 改为 CONFIG_DEBUG_INFO_BTF=n。这样编译就不会报错。但是我想要开启这个选项【和ebpf相关的选项】,进一步搜索发现是由于 pahole 这个程序版本太高导致,当前版本是 1.25.

pahole --version
v1.25

解决办法

修改内核源码目录 scripts/pahole-flags.sh 脚本,添加如下几行 shell 代码:

if [ "${pahole_ver}" -ge "124" ]; then
       # see PAHOLE_HAS_LANG_EXCLUDE
       extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_enum64"
fi

问题解决。

参考:
https://lore.kernel.org/bpf/20220825171620.cioobudss6ovyrkc@altlinux.org/t/
https://bbs.archlinux.org/viewtopic.php?pid=2067555文章来源地址https://www.toymoban.com/news/detail-751936.html

到了这里,关于Ubuntu 22.04 编译 Linux 5.16.5 内核报错:FAILED: load BTF from vmlinux: Invalid argument的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu 22.04 搭建arm-linux-gcc交叉编译环境

    如果使用的是64位的Ubuntu系统,建议直接安装64位的arm-linux-gcc交叉编译器 下载地址: https://pan.baidu.com/s/14-lQpsXuEyCcHNHcTXcOyA 提取码: 55at 0. 注意在终端进行粘贴的操作为【Ctrl+shift+v】!! 把下载好的安装包移动到根目录下的tmp目录中(/tmp):在【其他位置】中的【计算机】中找

    2024年02月05日
    浏览(52)
  • Linux 之七 Ubuntu 22.04 配置内核版本、GRUB 引导、远程桌面、包后缀(-dev、-dbg等)、Ubuntu 阶段更新

      前段时间重新安装了 Ubuntu 22.04 LTS,安装后没有显示 GRUB 引导页面(默认自动跳过),直接使用默认内核启动,而我需要变更一下默认的内核版本,特此记录一下修改过程。   Ubuntu 中安装其他版本的内核非常简单,内核其实就是相当于一个软件(DEB 包),安装方式与

    2024年02月12日
    浏览(32)
  • Ubuntu22.04内核升级

            第二句代码运行出来有一堆内核,我是选择linux-image-X.X.X-X-generic 格式的。比如我选择的是最新的linux-image-6.2.0-26-generic          更新内核要把所有相关的都更新了,不然到了引导界面,进不了系统,只能进旧版本内核系统。         请参考文章: https://blog

    2024年02月06日
    浏览(32)
  • Linux 之十八 Ubuntu 22.04 配置内核版本、GRUB 引导、远程桌面、包后缀(-dev、-dbg等)、Ubuntu 阶段更新

      前段时间重新安装了 Ubuntu 22.04 LTS,安装后没有显示 GRUB 引导页面(默认自动跳过),直接使用默认内核启动,而我需要变更一下默认的内核版本,特此记录一下修改过程。   Ubuntu 中安装其他版本的内核非常简单,内核其实就是相当于一个软件(DEB 包),安装方式与

    2024年02月07日
    浏览(44)
  • 【ubuntu|内核】ubuntu 22.04修改内核为指定版本

    every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=blog ubuntu 22.04 安装指定内核 查看已安装的内核镜像 安装镜像 安装内核头文件 安装内核模块 安装驱动 出现问题修复: 检查是否安装成功 安装完成后修改配置 找到GRUB_DEFAULT=0,修改为: 保存退出后:

    2024年02月04日
    浏览(35)
  • ubuntu22.04安装ROS报错curl: (7) Failed to connect to raw.githubusercontent.com port 443: 拒绝连接

    ubuntu22.04安装ros时在执行下面命令时报错: 报错: curl: (7) Failed to connect to raw.githubusercontent.com port 443: 拒绝连接 同时执行后面命令 sudo apt update 的时候,同时报错: 解决办法: 1、在网站https://www.ipaddress.com中搜索raw.githubusercontent.com的IP地址,把找到的IP地址复制到host文件;

    2024年02月04日
    浏览(36)
  • Ubuntu安装腾讯会议——Ubuntu16.04/18.04/20.04/22.04

    通过以下教程可以快速的安装腾讯会议,本教程适用于Ubuntu16.04/18.04/20.04/22.04 进入腾讯会议下载官网下载腾讯会议Linux客户端 选择x86_64格式安装包下载 双击deb文件,点击install进行安装 安装成功,可以成功运行

    2024年02月12日
    浏览(53)
  • Ubuntu官方安装微信——Ubuntu16.04/18.04/20.04/22.04

    通过以下教程可以快速的安装官方版微信,本教程适用于Ubuntu16.04/18.04/20.04/22.04 进入微信下载官网下载微信Linux客户端 点击64位下载即可,如果不能下载,使用终端如下命令 双击deb文件,点击install进行安装 安装成功,可以在菜单中点击运行

    2024年02月08日
    浏览(34)
  • Ubuntu 22.04 更新完内核重启卡在 grub 命令行解决办法

    升级内核过程中出现如下警告,然后重启引导失败: Warning: os-prober will not be executed to detect other bootable partitions 屏幕内容如下: 因为卡在 Grub 2 命令行界面,我们需要手动输命令引导。 一般情况只需要输入 normal 并回车,就能像往常一样正常启动。 如果报不认识该命令,那就

    2024年02月08日
    浏览(38)
  • ubuntu22.04编译安装使用gstreamer指南

    ubuntu发行版22.04,该发行版内置Gstreamer1.20.1,gstreamer源码最新版本为1.20.3,差距不大 下载gstreamer源码 安装git 下载gstreamer 安装meson gstreamer1.60以后(不包含1.60),使用meson+ninja来构建 安装glib gstreamer是基于glib-gobject来实现的 安装libsoup 安装libunwind 安装libdw 安装g-ir-scanner 系统中

    2024年02月05日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包