
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 vmnet
auch)
Dieser Befehl sudo vmware-modconfig --console --install-all
hat 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/