読者です 読者をやめる 読者になる 読者になる

心のままに

いつまでも少年のように純粋でいられたら!っと映画「心のままに」のタイトルをパクっちゃいました。趣味を中心に気の向くままに書き綴ろうと思います。

VMware Workstation 12

仕事なんだか?趣味なんだか?って感じの話題なんですが。。。

会社のPCは、CentOS の上に VMware で Windows10(つい最近 7 から 10に移行しました)という環境なんです。

f:id:tetsu314:20160601133541p:plain

CentOS は 6.8 で Kernel 2.6.32 です、VMware Workstation 12 pro を設定して使ってたんですが。

yum update したら。

Virtual Network Device が作り直しできないって事で、vmware が動かなくなっちゃいました。

ログを見ろ!って事なので、見てみると、

 ログにこんなんが記録されてました。

Failed to build vmnet. Failed to execute the build command.

 

ググってみても、VMware Workstation 11 やら、Kernel 3.x やら Kernel 4.x の情報しかありませんでしたが、ヒントをいただいたので。
あとは、自力でなんとか解決しました。

bash$ su -
Password: 
bash# cd /usr/lib/vmware/modules/source
bash# tar -xvf vmnet.tar
bash# vi vmnet-only/netif.c
bash# mv vmnet.tar .vmnet_org.tar
bash# tar -cvf vmnet.tar vmnet-only
bash# rm -rf vmnet-only
bash# exit
bash$

んで、何をしたかと云うと、netif.c の 149行目の || を && に変更しました。

カーネルソースの include/linux/netdevice.h に alloc_netdev() マクロを見つけましたが、(sizeof_priv, name, setup) の引数3つだったので。

 

 

パッチを置くまでもないのだが、こんな感じ。

diff -u vmnet-only.org/netif.c vmnet-only/netif.c
--- vmnet-only.org/netif.c      2016-04-15 08:48:00.000000000 +0900
+++ vmnet-only/netif.c  2016-05-31 17:47:01.232681992 +0900
@@ -149,7 +149,7 @@
    memcpy(deviceName, devName, sizeof deviceName);
    NULL_TERMINATE_STRING(deviceName);

-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(NET_NAME_USER)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) && defined(NET_NAME_USER)
    dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);
 #else
    dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);

 

ちなみに、自宅は MacMini も MacBookAir も VMwareFusion に Windows10 という環境です。

全て最近 Windows7 から Windows10 に移行しました。