use*_*734 6 linux vmware-workstation c ubuntu kernel-module
我升级到 Ubuntu 18.04,vmmon.ko现在无法构建 VMWare Workstation 12.5.9的模块。
/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;
Run Code Online (Sandbox Code Playgroud)
这似乎是一个导致 vmmon 编译失败的小改动,可能是内核版本之间的数据结构发生了变化?
编辑:似乎在 Linux 内核 v4.15init_timer()接口已被删除
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
Run Code Online (Sandbox Code Playgroud)
关于如何开始解决这个问题的任何建议?
小智 6
我找到了一个解决方案并基于 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
make
sudo make install
sudo rm /usr/lib/vmware/lib/libz.so.1/libz.so.1
sudo ln -sv /lib/x86_64-linux-gnu/libz.so.1 /usr/lib/vmware/lib/libz.so.1/libz.so.1
sudo /etc/init.d/vmware restart
Run Code Online (Sandbox Code Playgroud)
然后,您只需启动 VMware Workstation,无需构建模块。
| 归档时间: |
|
| 查看次数: |
17758 次 |
| 最近记录: |