BTF-Generierung xxx wird übersprungen. Aufgrund der Nichtverfügbarkeit von vmlinux unter Ubuntu 21.04

BTF-Generierung xxx wird übersprungen. Aufgrund der Nichtverfügbarkeit von vmlinux unter Ubuntu 21.04

Beim Erstellen des Kernelmoduls ist ein Fehler aufgetreten

BTF-Generierung [mein Modulname] wird übersprungen, da vmlinux nicht verfügbar ist.

Dieser Vorgang funktionierte in meiner vorherigen Version 20.10 von Ubuntu mit Kernel 5.8.0.55* einwandfrei. Ich habe kürzlich auf Ubuntu Version 21.04 aktualisiert – und mein Kernelmodul-Build hat diesen Fehler ausgegeben.

Antwort1

Bei mir hat das unter Ubuntu 22.04 funktioniert. Ich erhalte nicht mehr die Fehlermeldung „BTF-Generierung wird übersprungen …“.

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

Natürlich müssen Sie zuerst überprüfen, ob Ihr vmlinux tatsächlich in ist /sys/kernel/btf.

Antwort2

OK, das ist so ungefähr die Antwort.

Bisher schlug der Start einer virtuellen Maschine unter Ubuntu 21.10 fehl. Das Problem aus Sicht von VMWare war

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

Bitte stellen Sie sicher, dass das Kernelmodul „vmmon“ geladen ist.

(und vmnetauch)

Dieser Befehl sudo vmware-modconfig --console --install-allhat diesen Fehler ausgegeben (und tut dies immer noch!)

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

LÖSUNG

  • In meiner Situation habe ich eine virtuelle Maschine von einer Windows-Plattform auf einen Ubuntu-Laptop verschoben, auf dem Secure Boot installiert war.

  • Obwohl die obige Kompilierung nicht perfekt war, wurden die erforderlichen Binärdateien erstellt. Da sie jedoch nicht signiert sind, können sie beim Booten von Ubuntu nicht geladen werden.

  • Ich habe also die BTF-Fehlermeldungen bekommen, von denen ich dachte, dass sie den Start von VMNware verhindern würden, aber ich lag falsch.

  • Dieser Link https://github.com/mkubecek/vmware-host-modules/issues/87#issuecomment-800051833 erklärt die Folter, die notwendig ist, um die Binärdateien zu signieren

    # 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
    
  • Sobald das UEFI-BIOS informiert und die Treiber-Binärdateien signiert sind, kann VMware einwandfrei funktionieren und die Welt ist wieder gerettet


Ich habe das Kompilierungsproblem also nicht vollständig behoben, aber anscheinend habe ich diese Fehlermeldung mit der Unfähigkeit von VMware verwechselt, zu laufen, was falsch war.

Antwort3

Sie haben den Speicherort der Datei 'vmlinux.xz' geändert.

versuchenln -sf /usr/lib/modules/$(uname -r)/vmlinux.xz /boot/

Hier ist ein Reddit-Beitrag, der etwas detaillierter ist

verwandte Informationen