Ubuntu 21.04 では vmlinux が利用できないため、BTF 生成 xxx をスキップします。

Ubuntu 21.04 では vmlinux が利用できないため、BTF 生成 xxx をスキップします。

カーネルモジュールのビルドでエラーが発生しました

vmlinux が利用できないため、BTF 生成 [私のモジュール名] をスキップします。

この操作は、カーネル 5.8.0.55* を搭載した以前の Ubuntu バージョン 20.10 では正常に動作しました。最近、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の投稿はこちら

関連情報