VMware Infrastructure Client on Ubuntu … an Update

I finally got the VMware Infrastructure Client running directly on my Ubuntu Linux.  I use the word running, because I’m not prepared to use the word working just yet.  Though the application seems fairly stable and most feature / functionality I’ve tested thus has worked, I’ve already found two bugs, one of which will hang your entire terminal.  And believe me, I’ve only just begun to test, so who knows how many more bugs I’ll find?

But until today, I couldn’t even get the client to launch and I haven’t been able to find anyone else that has been able to do so either.  So I’m going to consider this a minor success and a step in the right direction.  But just to be clear, I would NOT advise you start managing your environment with the VIC on wine just yet! 🙂

OK, here’s the proceedure I used get this running.

  1. My environment (I haven’t yet tried this proceedure on any other combination of Linux and Wine):
    • ubuntu 8.10 (kernel 2.6.27-11)
    • wine-1.1.14
  2. Download and install the latest version of winetricks.
  3. Run winetricks and select ONLY the following options:  dotnet20, ie6 and winxp.  Now, for future reference, I believe the bugs I’ve already found can be cured with a few more options.  But, one step at a time.  I also know that a couple options will crash the application.
  4. Download and install the VMware Infrastructure Client.  You can get this by going to http://<ip of your vCenter server>.
  5. Here’s the critical part, you need to modify your vCenter (or ESX) server to accept both HTTP and HTTPS.  By defult, vCenter and ESX will accept HTTP requests, but they are immediately redirected to HTTPS.  And currently, this will break the VIC on wine.  Do NOT do this on a production vCenter server!! To modify your vCenter server, do the following:
    • On your vCenter server, go to C:\Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter
    • Copy proxy.xml to proxy.xml.bak
    • Open proxy.xml with a text editor
    • Find the lines with httpsWithRedirect and replace with httpAndHttps
    • Restart the “VMware VirtualCenter Server” Service
  6. Back on your linux workstation, go to ~/.wine/drive_c/Program Files/VMware/Infrastructure/Virtual Infrastructure Client/Launcher/
  7. Execute wine VpxClient.exe and you should see the following:

    vic_login_prompt1

  8. Make sure you put an http:// in front of the IP or DNS name of your vCenter server.  Otherwise, it will try to connect via HTTPS and again, this is currently problematic.
  9. That should do it.

OK, here are the bugs that I’ve found so far (other than SSL, which I’ve already mentioned):

  • Using the right click menu will freeze your screen about 50% of the time.  When it freezes, you’ll have to connect to another TTY, find the process and kill it.  But the alternative menus seem to work.  For example, if you right click on a host and click “New Virtual Machine … ” your screen will likely freeze.  However, if instead you click the “New Virtual Machine” link on the Summary tab, the New Virtual Machine Wizard will properly launch.
  • The New Virtual Machine Wizard will not advance past the Virtual Disk Capacity step.  It produces the error “The disk capacity entered was not a properly formatted number or was out of range …”  It gives this same error no matter what value I enter.  Actually, simply clicking Cancel will produce the error.  Weird.
  • The Getting Started tab correctly renders the proper HTML, but the viewing area is about 100 x 100 pixels and not adjustable.  (This is nothing more than an annoyance).
  • You can create a folder in a datastore, but you can’t delete one.  Deleting files on a datastore seems to work fine.

Most of the navigation (other than the right click menu I mentioned above), seems to work well.  VMotion worked fine.  Configuring HA and DRS worked fine.  Performance stats rendered fine.  But I’ve got a lot more to test and I’ll update again with my test results as I progress.

Thanks to Dan Kegel (www.kegel.com) and Jeff Warnica (don’t know his website/blog) for your help and pointing me in the right direction!

Here are a few more screenshots of the client in action.  Click on each image for the full scale picture.

screenshot-1

Performance stats, and completed VMotion (in Recent Tasks at bottom)

screenshot-2

Datastore browser

18 comments Add yours
  1. An ESXi server can also be adjusted to allow non-HTTPS connections by editing the file /etc/vmware/hostd/proxy.xml (easy if you've enabled SSH on the ESXi host; otherwise use the RCLI utilities to download, modify, and upload the file). Then, restart the services by using /sbin/services.sh restart. I noticed on my system that the consoles on the VMs don't work. Are you seeing this on your end?

  2. Hi Jared,

    Sorry I'm just getting back to you. Somehow I missed your comment.

    Thanks for for the info on how to do this in ESXi. I'm going to stand up an
    ESXi server here shortly and I'll let you know if I have any issue with your
    proceedure.

    Yes, right now I see the same thing with the VM system consoles. But this
    is going to be harder to troubleshoot because the consoles are run from a
    separate executable, vmware-remotemks.exe. And the problem is
    vmware-remotemks.exe can't be directly executed, it has to be launched from
    within the client. So right now, I don't know where the breakpoint is. If
    I get some time this weekend, I might try to run a ThinApp'd version of the
    the VI, where the vmware-remotemks.exe would be launched from within a
    ThinApp bubble. I'll let you know how it goes.

    Any other progress on your end?

    *Thanks!
    Aaron
    * <http://virtualinsanity.com>

  3. While launching remote console window, I got errors:

    fixme:ole:OLEFontImpl_QueryInterface () : asking for unsupported interface {c3fcc19e-a970-11d2-8b5a-00a0c9b7c9c4}
    fixme:ole:OLEFontImpl_QueryInterface () : asking for unsupported interface {b196b283-bab4-101a-b69c-00aa00341d07}
    fixme:ole:OLEFontImpl_QueryInterface () : asking for unsupported interface {00000003-0000-0000-c000-000000000046}
    fixme:ole:OLEFontImpl_QueryInterface () : asking for unsupported interface {00000144-0000-0000-c000-000000000046}
    err:ole:ITypeInfo_fnInvoke did not find member id 3, flags 0x4!
    fixme:ole:Context_CC_ContextCallback (0x7786928/0x778692c)->(0x79f277a5, 0x7e758488, {d7174f82-36b8-4aa8-800a-e963ab2dfab9}, 2, (nil))

    There is some thoughts?

  4. Step 5 kills my VirtualCenter. Whenever I make the change in proxy.xml and I restart the VirtualCenter service, VirtualCenter will not restart and prompt me with a generic error. The only way to fix it is to reinstall VirtualCenter.

  5. Hi Victor,

    Can you send me a copy of the changes you made to the proxy.xml file? Also,
    can you tell me the version of VirtualCenter you're using.

    You shouldn't have to reinstall VirtualCenter. Just restoring the proxy.xml
    file to its original state and restarting the service should be all you
    need.

    Thanks,
    Aaron

  6. Step 5 kills my VirtualCenter. Whenever I make the change in proxy.xml and I restart the VirtualCenter service, VirtualCenter will not restart and prompt me with a generic error. The only way to fix it is to reinstall VirtualCenter.

  7. I am thinking there must be a easier way – maybe a scripted QEMU to load a scaled down version of Windows, that launches the client.

  8. Hi, Thank for your post, everything seem be done in my operating system (ubuntu 9.0.4)

    It's just remained step 5 because I don't know how to access On my vCenter server, to go to C:Documents and SettingsAll UsersApplication DataVMwareVMware VirtualCenter and modify proxy.xml file

    http://i187.photobucket.com/albums/x1/magicvn/S

    Let's me know, please ..

    Many thanks

  9. Hi,

    With ESXi, I changed proxy.xml with that suggestions, exception one line:
    <e id=”3″>
    <_type>vim.ProxyService.NamedPipeServiceSpec</_type>
    <accessMode>httpsOnly</accessMode>
    <pipeName>/var/run/vmware/proxy-vpxa</pipeName>
    <serverNamespace>/vpxa</serverNamespace>
    </e>

    I rebooted the host.
    When I try to access vic in linux, I receive a “An SSL error occurred”.
    Any idea? “httpsOnly” must be changed too?

  10. Hi Aaron,

    thanks for your guide, but in my environment I have also selected vcrun2005 “MS Visual C++ 2005 libraries (mfc80,msvcp80,msvcr80)” in winetricks installer.

    Roberto

  11. Hi I am unable to run the VI Client. I am runnign ubuntu 11.10, installed Mono .Net.

    linux1@ubuntu:~/.wine/drive_c/Program Files/VMware/Infrastructure/Virtual Infrastructure Client/Launcher$ wine VpxClient.exe
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”configSections” in state 1
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”section” in state 3
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”system.net” in state 1
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”connectionManagement” in state 3
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”clear” in state 3
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”add” in state 3
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”appSettings” in state 1
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”add” in state 3
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”add” in state 3
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”add” in state 3
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”add” in state 3
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”add” in state 3
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”add” in state 3
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”cmdlineFallback” in state 1
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”runtime” in state 1
    fixme:mscoree:ConfigFileHandler_startElement Unknown element L”generatePublisherEvidence” in state 3
    [ERROR] FATAL UNHANDLED EXCEPTION: System.Runtime.Serialization.SerializationException: Unexpected binary element: 0
      at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject (BinaryElement element, System.IO.BinaryReader reader, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) [0x00000] in :0
      at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadValue (System.IO.BinaryReader reader, System.Object parentObject, Int64 parentObjectId, System.Runtime.Serialization.SerializationInfo info, System.Type valueType, System.String fieldName, System.Reflection.MemberInfo memberInfo, System.Int32[] indices) [0x00000] in :0
      at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectContent (System.IO.BinaryReader reader, System.Runtime.Serialization.Formatters.Binary.TypeMetadata metadata, Int64 objectId, System.Object& objectInstance, System.Runtime.Serialization.SerializationInfo& info) [0x00000] in :0
      at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectInstance (System.IO.BinaryReader reader, Boolean isRuntimeObject, Boolean hasTypeInfo, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) [0x00000] in :0
      at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject (BinaryElement element, System.IO.BinaryReader reader, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) [0x00000] in :0
      at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadNextObject (System.IO.BinaryReader reader) [0x00000] in :0
      at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectGraph (BinaryElement elem, System.IO.BinaryReader reader, Boolean readHeaders, System.Object& result, System.Runtime.Remoting.Messaging.Header[]& headers) [0x00000] in :0
      at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000] in :0
      at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] in :0
      at System.Resources.ResourceReader.ReadNonPredefinedValue (System.Type exp_type) [0x00000] in :0
      at System.Resources.ResourceReader.ReadValueVer2 (Int32 type_index) [0x00000] in :0
      at System.Resources.ResourceReader.LoadResourceValues (.ResourceCacheItem[] store) [0x00000] in :0
      at System.Resources.ResourceReader+ResourceEnumerator.FillCache () [0x00000] in :0
      at System.Resources.ResourceReader+ResourceEnumerator..ctor (System.Resources.ResourceReader readerToEnumerate) [0x00000] in :0
      at System.Resources.ResourceReader.GetEnumerator () [0x00000] in :0
      at System.Resources.ResourceSet.ReadResources () [0x00000] in :0
      at System.Resources.ResourceSet.GetObjectInternal (System.String name, Boolean ignoreCase) [0x00000] in :0
      at System.Resources.ResourceSet.GetObject (System.String name, Boolean ignoreCase) [0x00000] in :0
      at System.Resources.RuntimeResourceSet.GetObject (System.String name, Boolean ignoreCase) [0x00000] in :0
      at System.Resources.ResourceSet.GetStringInternal (System.String name, Boolean ignoreCase) [0x00000] in :0
      at System.Resources.ResourceSet.GetString (System.String name, Boolean ignoreCase) [0x00000] in :0
      at System.Resources.ResourceManager.GetString (System.String name, System.Globalization.CultureInfo culture) [0x00000] in :0
      at System.Resources.ResourceManager.GetString (System.String name) [0x00000] in :0
      at VpxClientCommon.ImageAnimator.InitializeComponent () [0x00000] in :0
      at VpxClientCommon.ImageAnimator..ctor () [0x00000] in :0
      at (wrapper remoting-invoke-with-check) VpxClientCommon.ImageAnimator:.ctor ()
      at VpxClient.FormVpxConnect.InitializeComponent () [0x00000] in :0
      at VpxClient.FormVpxConnect..ctor (System.String locale) [0x00000] in :0
      at (wrapper remoting-invoke-with-check) VpxClient.FormVpxConnect:.ctor (string)
      at VpxClient.Program.Main (System.String[] commandline) [0x00000] in :0
    linux1@ubuntu:~/.wine/drive_c/Program Files/VMware/Infrastructure/Virtual Infrastructure Client/Launcher$

    Thanks for any help
     

Leave a Reply

Your email address will not be published. Required fields are marked *