web-dev-qa-db-fra.com

Installation de VMware sur 18.04: échec de la construction de vmmon

J'essaie d'installer VMware avec les instructions à l'adresse https://help.ubuntu.com/community/VMware/Player

Je reçois une erreur qui me dit de regarder dans un fichier journal, qui contient:

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.

Pour comprendre ce qui n'allait pas exactement, j'ai exécuté vmware-modconfig --console --install-all sur la ligne de commande, ce qui a révélé les erreurs suivantes:

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

Comment résoudre ce problème ou faire en sorte que les types de déclaration de fonction implicite et de pointeur incompatible ne soient pas considérés comme des erreurs?
Ou une méthode plus simple pour installer la dernière version de VMware le 18.04?

Remarque: Erreur différente de VMWare Workstation Pro 12 sur Ubuntu 16.04 ne peut pas compiler vmmon

5
Nicolas Raoul

Installez la dernière version 14.1.2 . Le bug a été corrigé. Voir ici . Ici est le lien de téléchargement.

5
Michael

J'ai trouvé une solution et créé un fichier de script basé sur les sources de github de mkucebek .

Vous devez créer un fichier avec ce contenu et l'exécuter à chaque fois que vous en avez besoin (généralement lorsque vous installez un nouveau noyau):

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

Ensuite, il vous suffit de lancer VMware Workstation sans créer de modules.

7
Charly
#!/bin/bash
VMWARE_VERSION=`vmware-installer -l |grep workstat|awk 'BEGIN {FS="."}{gsub("   ","-",$1)}END{print $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

Cela fonctionne pour mon sur Fedora 30 et Workstation 15.1.0

0
Raul Peñaloza