Пропуск поколения BTF xxx. из-за недоступности vmlinux на Ubuntu 21.04

Пропуск поколения BTF xxx. из-за недоступности vmlinux на Ubuntu 21.04

Сборка модуля ядра привела к ошибке

Пропуск генерации BTF [имя моего модуля] из-за недоступности vmlinux.

Эта операция работала нормально в моей предыдущей версии 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, в котором все более подробно описано

Связанный контент