VMware Workstation vmmon unter Ubuntu 18.04 defekt

3224
user1330734

Ich habe ein Upgrade auf Ubuntu 18.04 durchgeführt und das vmmon.koModul für VMWare Workstation 12.5.9 kann jetzt nicht erstellt werden.

vmmon-Kompilierungsfehlerausgabe

/usr/lib/vmware/modules/source/vmmon-only/linux/driver.c: In function ‘LinuxDriverInitTSCkHz’: /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:268:22: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] tscTimer.function = LinuxDriverEstimateTSCkHzDeferred; ^ /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:270:12: error: ‘struct timer_list’ has no member named ‘data’ tscTimer.data = 0; ^ /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c: In function ‘init_module’: /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:312:4: error: implicit declaration of function ‘init_timer’; did you mean ‘init_timers’? [-Werror=implicit-function-declaration] init_timer(&linuxState.pollTimer); ^~~~~~~~~~ init_timers /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:313:24: error: ‘struct timer_list’ has no member named ‘data’ linuxState.pollTimer.data = 0; ^ /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:314:34: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] linuxState.pollTimer.function = LinuxDriverPollTimeout; 

Dies scheint eine kleine Änderung zu sein, die dazu führt, dass vmmon compile fehlschlägt. Möglicherweise haben sich die Datenstrukturen zwischen den Kernel-Versionen geändert.

Edit: Es scheint, dass in Linux Kernel v4.15 init_timer()Interface entfernt wurde

uname -a Linux hostnema 4.15.0-22-generic #24-Ubuntu SMP Wed May 16 12:15:17 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 

Irgendwelche Vorschläge, wie ich das Problem beheben könnte?

3

3 Antworten auf die Frage

2
Charly

Ich habe eine Lösung gefunden und eine Skriptdatei erstellt, die auf den Github-Quellen von mkucebek basiert.

Sie müssen eine Datei mit diesem Inhalt erstellen und jedes Mal ausführen, wenn sie benötigt wird:

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

Anschließend müssen Sie VMware Workstation nur starten, ohne Module zu erstellen.

1
NeoGeek

Mit Charlys vorgeschlagenem Skript konnte ich die benötigten Module für den Kernel 4.15.0-29-Generic auf 16.04 LTS erstellen. Es gibt einen Tippfehler am Ende des Skripts, es sollte keine Zeilenumbrüche zwischen sudo ln -s /lib/x86_64-linux-gnu/libz.so.1und geben/usr/lib/vmware/lib/libz.so.1/libz.so.1

Eine weitere Ergänzung, die ich empfehlen würde, ist das Hinzufügen eines sudo /etc/init.d/vmware restartBefehls am Ende des obigen Skripts.

Das eigentliche Lösungsskript mit Tweaks lautet also:

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

`` `

Entschuldigung, das ist kein Kommentar zu Charlys Antwort. Ich habe nicht den Ruf dieses Kontos.

Beachten Sie, dass dies nur für funktioniert Workstation 12.5.9. Sie können leicht feststellen, welche Version Sie verwenden, indem Sie ausführenvmware --version

Aktualisieren Sie einfach auf 4.15.0-32-generic und das funktioniert immer noch für mich. NeoGeek vor 6 Jahren 0
Puh, ich bin froh, dass ich das gefunden hatte - musste es nach einem Upgrade von Ubuntu 18.04 auf 4.15.0-34-generischen Kernel tun Kelly Adams vor 6 Jahren 0
0
James Dube

Auf Ubuntu 18.04 hatte ich dasselbe Problem bei einer neuen vmware-Installation (14.1.3 build-9474260) und nach einem Kernel-Update. Es scheint ein Problem beim Importieren von Modulen in den Kernel auf einer Maschine mit sicherem Start zu sein. Daher habe ich auf der Grundlage dieses Artikels dieses Bash-Skript erstellt:

#!/bin/bash sudo vmware-modconfig --console --install-all  echo "signing vmmon module" sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv  ./MOK.der $(modinfo -n vmmon)  echo "signing vmnet module" sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv  ./MOK.der $(modinfo -n vmnet)  echo "importing MOK cert" mokutil --import MOK.der