カテゴリー
Computer Linux

Fedora 24 と VMware Workstation 12 Pro

(Last Updated On: 2018/08/04)

Fedora 24にアップグレードしたところ、予想通りVMware Workstation 11が動かなくなりました。以下のようにして動作させることができました。

F26の場合はこちら:Fedora 26でVMware Workstationを利用する方法

環境

  • Fedora 24 64bit
  • VMware Workstation 12 Pro  (Workstation 11からアップグレード)

 

vmmon.tarとvmnet.tarの修正

VMware Workstation 12 ProのモジュールはKernel 4.6に対応していないようなので、以下のパッチが必要です。

/usr/lib/vmware/modules/source  の vmmon.tar と vmnet.tar の内容を修正する(tarを展開して以下のパッチを当てて、*.tarを作り直す)

vmmon.tar (vmnet-onlyディレクトリ)へのパッチ

[root@dev source]# diff -ur vmmon-only.orig/ vmmon-only
diff -ur vmmon-only.orig/linux/hostif.c vmmon-only/linux/hostif.c
--- vmmon-only.orig/linux/hostif.c 2016-04-15 08:48:44.000000000 +0900
+++ vmmon-only/linux/hostif.c 2016-07-11 13:18:53.184350724 +0900
@@ -1162,7 +1162,7 @@
 int retval;
 
 down_read(&current->mm->mmap_sem);
- retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
+ retval = get_user_pages_remote(current, current->mm, (unsigned long)uvAddr,
 numPages, 0, 0, ppages, NULL);
 up_read(&current->mm->mmap_sem);

vmnet.tar(vmnet-onlyディレクトリ)へのパッチ

[root@dev source]# diff -ur vmnet-only.orig vmnet-only
diff -ur vmnet-only.orig/netif.c vmnet-only/netif.c
--- vmnet-only.orig/netif.c 2016-04-15 08:48:47.000000000 +0900
+++ vmnet-only/netif.c 2016-09-05 10:29:28.997624682 +0900
@@ -465,7 +465,7 @@
 VNetSend(&netIf->port.jack, skb);
 
 netIf->stats.tx_packets++;
- dev->trans_start = jiffies;
+ netif_trans_update(dev);
 
 return 0;
 }
diff -ur vmnet-only.orig/userif.c vmnet-only/userif.c
--- vmnet-only.orig/userif.c 2016-04-15 08:48:47.000000000 +0900
+++ vmnet-only/userif.c 2016-09-05 10:28:41.981851991 +0900
@@ -113,7 +113,7 @@
 int retval;
 
 down_read(&current->mm->mmap_sem);
- retval = get_user_pages(current, current->mm, addr,
+ retval = get_user_pages_remote(current, current->mm, addr,
 1, 1, 0, &page, NULL);
 up_read(&current->mm->mmap_sem);
 

追記:Kernel 4.7にアップグレードしたところ、追加のパッチが必要でした。’s/dev->trans_start = jiffies/netif_trans_update(dev)/g’

 

*.tarファイルを更新したら以下のコマンドを実行

dnf install kernel-headers kernel-devel gcc glibc-headers  
vmware-modconfig --console --install-all

 

利用するglibライブラリの調整

glibライブラリのリンクができないようでした。vmwareと強制的にリンクさせるライブラリをvmwareのディレクトリにコピーします。

cd /usr/lib/vmware/lib
cp -afv /usr/lib64/libgio-2.0.so.0.4800.* libglib-2.0.so.0/libglib-2.0.so.0
cp -afv /usr/lib64/libglib-2.0.so.0.4800.* libglib-2.0.so.0/libglib-2.0.so.0
cp -afv /usr/lib64/libgmodule-2.0.so.0.4800.* libgmodule-2.0.so.0/libgmodule-2.0.so.0
cp -afv /usr/lib64/libgobject-2.0.so.0.4800.* libgobject-2.0.so.0/libgobject-2.0.so.0
cp -afv /usr/lib64/libgthread-2.0.so.0.4800.* libgthread-2.0.so.0/libgthread-2.0.so.0

追記:最新(2016/9/5)のFedora 24ではライブラリのバージョンアップでファイル名が変わっていたので修正。

これらのライブラリが無い場合、dnfコマンドでパッケージをインストールしてください。

dnf install glib2

 

VMware Workstationの起動

起動する場合、VMWARE_USE_SHIPPED_LIBS環境変数をforceに設定します。

VMWARE_USE_SHIPPED_LIBS=force vmware

これでVMware Workstationが使えるようになるはずです。

 

おまけ

Fedora 24からDBusのセッションが共有される仕様に変更され、その影響でDBusセッションを読もうとするアプリが起動しないことがあります。

https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=1353953

私の環境の場合、gnome-terminalが動きませんでした。Terminatorは動作したので、こちらを使うことで問題を回避しています。