VMwareカーネルモジュールアップデーターを実行すると、次のメッセージが表示されます。
A compatible version of gcc was not found.
VMwareカーネルモジュールをコンパイルするようにGCCを設定するにはどうすればよいですか?
これで問題が解決することを願っています。
Kaliを最新の4.8.0-kali1-AMD64にアップグレードします。
cd /usr/lib/vmware/modules/source
tar xf vmmon.tar
tar xf vmnet.tar
cd vmmon-only
make
cd ../vmnet-only
make
cd ..
mkdir /lib/modules/`uname -r`/misc
cp vmmon.o /lib/modules/`uname -r`/misc/vmmon.ko
cp vmnet.o /lib/modules/`uname -r`/misc/vmnet.ko
depmod -a
/etc/init.d/vmware restart
Kaliの新しいビルドがあるたびに、これらの手順を再度実行する必要があります。
これには、基本的な開発ツールとライブラリをインストールする必要があります。 Debian派生(Ubuntu/Mint/Kali)を使用しているか、Red Hatベースのシステム(RHEL/CentOS)を使用しているかによって、インストールするコマンドは異なります。
Debianベース
apt-get install build-essential
Red Hatベース
yum groupinstall 'Development Tools'
補足として、VMwareツールと同じ機能を提供するopen-vm-toolsと呼ばれるパッケージがありますが、完全にオープンソースであり、より適切にサポートされています。
Kali Linux Rolling Editionを使用している場合は、gcc-5
にある/usr/bin
を参照して選択するか、場所フィールドに/usr/bin/gcc-5
と入力して[インストール]を押します。
以前のカーネルでは機能していたOgheneneovie Ralph Otutuがその答えに従いましたが、新しいカーネルでは機能しないようです。いくつかのエラーが発生したとき、カーネルvmware 12.5.9
で4.15.0-kali3-AMD64
のモジュールをコンパイルしようとしていました。
/usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:関数 'LinuxDriverInitTSCkHz': /usr/lib/vmware/modules/source/vmmon- only/linux/driver.c:268:22:エラー:互換性のないポインター型からの割り当て[-Werror = incompatible-pointer-types] tscTimer.function = LinuxDriverEstimateTSCkHzDeferred; ^ /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:270:12:エラー: 'struct timer_list'には 'data'という名前のメンバーがありません tscTimer.data = 0; ^ /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:関数 'init_module': /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:312:4:エラー:関数 'init_timer'の暗黙の宣言; 「init_timers」という意味ですか? [-Werror = implicit-function-declaration] init_timer(&linuxState.pollTimer); ^ ~~~~~~~~~ ...
どうやらLinuxカーネルの変更により、VMwareモジュールのソースに互換性がなくなりました。
これを機能させるために、私のバージョンのVMware用にパッチを当てたソースファイルを https://github.com/mkubecek/vmware-Host-modules/branches からダウンロードし、Ogheneneovie Ralphの説明と同じ手順に従いましたOtutu、すなわち:
cd /usr/lib/vmware/modules/source wget https://github.com/mkubecek/vmware-Host-modules/archive/player-12.5.9 .Zip unzip player-12.5.9.Zip cd vmware-Host-modules-player-12.5.9/vmmon-only / make cd ../vmnet-only/ make cd .. mkdir/lib/modules/`uname -r`/misc cp vmmon.o/lib/modules /` uname -r`/misc/vmmon.ko cp vmnet.o/lib/modules/`uname -r`/misc/vmnet.ko depmod -a /etc/init.d/vmware restart
おそらくgccがインストールされていません。
ちょうどこれを試してください:
gcc --version
おそらく、gccコマンドがインストールされていないか、そのようなものになります。
解決?シンプル!
apt-get update
apt-get install gcc
Gccがない場合は、makeもインストールされていないという良い変更があります。
apt-get install make
その後、VMwareツールのインストールを再実行します。
これは非常に厄介なハックですが、ここに私がGCCの必要なバージョン(この場合は8.3.1)を取得するために行ったことを示します。現在9.xがインストールされているFedora 30を使用しています。これはrightの方法ではないと確信していますが、適切なバージョンのGCCを取得するためのより良い方法を知りませんでした。
docker run --rm -it Fedora:29 bash
dnf install @development-tools
docker cp {containerid}:/usr/ {some_folder_on_my_machine}
。実行中のコンテナをdocker ps -a
で確認して、コンテナIDを見つけることができます。これは、Sudo
で行う必要がある場合があります。Sudo
を使用する必要があった場合は、新しくコピーしたフォルダーSudo chown -R {user}:{user} {the_folder}
の所有権を取得します{the_folder}/bin/gcc