跳過 BTF 第 xxx 代。由於 vmlinux 在 Ubuntu 21.04 上不可用

跳過 BTF 第 xxx 代。由於 vmlinux 在 Ubuntu 21.04 上不可用

內核模組建構導致錯誤

由於 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 帖子,其中有更詳細的信息

相關內容