Skip to content

Instantly share code, notes, and snippets.

@YPermitin
Last active October 2, 2024 07:03
Show Gist options
  • Save YPermitin/9554d8a14d68b553eb8dea409e681d46 to your computer and use it in GitHub Desktop.
Save YPermitin/9554d8a14d68b553eb8dea409e681d46 to your computer and use it in GitHub Desktop.
Решение проблемы с установкой модулей VMWare Workstation на Ubuntu 22.04

Решение проблемы с установкой модулей VMWare Workstation на Ubuntu 22.04

Описание решения ошибок при установке модулей 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=Release
The host is 64-bit.
Host codepage=UTF-8 encoding=UTF-8
Host 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 constant
    67 |    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] Ошибка 1
 make[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] Ошибка 1
 In 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ček
git 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-only
tar -cf vmmon.tar vmmon-only
# И заменяем старые архивы на новые
mv vmnet.tar /usr/lib/vmware/modules/source/
mv vmmon.tar /usr/lib/vmware/modules/source/
# Повторно делаем установку модулей VMWare Workstation
vmware-modconfig --console --install-all

После этого VMWare Workstation будет успешно запущен.

Не забываем, что команды нужно вводить с соответствующими привилегиями.

Полезные ссылки

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment