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(¤t->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(¤t->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(¤t->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(¤t->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は動作したので、こちらを使うことで問題を回避しています。