Menginstal VMware pada 18.04: Gagal membangun vmmon

10

Saya mencoba menginstal VMware dengan instruksi di https://help.ubuntu.com/community/VMware/Player

Saya mendapatkan kesalahan yang memberitahu saya untuk melihat file log, yang berisi:

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.

Untuk mencari tahu apa yang salah sebenarnya, saya berlari vmware-modconfig --console --install-alldi baris perintah, dan itu mengungkapkan kesalahan ini:

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

Bagaimana cara memperbaikinya, atau membuat deklarasi fungsi-implisit dan tipe-pointer-kompatibel tidak dianggap sebagai errros?
Atau metode yang lebih mudah untuk menginstal VMware terbaru pada 18.04?

Catatan: Kesalahan berbeda dari VMWare Workstation Pro 12 di Ubuntu 16.04 tidak dapat mengkompilasi vmmon

Nicolas Raoul
sumber
Anda bisa mencoba solusinya di sini
ptetteh227

Jawaban:

6

Instal versi terbaru 14.1.2 . Bug telah diperbaiki. Lihat di sini . Ini tautan unduh.

Michael
sumber
15

Saya menemukan solusi dan membuat file skrip berdasarkan sumber github mkucebek .

Anda harus membuat file dengan konten ini dan menjalankannya setiap kali diperlukan (Biasanya ketika Anda menginstal kernel baru):

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

Kemudian, Anda hanya perlu meluncurkan VMware Workstation tanpa membangun modul.

Charly
sumber
Hai Charly, selamat datang di askubuntu! Silakan tambahkan tautan di posting Anda selanjutnya.
abu_bua
Ketidakcocokan versi dengan modul vmmon: mengharapkan 329.0, mendapat 309.0. Anda memiliki versi yang salah dari modul kernel 'vmmon'. Coba instal ulang VMware Workstation.
altagir
1
Solusi ini bekerja dengan baik untuk saya di Ubuntu 19.04 dan Workstation 15.0.4
Lukas Bradley
Saya mendapat masalah yang sama dengan 'VMware Workstation 15.0.4', diselesaikan dengan kompilasi dan instal 'vmware-host-modules' Jika Anda menggunakan versi lain VMWare, cari tahu versi yang sesuai dengannya git branch -a, dan checkout git checkout. menghapus dan menautkan libz.so.1serta memulai kembali layanan vmware tidak diperlukan untuk saya.
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

Ini berfungsi untuk saya di Fedora 30 dan Workstation 15.1.0

Raul Peñaloza
sumber
1
Bisakah Anda menambahkan beberapa detail lebih lanjut tentang apa yang dilakukan dan cara skrip?
Simon Sudler
ini adalah versi yang sama dari skrip yang ditampilkan di atas, tetapi "mendeteksi" versi yang diinstal dari vmware workstation
Raul Peñaloza
bekerja untuk openSuSE Tumbleweed
blissini