
Сборка модуля ядра привела к ошибке
Пропуск генерации 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/