Решение проблем с модулями VMware в Ubuntu 22.04
#DevOps
#*.nix
#Linux
#VMWare
#решение
#проблемы
Кто долго раздумывает, не всегда находит лучшее решение.
(с) Иоганн Вольфганг Гёте
Описание решения ошибок при установке модулей VMWare Workstation на Ubuntu 22.04 после обновления ядра или при начальной установке.
Содержание
Описание проблемы
При попытке установки модулей VMWare Workstation могут возникнуть ошибки вида:
Unable to install all modules
В логах установщика содержиться подобная информация:
Log for VMware Workstation pid=4915 version=16.2.4 build=build-19376536 option=ReleaseThe host is 64-bit.Host codepage=UTF-8 encoding=UTF-8Host is Linux 5.15.0-25-generic Ubuntu 22.04 LTS Ubuntu 22.04 LTS 22.04.........Using kernel build system./tmp/modconfig-Xivrap/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Free() falls through to next function PhysTrack_Add()/tmp/modconfig-Xivrap/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Add() falls through to next function PhysTrack_Remove()/tmp/modconfig-Xivrap/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Remove() falls through to next function PhysTrack_Test()In file included from /tmp/modconfig-Xivrap/vmmon-only/./include/x86desc.h:33,from /tmp/modconfig-Xivrap/vmmon-only/./include/modulecall.h:34,from /tmp/modconfig-Xivrap/vmmon-only/common/task.c:60:/tmp/modconfig-Xivrap/vmmon-only/common/task.c: In function ‘TaskRestoreHostGDTTRLDT’:/tmp/modconfig-Xivrap/vmmon-only/./include/vm_asm_x86.h:67:44: error: expression in static assertion is not constant67 | ASSERT_ON_COMPILE(sizeof(Selector) == 2 && | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~68 | ((__builtin_constant_p(expr) && ((expr) >> 16) == 0) || | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~69 | sizeof(expr) <= 2))| ~~~~~~~~~~~~~~~~~~...
Или могут быть ошибки такого вида (пример для русской локализации):
In file included from /tmp/modconfig-QkiJUD/vmmon-only/common/apic.c:19:/tmp/modconfig-QkiJUD/vmmon-only/./include/vm_basic_defs.h:54:12: fatal error: stddef.h: Нет такого файла или каталога54 | # include <stddef.h>| ^~~~~~~~~~compilation terminated.make[2]: *** [scripts/Makefile.build:257: /tmp/modconfig-QkiJUD/vmmon-only/common/apic.o] Ошибка 1make[2]: *** Ожидание завершения заданий…In file included from /tmp/modconfig-QkiJUD/vmmon-only/bootstrap/bootstrap.c:27:/tmp/modconfig-QkiJUD/vmmon-only/./include/vm_basic_defs.h:54:12: fatal error: stddef.h: Нет такого файла или каталога54 | # include <stddef.h>| ^~~~~~~~~~compilation terminated.make[2]: *** [scripts/Makefile.build:257: /tmp/modconfig-QkiJUD/vmmon-only/bootstrap/bootstrap.o] Ошибка 1In file included from /tmp/modconfig-QkiJUD/vmmon-only/./include/cpu_types.h:29,from /tmp/modconfig-QkiJUD/vmmon-only/./include/modulecall.h:33,from /tmp/modconfig-QkiJUD/vmmon-only/common/crosspage.c:57:/tmp/modconfig-QkiJUD/vmmon-only/./include/vm_basic_defs.h:54:12: fatal error: stddef.h: Нет такого файла или каталога54 | # include <stddef.h>| ^~~~~~~~~~compilation terminated.
Причина ошибки
Дистрибутив модулей ядра для VMWare Workstation, который поставлялся с установщиком программы, устарел и стал несовместимым с текущей версией ядра.
Как решить
Необходимо обновить модули до актуальной версии. Для этого нужно выполнить ряд команд:
# Переходим в каталог с исходными файлами модулейcd /usr/lib/vmware/modules/source# Клонируем публичный репозиторий модулей VMWare Workstation от Michal Kubečekgit clone https://github.com/mkubecek/vmware-host-modules# Переходим в каталог склонированного репозиторияcd vmware-host-modules# Переходим на ветку, в которой идет разработка для версии 16.2.4# (!!! Здесь можно указать версию, которая нужна Вам)git checkout workstation-16.2.4# Выполняем сборкуmake# Создаем архивы для модулейtar -cf vmnet.tar vmnet-onlytar -cf vmmon.tar vmmon-only# И заменяем старые архивы на новыеmv vmnet.tar /usr/lib/vmware/modules/source/mv vmmon.tar /usr/lib/vmware/modules/source/# Повторно делаем установку модулей VMWare Workstationvmware-modconfig --console --install-all
После этого VMWare Workstation будет успешно запущен.
Не забываем, что команды нужно вводить с соответствующими привилегиями.