由于 Ubuntu 21.04 上没有 vmlinux,因此跳过 BTF 生成 xxx。

由于 Ubuntu 21.04 上没有 vmlinux,因此跳过 BTF 生成 xxx。

内核模块构建导致错误

由于 vmlinux 不可用,跳过 BTF 生成 [我的模块名称]。

此操作在我之前的 Ubuntu 20.10 版本(内核为 5.8.0.55*)中运行良好。我最近更新到了 Ubuntu 版本 21.04——我的内核模块构建出现了此错误。

答案1

这在 ubuntu 22.04 上对我有用。我不再收到“跳过 BTF 生成...”错误。

apt install dwarves
cp /sys/kernel/btf/vmlinux /usr/lib/modules/`uname -r`/build/

当然,你首先要检查你的 vmlinux 确实在/sys/kernel/btf

答案2

好的,这就是答案。

之前,我的 Ubuntu 21.10 下的任何虚拟机启动都失败了。从 VMWare 的角度来看,问题是

Could not open /dev/vmmon: No such file or directory.

请确保内核模块‘vmmon’已加载。

vmnet并且)

此命令:sudo vmware-modconfig --console --install-all出现此错误(现在仍然如此!)

Skipping BTF generation for /tmp/modconfig-9O1P2c/vmmon-only/vmmon.ko due to unavailability of vmlinux

解决方案

  • 在我的情况中,我将虚拟机从 Windows 平台转移到安装了安全启动的 Ubuntu 笔记本电脑

  • 虽然上述编译并不完美,但它确实创建了必要的二进制文件,但由于它们未签名,因此无法在 Ubuntu 启动时加载

  • 因此我收到了 BTF 错误消息,我认为该消息阻止了 VMNware 启动,但我错了。

  • 此链接 https://github.com/mkubecek/vmware-host-modules/issues/87#issuecomment-800051833 解释签署二进制文件所需的折磨

    # generate a key
    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VMware/"
    # import to UEFI database
    sudo mokutil --import MOK.der     (generate a password need next step)
    # reboot system and import in UEFI BIOS
    # (use same password)
    sudo shutdown -r now
    
    # once rebooted need to sign the binaries
    sudo kmodsign sha256 ./MOK.priv ./MOK.der $(modinfo -n vmmon)
    
    sudo kmodsign sha256 ./MOK.priv ./MOK.der $(modinfo -n vmnet)
    # on reboot new signed binaries used
    sudo shutdown -r now
    # now good to start VMware and use any VM
    
  • 一旦 UEFI BIOS 被通知,并且驱动程序二进制文件被签名,那么 VMware 就可以正常运行,世界又被拯救了


因此,我并没有完全解决编译问题,但似乎我将此错误消息与 VMware 无法运行混为一谈,这是错误的。

答案3

他们改变了文件“vmlinux.xz”的位置

尝试ln -sf /usr/lib/modules/$(uname -r)/vmlinux.xz /boot/

以下是 Reddit 上的一篇帖子,其中详细介绍了这一点

相关内容