Arch Linux, Kernel-4.7.0, gcc-6.1.1 で vmware Workstation 12.1.1 を動かす
はい、VMware workstation, VMware player を使っているとLinux のカーネルやGCCのバージョンが上がるたびにモジュールを書き換えるのが恒例行事となっています。
vmware の中の人も充分知っていると思うのですが…。
ググってみましたのですが、情報がまとまっていなかったり、日本語や英語じゃなかったりしたので、ちょっとまとめてみました。
手順が正しいかどうかわかりませんが、私が行った方法をご紹介します。
暇なチャレンジャーの方は追試してみてください。
よくわからんので、VMware Workstation 12 Pro for Linux 64-bit を再インストールしてみました
オフィシャルサイトからダウンロードしてきて、rootユーザで
chmod 755 VMware-Workstation-Full-12.1.1-3770994.x86_64.bundle
./VMware-Workstation-Full-12.1.1-3770994.x86_64.bundle
いつものモジュール改造
また、rootになって、
cd /usr/lib/vmware/modules/source
tar -xf vmnet.tar
tar -xf vmmon.tar
diffってみました。
hostif.patch
--- vmmon-only.old/linux/hostif.c 2016-08-17 23:27:30.139042733 +0900
+++ vmmon-only/linux/hostif.c 2016-08-17 23:28:28.465314240 +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);
userif.patch
--- vmnet-only.old/userif.c 2016-08-17 23:27:39.698973927 +0900
+++ vmnet-only/userif.c 2016-08-17 23:29:23.404983594 +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);
netif.patch
--- vmnet-only.old/netif.c 2016-08-17 23:27:39.698973927 +0900
+++ vmnet-only/netif.c 2016-08-17 23:32:02.714141615 +0900
@@ -465,7 +465,7 @@
VNetSend(&netIf->port.jack, skb);
netIf->stats.tx_packets++;
- dev->trans_start = jiffies;
+ netif_trans_update(dev);
return 0;
}
vi vmnet-only/userif.c
vi vmnet-only/netif.c
vi vmmon-only/linux/hostif.c
tar -cf vmnet.tar vmnet-only
tar -cf vmmon.tar vmmon-only
上記を実行して、tarを作り直します。
VMware Workstation を起動
無事GUIで起動できました。
vmware-modconfig --console --install-all
でモジュールを作り直してもいいかもしれません。
毎回こういうことやるのもやんなっちゃうので、
VirtualBoxにすることも考えたのですが、
ディスクアクセスがどうやらVMwareの方が速いみたいで…。