Установка VMware 18.04: не удалось собрать vmmon


10

Я пытаюсь установить VMware с инструкциями по адресу https://help.ubuntu.com/community/VMware/Player.

Я получаю сообщение об ошибке, которое говорит мне, чтобы посмотреть в файл журнала, который содержит:

Extracting the vmmon source from "/usr/lib/vmware/modules/source/vmmon.tar".
Successfully extracted the vmmon source.
Building module with command "/usr/bin/make -j4 -C /tmp/modconfig-GoVdrH/vmmon-only auto-build HEADER_DIR=/lib/modules/4.15.0-22-generic/build/include CC=/usr/bin/gcc IS_GCC_3=no"
Failed to build vmmon.  Failed to execute the build command.

Чтобы выяснить, что именно было не так, я запустил vmware-modconfig --console --install-allкомандную строку, и она выявила следующие ошибки:

./arch/x86/include/asm/processor-flags.h:39:0: note: this is the location of the previous definition
 #define CR3_PCID_MASK 0xFFFull

                      ^
/tmp/modconfig-3S1CBa/vmmon-only/linux/driver.c:256:12: error: ‘struct timer_list’ has no member named ‘data’
    tscTimer.data     = 0;
    unsigned int lockedPages = global_page_state(NR_PAGETABLE) +
                               ^~~~~~~~~~~~~~~~~
                               global_numa_state
/tmp/modconfig-3S1CBa/vmmon-only/linux/driver.c: In function ‘init_module’:
/tmp/modconfig-3S1CBa/vmmon-only/linux/driver.c:338:4: error: implicit declaration of function ‘init_timer’; did you mean ‘init_timers’? [-Werror=implicit-function-declaration]
    init_timer(&tscTimer);
    ^~~~~~~~~~
    init_timers
/tmp/modconfig-3S1CBa/vmmon-only/linux/hostif.c: In function ‘HostIF_InitUptime’:
    init_timers
/tmp/modconfig-3S1CBa/vmmon-only/linux/hostif.c:1754:31: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
    uptimeState.timer.function = HostIFUptimeResyncMono;
 LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
 ^~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
cc1: some warnings being treated as errors
scripts/Makefile.build:332: recipe for target '/tmp/modconfig-3S1CBa/vmmon-only/linux/hostif.o' failed
make[2]: *** [/tmp/modconfig-3S1CBa/vmmon-only/linux/hostif.o] Error 1
Makefile:110: recipe for target 'vmmon.ko' failed
make: *** [vmmon.ko] Error 2

Как это исправить или сделать так, чтобы неявные объявления-функции и несовместимые-указатели-типы не рассматривались как ошибки?
Или какой-нибудь более простой способ установить последнюю версию VMware на 18.04?

Примечание: отличающаяся от VMWare Workstation Pro 12 ошибка в Ubuntu 16.04 не может скомпилировать vmmon


Вы можете попробовать решения здесь
ptetteh227

Ответы:



15

Я нашел решение и создал файл сценария на основе исходников mkucebek на github .

Вы должны создать файл с этим содержимым и запускать его каждый раз, когда это необходимо (обычно при установке нового ядра):

#!/bin/bash
VMWARE_VERSION=workstation-12.5.9
TMP_FOLDER=/tmp/patch-vmware
rm -fdr $TMP_FOLDER
mkdir -p $TMP_FOLDER
cd $TMP_FOLDER
git clone https://github.com/mkubecek/vmware-host-modules.git
cd $TMP_FOLDER/vmware-host-modules
git checkout $VMWARE_VERSION
git fetch
make
sudo make install
sudo rm /usr/lib/vmware/lib/libz.so.1/libz.so.1
sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 
/usr/lib/vmware/lib/libz.so.1/libz.so.1
sudo /etc/init.d/vmware restart

Затем вам просто нужно запустить VMware Workstation без сборки модулей.


Привет, Чарли, добро пожаловать в askubuntu! Пожалуйста, добавьте ссылки в вашем следующем посте.
abu_bua

Несоответствие версий с модулем vmmon: ожидается 329,0, получено 309,0. У вас неверная версия модуля ядра 'vmmon'. Попробуйте переустановить VMware Workstation.
Альтагир

1
Это решение отлично сработало для меня на Ubuntu 19.04 и Workstation 15.0.4
Лукас Брэдли

У меня возникла та же проблема с «VMware Workstation 15.0.4», решенная с помощью компиляции и установки «vmware-host-modules». Если вы используете другую версию VMWare, найдите подходящую версию с помощью git branch -aи извлеките с помощью git checkout. удаление и ссылка libz.so.1и перезапуск службы VMware для меня не требуется.
сороошь

3
#!/bin/bash
VMWARE_VERSION=`vmware-installer -l |grep workstat|awk '{print $2}' |awk 'BEGIN {FS="."}{print "workstation-"$1"."$2"."$3}'`
echo $VMWARE_VERSION
TMP_FOLDER=/tmp/patch-vmware
rm -fdr $TMP_FOLDER
mkdir -p $TMP_FOLDER
cd $TMP_FOLDER
git clone https://github.com/mkubecek/vmware-host-modules.git
cd $TMP_FOLDER/vmware-host-modules
git checkout $VMWARE_VERSION
git fetch
make
sudo make install
sudo rm /usr/lib/vmware/lib/libz.so.1/libz.so.1
sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 
/usr/lib/vmware/lib/libz.so.1/libz.so.1
sudo /etc/init.d/vmware restart

Это работает для меня на Fedora 30 и Workstation 15.1.0


1
Можете ли вы добавить более подробную информацию о том, что делает сценарий и как он работает?
Саймон Sudler

это та же версия скрипта, показанная выше, но «обнаруженная» установленная версия рабочей станции vmware
Рауль Пеньалоза,

работал на openSuSE Tumbleweed
blissini
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.