https://help.ubuntu.com/community/VMware/Player の手順でVMwareをインストールしようとしています
次を含むログファイルを調べるように指示するエラーが表示されます。
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.
何が間違っていたのかを正確に把握するために、コマンドラインでvmware-modconfig --console --install-all
を実行すると、次のエラーが明らかになりました。
./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
それを修正する方法、または暗黙的な関数宣言と互換性のないポインタ型をエラーと見なさないようにする方法は?
または18.04に最新のVMwareをインストールする簡単な方法はありますか?
注:Ubuntu 16.04上の VMWare Workstation Pro 12とは異なるエラーは、vmmon をコンパイルできません
ソリューションを見つけて、 mkucebekのgithub sources に基づいてスクリプトファイルを作成しました。
このコンテンツでファイルを作成し、必要になるたびに実行する必要があります(通常、新しいカーネルをインストールするとき)。
#!/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
次に、モジュールを構築せずにVMware Workstationを起動するだけです。
#!/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
これはFedora 30およびWorkstation 15.1.0で動作します