Instalando o VMware no 18.04: falha ao compilar o vmmon

10

Estou tentando instalar o VMware com as instruções em https://help.ubuntu.com/community/VMware/Player

Eu recebo um erro que me diz para procurar em um arquivo de log, que contém:

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.

Para descobrir exatamente o que estava errado, executei vmware-modconfig --console --install-alla linha de comando e ela revelou os seguintes erros:

./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

Como consertá-lo ou fazer com que a declaração implícita de função e o tipo de ponteiro incompatível não sejam considerados errros?
Ou algum método mais fácil de instalar o VMware mais recente no 18.04?

Nota: Erro diferente do VMWare Workstation Pro 12 no Ubuntu 16.04 não pode compilar o vmmon

Nicolas Raoul
fonte
você pode tentar as soluções aqui
ptetteh227

Respostas:

6

Instale a versão mais recente 14.1.2 . O bug foi corrigido. Veja aqui . Aqui está o link para download.

Michael
fonte
15

Encontrei uma solução e criei um arquivo de script com base nas fontes do github do mkucebek .

Você deve criar um arquivo com este conteúdo e executá-lo sempre que necessário (geralmente quando você instala um novo kernel):

#!/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

Depois, basta iniciar o VMware Workstation sem criar módulos.

Charly
fonte
Oi Charly, seja bem-vindo ao askubuntu! Por favor, adicione os links em sua próxima postagem.
abu_bua
Incompatibilidade de versão com o módulo vmmon: esperando 329.0, obteve 309.0. Você tem uma versão incorreta do módulo do kernel 'vmmon'. Tente reinstalar a estação de trabalho VMware.
Altagir #
1
Esta solução funcionou perfeitamente para mim no Ubuntu 19.04 e Workstation 15.0.4
Lukas Bradley
Eu tive o mesmo problema com o 'VMware Workstation 15.0.4', resolvido com compilar e instalar 'vmware-host-modules' Se você estiver usando outra versão do VMWare, descubra a versão apropriada com git branch -ae faça o check-out com git checkout. remover, vincular libz.so.1e reiniciar o serviço vmware não é necessário para mim.
soroosh
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

Isso funciona para o meu no Fedora 30 e Workstation 15.1.0

Raul Peñaloza
fonte
1
Você pode adicionar mais alguns detalhes sobre o que o script está fazendo e como?
Simon Sudler
é a mesma versão do script mostrou obove, mas "detectar" a versão instalada do VMware Workstation
Raul Peñaloza
trabalhou para openSuSE Tumbleweed
blissini 16/09/19