Monday, October 5, 2015

VMWare Workstation 10/11 on Fedora 23 Beta

UPDATE. Take a look at the comment by Vincent Cojot below for a solution on how to run VMWare Workstation/Player on Fedora 23. Take care only to go into /usr/lib/vmware/lib instead of /usr/lib/vmware as pointed out by wolf (comment after), but other than that, everything works! Note that you must not change and/or set LD_LIBRARY_PATH as first suggested by this post!
I decided to upgrade one of my laptops from Fedora 22 to the newest Fedora 23 Beta. The upgrade process went smoothly but when I tried to run VMWare, it just silently failed. Googling around for Fedora 23 and VMWare Workstation didn't help. Then, I stumbled on this thread, about the problem that VMWare installation has with GCC 5.1 used on SuSE. Turns out that the same version is used on Fedora 23, so I tried the solution from a given thread which suggest the modification of LD_LIBRARY_PATH due to the missing symbol in system provided library gtkmm:
$ export LD_LIBRARY_PATH=/usr/lib/vmware/lib/libglibmm-2.4.so.1/:/usr/lib64/gtk-2.0/modules/:$LD_LIBRARY_PATH
$ vmware
(vmware-modconfig:11918): Gtk-WARNING **: Unable to locate theme engine in module_path: "adwaita",
(vmware-modconfig:11918): Gtk-WARNING **: Unable to locate theme engine in module_path: "adwaita",
/usr/share/themes/Adwaita/gtk-2.0/gtkrc:1163: error: unexpected identifier `direction', expected character `}'
/usr/share/themes/Adwaita/gtk-2.0/gtkrc:1163: error: unexpected identifier `direction', expected character `}'
(vmware-tray:12017): Gtk-WARNING **: Unable to locate theme engine in module_path: "adwaita",
(vmware-tray:12017): Gtk-WARNING **: Unable to locate theme engine in module_path: "adwaita",
/usr/share/themes/Adwaita/gtk-2.0/gtkrc:1163: error: unexpected identifier `direction', expected character `}'
Basically, this helped a bit because now vmware doesn't fail silently. Yet, it still doesn't start. In the end, it seems that the problem is a bit more complex, as explained in this thread, so in case you need VMWare Workstation, don't upgrade yet. :)

22 comments:

Vincent Cojot said...

Hi,
I got VMWare Worksation 12.0.1 working on F23 by doing this:

1) Become root:
$ sudo su -

2) replace the vmware glib version with the fedora version:
# cd /usr/lib/vmware
# for mylib in $(ls /usr/lib64/*4600*); do /bin/cp -afv $mylib $(basename $mylib .4600.1 )/$(basename $mylib .4600.1 ); done

This basically does this:
[root@skullcap lib]# pwd
/usr/lib/vmware/lib
[root@skullcap lib]# for mylib in $(ls /usr/lib64/*4600*); do echo /bin/cp -afv $mylib $(basename $mylib .4600.1 )/$(basename $mylib .4600.1 ); done
/bin/cp -afv /usr/lib64/libgio-2.0.so.0.4600.1 libgio-2.0.so.0/libgio-2.0.so.0
/bin/cp -afv /usr/lib64/libglib-2.0.so.0.4600.1 libglib-2.0.so.0/libglib-2.0.so.0
/bin/cp -afv /usr/lib64/libgmodule-2.0.so.0.4600.1 libgmodule-2.0.so.0/libgmodule-2.0.so.0
/bin/cp -afv /usr/lib64/libgobject-2.0.so.0.4600.1 libgobject-2.0.so.0/libgobject-2.0.so.0
/bin/cp -afv /usr/lib64/libgthread-2.0.so.0.4600.1 libgthread-2.0.so.0/libgthread-2.0.so.0

3) start VMware:
VMWARE_USE_SHIPPED_LIBS=force vmware

wolf said...

Vincent, firstly many thanks for your solution! It's working with vmplayer as well.
You have a typo in step 2:
"# cd /usr/lib/vmware"
The right step is:
"# cd /usr/lib/vmware/lib"
Thanks again! :)

Stjepan Groš (sgros) said...

Thanks Vincent! With a small correction by wolf, your solution works beautifully. I updated post so that people know to look your comment.

Ramandeep Singh said...

I tried all the steps suggested:
1. Fixed path for LD_LIBRARY_PATH
2. Replaced vmware glib version using wolf's suggestion in the comments

Now when I run vmware using "VMWARE_USE_SHIPPED_LIBS=force vmware", i get the following error:
/usr/lib/vmware/bin/vmware-modconfig: error while loading shared libraries: libz.so.1: cannot read file data: Error 21

My kernel version is 4.2.3-300.fc23.x86_64 but the kernel headers installed by gcc dependency is 4.2.3-500.fc23.x86_64. Is this the issue? And how do i fix it?

Thanks a lot.

Stjepan Groš (sgros) said...

Do not set LD_LIBRARY_PATH! Just make a change as suggested by Vincent!

Ramandeep Singh said...

I need to set the path otherwise my vmware fails silently as mentioned by OP. I think i commented too soon earlier. Updated my kernel to the one required by headers and worked like a charm.
Thank you all!!

MAHESH VENGURLEKAR said...

soooo many thanks to Vincent Cojot....

Devon Miller said...

I copied the libs and use the SHIPPED env variable. The GUI starts but it looks like the network does not work. vmnet8 is present and it looks like access is allowed. But the network does not show up in ipconfig inside of my windows guest and no network access.

If I disconnect and reconnect the removable network device I get the text below. I am using vmnet8 and NAT for my network configuration.


2015-11-06T13:47:38.970-05:00| vmx| I125: VNET: 'ethernet0' enable link state propagation, lsp.state = 5
2015-11-06T13:47:38.970-05:00| vmx| I125: VNET: MACVNetConnectToNetwork 'ethernet0' lsp.state = 4
2015-11-06T13:47:38.970-05:00| vmx| I125: VNET: MACVNetConnectToNetwork 'Ethernet0' notify available.
2015-11-06T13:47:38.971-05:00| vmx| I125: TOOLS received request in VMX to set option 'synctime' -> '0'
2015-11-06T13:47:38.971-05:00| vmx| A100: ConfigDB: Setting tools.syncTime = "FALSE"
2015-11-06T13:47:39.013-05:00| vmx| I125: VMXVmdb_SetCfgState: cfgReqPath=/vm/#_VMX/vmx/cfgState/req/#13/, remDevPath=/vm/#_VMX/vmx/vigor/setCfgStateReq/#38/in/
2015-11-06T13:47:39.014-05:00| vmx| A100: ConfigDB: Setting sata0:1.fileName = "auto detect"
2015-11-06T13:47:39.023-05:00| vmx| I125: VNET: MACVNetLinkStateEventHandler: event, up:1, adapter:1
2015-11-06T13:47:39.023-05:00| vmx| I125: VNET: MACVNetLinkStateEventHandler: 'ethernet0' state from 4 to 6.
2015-11-06T13:47:39.136-05:00| vmx| I125: VNET: MACVNetLinkStateTimerHandler: 'ethernet0' state from 6 to 1.
2015-11-06T13:47:45.544-05:00| vmx| I125: VNET: MACVNetLinkStateTimerHandler: 'ethernet0' state from 1 to 5.

Ingvaldur Þór Sigurjonsson said...

Thank you, work wonderfully.

Devon Miller said...

More news on my issues. It looks like the vmnet deveice in the guest is working, it does show up under ipconfig (my mistake for not seeing it) but no traffic is being routed through the NAT device. It looks like this could be some other type of change associated with Fedora 23 that I do not know about but is affecting the NAT configuration in some way.

Inside the guest, I can ping the default gateway but I cannot lookup any IP addresses via Windows 7's nslookup.

Stjepan Groš (sgros) said...

NAT can be affected by VMWare not being configured correctly and/or not having kernel module properly installed, as I (indirectly) wrote in this post.

So, you say you can ping gateway, but which one? The one on your local network or the one inside guest OS? In case you can ping the one on your local network, then NAT is working, but DNS isn't. This happened to me, and you can check if that's the case by asking directly your nameserver on the local network. Restarting VMWare services or host machine, helps in this case.

If you can only ping gateway within the guest machine, then check your network configuration by opening Network Configuration Editor (part of VMWare suite) and see if you can spot something there.

Also, I assume that network interface is correctly configured in VMWare to be NAT.

Devon Miller said...

I had not changed anything network wise for vmware 12. Previously, vmware 11 was installed and everything worked fine. I upgraded to vmware before moving to fc23 and that all worked fine. The fedora upgrade may have toasted some setting or I remember incorrectly.

I was able to get the bridged network to work by changing my /etc/vmware/networking file to ensure I had a auto-bridging network on. I cannot get vmware-netcfg to run because of the UI GTK issues. The trick above helped me get the vmware workstation UI to run but not vmware-netcfg.

So bridged networking works for me which gets me over my immediate hump.

My guest is windows7.

I used your note to do some exploration. You are right. NAT is working, DNS is not getting set inside the guest when running in NAT mode.

Inside the guest, I can ping the nat device, which for me is 192.168.209.2 and I can ping the vmnet8 device which is 192.168.209.1. The network is set interface is set to nat when trying to get nat working. Guest nslookup fails to find anything. I set the DNS server explicitly in my guest to the nameserver in my local network (my local router which is 192.168.0.6). That works.

DNS does not seem to get set correctly in the guest under the NAT network setting but it does under bridged networking.

Here's my dhcp.conf file. Not sure its right:

...
allow unknown-clients;
default-lease-time 1800; # default is 30 minutes
max-lease-time 7200; # default is 2 hours

subnet 192.168.209.0 netmask 255.255.255.0 {
range 192.168.209.128 192.168.209.254;
option broadcast-address 192.168.209.255;
option domain-name-servers 192.168.209.2;
option domain-name localdomain;
default-lease-time 1800; # default is 30 minutes
max-lease-time 7200; # default is 2 hours
option netbios-name-servers 192.168.209.2;
option routers 192.168.209.2;
}
host vmnet8 {
hardware ethernet 00:50:56:C0:00:08;
fixed-address 192.168.209.1;
option domain-name-servers 0.0.0.0;
option domain-name "";
option routers 0.0.0.0;
}
####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######

The top of nat.conf
...
[host]

# NAT gateway address
ip = 192.168.209.2
netmask = 255.255.255.0
...

I changed option the subnet definition in dhcp.conf to add my local nameserver explicitly (domain-name-servers 192.168.209.2,192.168.0.6;) which worked. But I need it to pick up the nameserver on whatever network I join so this is not a general fix.

Stjepan Groš (sgros) said...

NAT module (/usr/bin/vmware-natd) should receive DNS request and forward them to whatever DNS server is configured on the local machine.

I used to have problems with VMWare's DNS forwarding, but in my case they were related to the point of attachment change. For example, I would connect at home and everything worked. Then, I suspend host machine, go to the work, connect laptop there and DNS in the virtual machine doesn't work anymore. I ended up manually configuring DNS server in the _guest_ machine.

You can put Google's server 8.8.8.8 in dhcpd.conf (or you can define that within guest OS) and there is no need to change it every time you change attachment to the Internet because Google's server is accessible from anywhere. It is a hack, but at least things work afterwards.

Devon Miller said...

Thanks! I'll do the 8.8.8.8 in dhcpd.conf and live to fix this another day.

Salvo Alessandro said...

I have the same issue about NAT. I tried to change the DNS option in dhcpd.conf file, but without success.

Do you have a suggestion?

Stjepan Groš (sgros) said...

What does it mean "without success"?

Did you restart VMWare after change?

Is DHCP turned on in guest machine?

What DNS server guest machine received?

Sal said...

I get no such file or directory error for Vincents suggestion as follows
[root@desktop lib]# for mylib in $(ls /usr/lib64/*4600*); do /bin/cp -afv $mylib $(basename $mylib .4600.1 )/$(basename $mylib .4600.1 ); done
‘/usr/lib64/libgio-2.0.so.0.4600.2’ -> ‘libgio-2.0.so.0.4600.2/libgio-2.0.so.0.4600.2’
/bin/cp: cannot create regular file ‘libgio-2.0.so.0.4600.2/libgio-2.0.so.0.4600.2’: No such file or directory
‘/usr/lib64/libglib-2.0.so.0.4600.2’ -> ‘libglib-2.0.so.0.4600.2/libglib-2.0.so.0.4600.2’
/bin/cp: cannot create regular file ‘libglib-2.0.so.0.4600.2/libglib-2.0.so.0.4600.2’: No such file or directory
‘/usr/lib64/libgmodule-2.0.so.0.4600.2’ -> ‘libgmodule-2.0.so.0.4600.2/libgmodule-2.0.so.0.4600.2’
/bin/cp: cannot create regular file ‘libgmodule-2.0.so.0.4600.2/libgmodule-2.0.so.0.4600.2’: No such file or directory
‘/usr/lib64/libgobject-2.0.so.0.4600.2’ -> ‘libgobject-2.0.so.0.4600.2/libgobject-2.0.so.0.4600.2’
/bin/cp: cannot create regular file ‘libgobject-2.0.so.0.4600.2/libgobject-2.0.so.0.4600.2’: No such file or directory
‘/usr/lib64/libgthread-2.0.so.0.4600.2’ -> ‘libgthread-2.0.so.0.4600.2/libgthread-2.0.so.0.4600.2’
/bin/cp: cannot create regular file ‘libgthread-2.0.so.0.4600.2/libgthread-2.0.so.0.4600.2’: No such file or directory

Stjepan Groš (sgros) said...

Of course it doesn't work, basename command tries to remove extension .4600.1 and you have extension 4600.2. Replace 4600.1 with 4600.2 and it should work!

Andy said...

There is a simpler way without copying. Just run the following from the command line -

LD_PRELOAD=/usr/lib/vmware/lib/libglibmm-2.4.so.1/libglibmm-2.4.so.1 /usr/bin/vmware

Or, edit /usr/bin/vmware and put in the following line somewhere near the top (close to the existing export statements)-

export LD_PRELOAD=/usr/lib/vmware/lib/libglibmm-2.4.so.1/libglibmm-2.4.so.1

Felipes88 said...

Hello, thanks for the info. I have fedora 23, out of the box and with Vicent's hack i manage to enable VMWare Player 12 on it.

PS: I change the step 2 to this:

for mylib in $(ls /usr/lib64/*4600*); do /bin/cp -afv $mylib $(basename $mylib .4600.2 )/$(basename $mylib .4600.2 ); done


Regards,
Felipe S.

Felipes88 said...

Crap, now when i try to power on a VM, i get the error: "Could not open /dev/vmmon: No existe el fichero o el directorio.
Please make sure that the kernel module `vmmon' is loaded."

And if i run sudo /etc/init.d/vmware start , i get: Restarting vmware (via systemctl): Job for vmware.service failed because the control process exited with error code. See "systemctl status vmware.service" and "journalctl -xe" for details.

Swartwitpens said...

eish, I've messed my installation big time. After following the above I now get a host of other errors.

At top level:
/tmp/modconfig-MX4enQ/vmmon-only/linux/driver.c:1285:1: warning: always_inline function might not be inlinable [-Wattributes]
LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
^
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-MX4enQ/vmmon-only/linux/driver.o' failed
make[2]: *** [/tmp/modconfig-MX4enQ/vmmon-only/linux/driver.o] Error 1
make[2]: *** Waiting for unfinished jobs....
Makefile:1382: recipe for target '_module_/tmp/modconfig-MX4enQ/vmmon-only' failed
make[1]: *** [_module_/tmp/modconfig-MX4enQ/vmmon-only] Error 2
make[1]: Leaving directory '/usr/src/kernels/4.3.5-300.fc23.x86_64'
Makefile:120: recipe for target 'vmmon.ko' failed
make: *** [vmmon.ko] Error 2
make: Leaving directory '/tmp/modconfig-MX4enQ/vmmon-only'
Starting vmware (via systemctl): Job for vmware.service failed because the control process exited with error code. See "systemctl status vmware.service" and "journalctl -xe" for details.
[FAILED]

About Me

scientist, consultant, security specialist, networking guy, system administrator, philosopher ;)