Skip to content

Posts tagged ‘PCoIP’


Creating a VMware View Live CD with SUSE Studio

This post continues my efforts to provide information on how to use the VMware View Client for Linux in fun and interesting ways. This time, we’re going to use the output from my last post on extracting the VMware View Client from the Ubuntu .DEB file to create a new live CD on a different distro – in this case OpenSUSE 12.1. Further we’ll be using SUSE Studio to create the ISO.

As always, let’s get this out of the way-

DISCLAIMER: This process is in no way supported by VMware. Use the extracted VMware View Client and subsequent OpenSUSE live CD ISO at your own risk. Neither I, nor VMware Inc. make any warranties that either of these artifacts will work for you in any way, in fact they may explicitly harm you and your family if you are not careful – but probably they won’t. Do not contact myself or VMware Inc. for support when utilizing either the extracted files or the OpenSUSE live CD ISO containing them. You have been warned.

Moving on…

SUSE Studio

First let me say that I have been a huge fan of SUSE Studio since the moment I got into the beta for it. I have always thought that it is not only easy to use but also very powerful – a rare combo indeed! If you have never heard of it before I like to describe it as a wizard-driven Linux appliance factory. Admittedly that description probably sucks, but that’s what I like to tell people who have never heard of it – therefore they can’t easily argue with me about it. By the time they go and see it for themselves I am usually long gone.

Getting started

In order to use SUSE Studio you will need to have an account, thankfully SUSE Studio supports OpenID, so if you don’t have an existing Novell account, you can sign in with a pretty board range of other accounts you likely already have:

Plenty of account options

Plenty of account options

Once you get logged in, you are brought to your homepage. Here, you will find any previously built appliances and you’ll be given the option to create a new appliance. As that’s exactly what we are here to do, go ahead and click it.

Create a new appliance

Create a new appliance

Template Selection

Once you do that you will be taken to base template selection. This is the one item you only get to pick once, so make it count! There are several options you can choose from including the most recent OpenSUSE release, the most recent SLES release, and the previous SLES release. Within each section are multiple configurations targeting different deployment scenarios ranging from JeOS (Just Enough OS or “Juice”) to a text only server to a full blown desktop client with all the fixin’s.

For this tutorial we want to select the openSUSE 12.1 Minimal X base template and the 32bit architecture. We’ll also name this appliance ‘VMware View LiveCD’.

Selecting a base template

Selecting a base template

Once you are done, click ‘Create appliance’ and you will shortly be taken to the ‘Start’ tab of the SUSE Studio wizard.

The Start tab

After template selection, you’ll notice some key stats and a little thumbnail preview of the visual “look” of your appliance on the left. This will update automatically as you change the appliance configuration. On the Start tab all you can do is change the name of the appliance. The wizard suggests that we move on to the ‘Software’ tab, and I concur.

The Start tab

The Start tab

The Software tab

Now we are getting somewhere. Stuff to do! This tab is where you can add just about anything you like to your base template. Anything in the SUSE repositories is immediately available, and you can add additional repositories or even just directly upload your own custom RPMs to be applied to the base template during the appliance build. Much like any modern Linux install you can select pre-grouped patterns such as “Games” or “Java Development” which will install all required packages and dependencies or you can select individual packages and let the robot looking version of Clippy determine the requirements and deps automatically.

The Software tab

The Software tab

In order to satisfy the requirements of the VMware View Client we will need to add a few libraries. I’ve gone through the hell of finding out what’s already included in the base template, and what needs to be added so I’ll spare you the details. In short, the following packages will need to be added:

  • libopenssl0_9_8
  • libpng12-0
  • libatk-1_0_0
  • libgtk-2_0_0
  • libgdk_pixbuf-2_0_0

You will add these packages by entering them into the ‘Search for software’ text box and then clicking the ‘+ add’ button next to them.

Adding a package

Adding a package

Once you have added all the required packages it is time to move on to the ‘Configuration’ tab.

The Configuration tab

This is where you’ll likely spend the meat of your time when making a new appliance. There are several sub-tabs here and we will go through each one. Let’s get started…


This sub-tab is where you will add users, configure basic networking and firewall rules, set time zone, and configure language/locale info. For this build I tweaked a few things – disabled the firewall, and switched the user account name to ‘view’. I left all passwords at defaults for the sake of this build, but I don’t recommend doing that in the real world.

General settings sub-tab

General settings sub-tab


Here you can tweak the appearance of your appliance via a custom logo and/or background. I took a moment to whip up some custom artwork (available here and here) and uploaded them to make this appliance look a bit more VMware View-ish. You are free to peruse DeviantArt or 500px for your custom artwork though. Experiment.

Looking a bit more VMware-ish

Looking a bit more VMware-ish


This sub-tab controls the default runlevel of the appliance (leave it alone here – 5: Graphical Login) and allows you to add a EULA to the appliance if you require one, for our work here, we don’t, so leave it be.

Startup sub-tab - Nothing to see here...

Startup sub-tab - Nothing to see here...


Another sub-tab where we don’t need to touch anything, we have no database installed, and want to keep it that way.

Servers? Nope.

Servers? Nope.


Ah! Something we care about again! Here we will configure the appliance to auto login as the ‘view’ user we created back on the ‘General’ sub-tab and we’ll also setup the VMware View Client to be automatically started once the user is logged in.

Check the box to ‘automatically log in user’ and select ‘view’ from the dropdown box (should be the default).

Next, click ‘Add new autostart program’. In the ‘Command’ box enter:

/usr/bin/vmware-view --fullscreen

Select ‘view’ in the ‘Start for user” dropdown, and enter “VMware View Client” in the comment (or don’t). Lastly, make sure the ‘Enabled’ check box is in fact checked – otherwise we just did all this work for nothing.

Setting up auto login, and auto launch of the VMware View Client

Setting up auto login, and auto launch of the VMware View Client


This sub-tab isn’t terribly relevant to running our appliance as a live CD except for a few options towards the bottom of the page. Primarily this is to configure the RAM and disk attributes when deploying the appliance as a virtual machine.  Since we are only looking to make an ISO right now don’t mess with those settings, they won’t have any impact.

The one location we do care about here is the ‘Additional Options’ section.  Here we are presented three options:

  • Add live installer to CDs and DVDs
  • Enable VMware CD-ROM support
  • Enable WebYaST

If you want to build a live CD that also supports installation, leave ‘Add live installer to CDs and DVDs’ checked. But be aware this will increase the size of the resulting ISO a bit. For now,  deselect that option and leave the others as-is.

The Appliance sub-tab

The Appliance sub-tab


This sub-tab will allow you to execute scripts at the end of the build process and/or each time the client boots. Again, for the sake of simplicity we’re going to skip adding/changing anything here but when trying to reduce the size of your ISO/image file the ‘end of build’ script can be a very powerful tool to run through and delete unneeded files and directories. I suggest re-visiting these options after your initial build if your interest lies in minimizing the ISO footprint.

The Scripts sub-tab

The Scripts sub-tab

That wraps up the ‘Configuration’ tab settings. Now we’ll move into the ‘Files’ tab.

The Files tab

Up till this point you may have been wondering when or how the actual VMware View Client itself was going to get installed. Well, wonder no more! This is tab is where we will add the .tar.gz file created from extracting the VMware View Client out of the Ubuntu .DEB file.

The ‘Files’ tab allows you to add pretty much any kind of file you like to the base template. This is incredibly useful if you’ve made an archive of many specific settings/properties files and just want to lay them in over the base image.  It’s also a great place to drop in custom or home-built software which is what we are going to do right now.

Click ‘Upload file…’ and navigate to the location where you placed your extracted VMware View Client .tar.gz archive. Wait for it to upload, and we are done. In this case all the default settings are what we want – the archive should be extracted into ‘/’ or the root directory and since permissions will be preserved we shouldn’t need to touch those.

`VMware View Client uploaded, and set to extract

VMware View Client uploaded, and set to extract

 The Build tab

And now the magic happens. The Build tab is where you configure how you would like your appliance to be “output” – what formats it will be created in.

Since our goal here is to make a live CD let’s set that to the default. Choose ‘Live CD/DVD (.ISO)’ from the drop down list.

Default build format selected

Default build format selected

With that setup we can now kick off  the build of the live CD. Click ‘Build’ and go grab something to drink. Or you can peruse this captivating gallery of a build in process:

The build is about to begin!

The build is about to begin!

Look! It's building!

Look! It's building!

Almost there!

Almost there!

Annnnd we're back!

Annnnd we're back!

The build is complete. Now we get to one of the coolest features of SUSE Studio – the testdrive! You’ll notice this option to the right of the final build size for your appliance. Clicking it will launch a new browser window and will load your appliance into a virtual machine. The console for the machine opens in the new browser window and you can interact with it from there. It’s important to note that NO outbound network traffic is allowed from a testdrive, it’s just there to let you verify and modify the configuration of your appliance before wasting the time and bandwidth to download it. It’s an incredibly useful tool. One other note is that if you look carefully you’ll see that the version number of your appliance has been auto-incremented. This will happen on each build. You can of course set your own specific version number but this is also a nice touch.

Let’s take this appliance for a testdrive…

As you can see the custom logo and background are present and looking rather dapper. One thing that could be changed is the bootloader timeout – it should probably be reduced to 0. That would be a good thing to add to a post-build script or apply via a configuration file archive but for now I will leave that as an exercise for the reader. You can also see that the VMware View Client launches automatically in full screen mode so all a user would see is the prompt to connect and login.

Closing Thoughts

So that’s it. We have a good basis for a PC re-purposing live CD built quite easily and quickly via SUSE Studio. It’s substantially smaller (230MB) than the Ubuntu live CD I showed you how to build previously, but to be fair, no time at all was spent on optimizing that image. Still, I think it’s quite a bit easier to build an image via SUSE Studio than to use UCK and manually strip out significant portions of the OS. However, this method also means you’re completely unsupported but as Captain Kirk once said, “Risk is part of the game. You want to sit in that chair?”. Well, do you?

This post gives just enough information to build a starting point. There are several tweaks and enhancements that can be made from this point:

  • Adjust bootloader timeout to 0 to avoid users doing whatever it is that users do when they break stuff
  • Add a script to determine the proper VMware View Connection Server and pass it in via command line to the VMware View Client
  • Add a script that locks the user into the VMware View Client so that when they exit it, or logoff from a desktop it automatically relaunches
  • Re-enable the firewall and open only the required ports
  • Prune the image to reduce overall size. It’s not bad right now, but could probably get under 200MB with a bit of effort and probably to about 150MB with a bit more

I hope you find this information useful. Post in the comments if there’s another distro you’d like to see me mess with, or if you already have and have had success.

That’s all for now.


Extracting the VMware View Client for Use on Alternate Distros

Continuing on the thread of how to utilize the recently released VMware View Client technical preview for Linux I wanted to cover a method for extracting the “raw” client bits out of the Ubuntu package which will set the stage for moving the client to other distros in an easy and portable fashion. But first…

DISCLAIMER: This process is in no way supported by VMware. Use the extracted VMware View Client at your own risk. Neither I, nor VMware Inc. make any warranties that the extracted files will work on any Linux distro outside of those listed as supported by VMware Inc. itself. Do not contact myself or VMware Inc. for support when utilizing the extracted files. Stay safe out there people.

Ok, with that out of the way, this is actually a relatively simple process.

Step 1: Acquire the .DEB file

The first step is to acquire the .DEB file for the VMware View Client directly. The file we are looking for (currently) is ‘vmware-view-client_1.3.0-0ubuntu1+oneiric2_i386.deb’. I am certain there are countless ways to do this but I just went to and searched for ‘vmware-view-client’ which turned up exactly the results we are looking for.

Finding the View Client .DEB

Finding the View Client .DEB

Go ahead and click the Ubuntu 11.10 link (it really doesn’t matter which one you choose) and follow through to the download section, select a mirror, and download the .DEB file. Be careful to dance around the many and varied advertisements mixed in among the actual links.

You can choose to download the file anywhere, just make sure you can access it from a Linux distribution (I’ll be using Ubuntu here) as that’s where we will be extracting the contents of the file out. For ease of use I just downloaded the file directly to my Ubuntu instance via Firefox.

Step 2: Extract the files from the .DEB

Now that we have the installation file we need to extract the parts we care about out of it, namely the VMware View Client binaries  and support files.

We do this by changing into the directory where you downloaded the .DEB file and using the following command:

ar xv vmware-view-client_1.3.0-0ubuntu1+oneric2_i386.deb

This will leave you with 3 new files:

  • debian-binary
  • control.tar.gz
  • data.tar.gz
Extract the .DEB file

Extract the .DEB file

data.tar.gz is the file we care about. This file has the “guts” of the VMware View Client. The other files contain code or information used for package management which we’re not going to worry about for the moment.

Step 3 – Fix the broken stuff

Now that we have the file we need, you would think we could simply rename ‘data.tar.gz’ to something like ‘vmware-view-client.tar.gz’ and be good to go. But first, we need to fix a few things in the package to make it more suitable for use in a live CD situation. Namely the fact that Ubuntu uses Zenity to display the initial EULA and we’re trying to reduce requirements, not increase them. There’s also an issue where no arguments will get passed through to the actual VMware View Client executable (/usr/bin/vmware-view.bin). This is a legitimate (but trivial to fix) bug. Let’s take a brief diversion to look at why this occurs and how it can be fixed as this is probably something you want to do on any installation of the VMware View Client so that you can utilize command line arguments to control its behavior.

First we need to extract data.tar.gz so we can get to the bits in question. From the folder where I extracted the .DEB, I created a folder called ‘client’ and then dumped the contents into there:

mkdir client
tar -xzf data.tar.gz -C client

Then, within that folder we need to move into the usr/bin directory:

cd client/usr/bin
Extract the VMware View Client

Extract the VMware View Client

Within that folder you will see ‘vmware-view’ and ‘vmware-view.bin’. The first file is actually just a launcher script used to display a EULA and then launch the second. Lets take a look at ‘vmware-view’:

vi vmware-view
Contents of vmware-view

Contents of vmware-view

Here we can see that Zenity is used to pop up a message box with the tech preview EULA and then create (touch) a file denoting it’s acceptance. Since we’re already off the rails as far as support goes here there is no good reason to accept the EULA anyway :) but the real reason to get rid of this bit of code is to eliminate the requirement for Zenity on a live CD. Next, we see that the “real” client is launched – but something is missing here. No arguments get passed in! So if you were to type:

vmware-view --help

All that would happen is that the VMware View Client would launch as if you had passed nothing in. Same for any other option. Why? Because this wrapper script is gobbling up the arguments and not passing them into the “real” view-client.bin executable so it will never know that you specified full screen operation (–fullscreen), or anything else. So, how do we edit this file? It’s easy. Now, this assumes you actually WANT to keep the wrapper in place because when we are done editing it, there’s almost no reason to have it there at all… almost.

Here is what the edited file should look like:

vmware-view edited

vmware-view edited

Pretty pathetic right? It’s also pretty pointless, but once again, in IT we deal with pointless on a daily basis so why stop for this article. Let’s talk a bit about what’s been changed here. First and most obvious, the entire EULA/Zenity code block has been removed. Second, on the launch line for ‘vmware-view.bin’ we have added ‘$*’. If you are unfamiliar with this notation it represents all of the arguments that were passed into the shell script, specific arguments can be referenced as ‘$1’ or ‘$2’ but since we don’t want or even care about specific arguments here we just take them all and pass them as the arguments to the VMware View Client binary itself. Now when you type ‘vmware-view –help’ you will actually get the help output.

So why is this pointless? Because all it is doing is calling the binary file. We could just call that directly ourselves. By removing the EULA we remove the whole point of wrapping the launch of the VMware View Client in the first place. So, a better solution might be to delete the current ‘vmware-view’ shell script, and replace it by renaming ‘vmware-view.bin’ to ‘vmware-view’. I say it MIGHT be better because there may be some very good reasons to leave the (pointless) wrapper script in place for right now:

  • In a truly stateless PXE boot environment, you may want to have code that goes out and pulls a list of viable VMware View Connection Servers and then decides which host is best for that client (based on IP or some other property), and passes it in automatically to the VMware View Client upon launch.
  • You may want to lock the user into the VMware View Client via an infinite loop
  • You may want to provide a custom dialog to the user to allow them to select screen resolution, or possibly (with proper USB support) what kind of workstation configuration they have and then build the proper command line to attach devices unique to each configuration.
  • You might want to perform some kind of file share or other mapping prior to launching the VMware View Client.
  • You might want to gather stats on the client device – CPU, RAM, NIC/MAC, etc. and report them to a central database for hardware refresh/repair assistance
  • Any of a million other things you MIGHT want to do before dropping a user into their VMware View desktop

So, if you think you will NEVER need to do those things, delete the script, and replace it with the binary. But if you believe you might want to be able to take some actions before launching, this might be a good place to do it, and by leaving the file in place now you have an easy way to make it happen as well as a file that’s easy for an end user to remember and execute. Yes, yes, I know you could do all those things I listed via rc init scripts at boot, but those only run once. What if you need to check the environment and apply settings or changes to the arguments every time the VMware View Client is launched? Then you’d end up wrapping it anyway and be right back where we are now. Being a PERL hacker I understand TMTOWTDI so I don’t claim this to be the only or best way, but it makes sense to me to leave the wrapper in place for now vs. renaming the binary. Ok, horse, dead, beaten.

Step 4 – Re-seal the package

We’ve extracted what we need from the .DEB, and now we’ve removed a dependency and fixed a minor bug in the contents. Now we need to seal everything back up into a nice neat bundle. No real surprises here – as it has risen from a tar.gz, so it shall be reborn!

One note, since all the permissions have been flipped to our user during extraction, and they started out as root, let’s flip them back to root when creating the archive. Change directory to the ‘client’ directory that we extracted ‘data.tar.gz’ into, and from there run:

tar -czf ../vmware-view-client_1_3_0-0.tar.gz --owner=root --group=root ./*

This command will create a new archive called ‘vmware-view-client_1_3_0-0.tar.gz’ in the initial folder where ‘data.tar.gz’ was extracted. All files in the archive will be owned by root, and all paths will be relative – which is as things were in the original archive.

Recreating the VMware View Client archive

Recreating the VMware View Client archive

Step 5 – Go forth and multiply!

So now you can take your newly created tar file and test it out on other distros. Sure, I could have converted the .DEB into an .RPM or whatever, but a tar.gz is pretty much universal and in many cases package managers are removed to create truly tiny distros anyway making this an ideal method of installation. Besides if you really want to create an RPM or other package you can easily find the steps to do it – go fish my friends! Go fish!

Installing the VMware View Client this way is fairly trivial:

sudo tar -xvzf vmware-view-client_1_3_0-0.tar.gz -C /

And that’s it. Run ‘vmware-view’ and the client should launch assuming all required deps are in place. If they are not you’ll get an error telling you so and you can then start chasing them down. If you want a list of required deps, extract the control.tar.gz file and then view the contents of ‘control’. Under the ‘Depends:’ section you will see the list of pre-reqs required:

VMware View Client Dependencies

VMware View Client Dependencies

Closing Thoughts

Now that we have a portable (kinda) installation of the VMware View Client, what can we do with it? I’ll have a follow-up post fairly soon showing what can be done with SuSE Studio. Keep an eye out for it. I’ll probably follow that up with something RedHat focused as that seems to come up quite often in comments and emails. Beyond that I’d like to start working on a really small footprint distro (50MB or less if it’s possible) and the required PXE infrastructure for booting it. My schedule is going to be busy through late February so it’s hard to know when I’ll make serious progress on these efforts but just keep checking back for updates – they’ll get here eventually.

Lastly, I know in my previous post for creating an Ubuntu live CD I was asked, and then posted, the ISO I created for the tutorial. I am certain people – busy people, of course :) – will ask for me to post the tar.gz file I created for this tutorial as well. Unfortunately in this case, I am not 100% certain I have the rights to redistribute the VMware View Client in a way inconsistent with it’s released packaging. Being a VMware employee means I need to be really sure before doing something like that. So for now, I will not be posting a direct link to the extracted client bits – I’ll sell you the bullets, but I won’t hold the gun and pull the trigger for you, if you will. Honestly this is a pretty straightforward process, and my belief is that it’s always better to teach people to fish – so get fishing people!


Building an Ubuntu Live CD for VMware View

With the recent public release of a full PCoIP View client for Linux I imagine many people will look to use this as a low-cost platform for re-purposing PCs as a lightweight View endpoint.

As the VMware View Client for Linux is only (officially) available for Ubuntu right now I will focus on that. Consider this the first part of an ongoing series, but right now I’m just going to cover the basics of getting an image setup so that you can live boot Ubuntu and have the View Client installed in the image.


Getting Started

Before we do anything you are going to need to grab Ubuntu 11.10 ( I will be using the 32-bit version for this walk-through.

I also will be doing the creation and testing of the live CD from a virtual machine and I highly recommend you do the same. I am using my home lab with vSphere 5, so I’ll be using vCenter to create a new VM, but any virtualization platform can be used.

The virtual machine we’re creating here will be our live CD “build” machine, there’s nothing special about it, it’s just a straight installation of Ubuntu, so let’s get on with it. First, create a new VM, select “Typical”, give it a name and location, select resource pools, and select storage placement – I assume the audience for this blog is quite familiar with this process, so I will skip detailed instructions. When prompted for “Guest Operating System”, select Linux, and under “Version” select Ubuntu Linux (32-bit).

OS Selection

Selecting Ubuntu Linux for guest OS

Complete the final steps of the New Virtual Machine Wizard – I created a 30GB disk which is likely overkill – and create the VM. I did make some changes to the hardware settings – I bumped up to 2GB RAM and added a second CPU. This is not required, it just made me feel good.

VM Hardware Settings

VM Hardware Settings

Once the VM is created mount the Ubuntu ISO file into it via whatever your preferred method is. I uploaded the ISO to a datastore, and mapped it into the VM from there. If you use this method make sure to select “Connected” and “Connect at power on” – and then to deselect these options after the installation process is complete.

Mount the Ubuntu ISO

Mount the Ubuntu ISO

Access the console for the VM, and power it on. Shortly after it boots  you will be presented with the following screen, select “Install Ubuntu”

Install selection

Install selection

Again, I am going to skim the details of OS installation as I assume my audience is familiar with the process:

  • I selected “Download updates while installing”
  • I allowed the installer to use the whole disk and took the default file system layout (2 partitions)
  • Select your location and language preferences
  • Enter your user account information, and select “Log in automatically”
  • Let the installation complete
  • When prompted to restart, click “Restart Now”. You should then be prompted to remove the installation media per the image below
  • Disconnect the ISO image from the VM, go back into the console, and press ‘Enter’ to complete the shutdown
Time to disconnect the ISO

Time to disconnect the ISO

The VM will reboot and you should be taken directly to the Ubuntu desktop (if you selected Log in automatically, otherwise you will be prompted for credentials):

The Ubuntu Desktop

The Ubuntu Desktop

You may want to maximize the resolution of the desktop as things can get a little cramped at the default 1024×768, but this is personal preference.

Ok, the prep work is mostly complete. Next up, we will get ready to start creating our live CD image using UCK.


Installing the Ubuntu Customization Kit (UCK)

The Ubuntu Customization Kit (UCK) allows you to create a new live CD ISO from an existing Ubuntu installation ISO image and to apply any desired customization along the way.

UCK is available right from within the Ubuntu Software Center, but there are newer versions available from SourceForge. For this walk-through I will be using UCK 2.4.5. The easiest way to get this installed is to open Firefox within the Ubuntu VM and navigate to:

UCK Download Page

UCK Download Page

Select and download ‘uck_2.4.5-0ubuntu1_all.deb’, when prompted, choose to open the file with Ubuntu Software Center, and click ‘OK’:

Downloading UCK

Downloading UCK

After the download completes, Ubuntu Software Center will launch, and you’ll be prompted to install UCK. Notice the warning that an older version is available, chuckle to yourself about all the people running an older version when they could be on the bleeding edge like yourself, and then click “Install”. Note that you will be prompted for your password to perform root level operations.

Installation of UCK

Installation of UCK

During installation you will be asked if you want to add UCK to the launcher, I chose to do so, but it’s not required, you’ll just need to open UCK via dash or a terminal shell if you choose not to add it. Once installation is complete, close Ubuntu Software Center and Firefox. Now we are ready to move into image customization.


Customizing and Creating the LiveCD Image

Before we launch UCK we need to pull down a copy of the Ubuntu installation ISO as that is what UCK will be performing it’s customization on. Accomplish this by whatever means suit you – you can download it directly from Ubuntu again from within the VM, pull it off a network share, FTP, etc. I grabbed my copy from the webserver on my NAS via Firefox so it has been placed in my user ‘Downloads’ directory which maps to ‘/home/<user>/Downloads’. You’ll need to know the path so you can provide it to UCK.

UCK Icon

UCK Icon

Once you have a copy of the Ubuntu ISO accessible to the VM, launch UCK. The process to do this may vary depending on the options you selected during the installation process, but if you followed my advice and added it to the launcher simply click the UCK icon to launch it.

You will see a welcome screen, which you can dismiss, followed by language pack selection screens. I chose ‘en’ but choose whichever items are appropriate for your use case. Eventually you’ll come to a desktop environment selection screen.

UCK Desktop Environment Selection

UCK Desktop Environment Selection

I selected ‘gnome’. You are now asked to locate the ISO image that will be the basis of the newly created live CD. Navigate to the location where you placed the ISO, and click ‘OK’

LiveCD ISO Selection

LiveCD ISO Selection

UCK will then prompt you to name your CD, I entered “VMware View live CD”. Next UCK will ask if you want to customize the CD manually during building – why yes you do! Select ‘yes’ and continue.

You will be asked if you want to delete all Windows-related files from the CD. As I am not planning to run this CD under Windows, I chose to remove them. Next up is the selection for a hybrid image (ISO/USB), I chose yes as I imagine we might want to run this from a USB stick as well as a CD.

Initial configuration of UCK is now complete and the package creation will now begin. After clicking ‘OK’ you will be prompted for your user password again to allow root-level activities to take place.

Ready to build!

Ready to build!

UCK will unpack the ISO, mount it, and open up a chroot’d environment so that you can further customize the live CD environment. This may take several minutes depending on the speed of your VM and storage. Once this process is complete you’ll be presented with customization options – you can either run the package manager to add/remove packages, or run a console application (open a terminal as root) to do whatever you like.  Let’s begin by getting the VMware View Client installed.

Ready to Customize

Ready to Customize

Installing the VMware View Client for Linux

Unfortunately, we can’t just go right out and grab the VMware View Client. Nope, first we need to fix a few things.

Select “Run console application” and click ‘OK’. This will open the UCK cutomization console and leave you at a root prompt.

UCK customization console

UCK customization console

At this prompt type:

vi /etc/apt/sources.list

You are welcome to use a different editor but I prefer vi. If you are unfamiliar with vi commands please Google ‘vi’ and you will find several excellent guides.

Initial apt sources.list

Initial apt sources.list

As you can see the list of sources is pretty slim so let’s add a few before continuing, switch to edit mode, open a new line and add the following repositories:

deb oneiric universe
deb oneiric partner
New repositories added

New repositories added

After adding the new repository locations, save the file and exit (ESC :wq in vi). Then run:

apt-get update

This will allow apt to update the package lists from the newly added repositories. Now we should be able to install the VMware View Client by typing:

apt-get install vmware-view-client

You will notice that libssl0.9.8 is added to the install list and you will be prompted for confirmation. Confirm that you do want to continue and just let the magic happen.

Ready to install the View Client

Ready to install the View Client

After the installation completes you can test out the VMware View Client by typing:


You will have to accept the EULA and then the client should open. Hooray!

The VMware View Client for Linux

I love the smell of PCoIP in the morning, it smells like... pixels

Since all we want right now is a live CD with the VMware View Client available, then our modifications are done. Let’s complete the build and get an ISO.


Completing the live CD Build

Exit out of the UCK customization console by entering:


You will return to the customization action screen. Select “Continue building” and click ‘OK’

UCK will then begin creating the live CD ISO.  Expect this to take several minutes to complete.

UCK building an ISO

UCK building an ISO

Once the build is complete you will get a summary screen informing you of where the ISO file has been placed.  Typically this is: /home/<user>/tmp/remaster-new-files/livecd.iso

Build Complete

Build Complete

Click ‘OK’ to close the summary window. If you started UCK from the launcher icon there will still be a terminal window open, it will ask you to press ‘Enter’ to close the terminal, and you should do as it says, we certainly don’t want to make it angry now after having come so far.


Testing the Newly Created ISO

Before we waste a DVD or needlessly format a thumb drive it would probably be a good idea to test the ISO we just made. This is easy to do and we can reuse our Ubuntu VM to do the testing.

First we should transfer the ISO file off the VM because if we don’t, we can’t really boot into it now can we? I moved my ISO file off to my NAS again, and renamed it to livecd_view_client.iso, but you can name it anything you wish. I then once again uploaded the file to a datastore via vCenter.

Next we need to configure the VM to boot off the CD. To do this, edit the VM settings, go to the “Options” tab, and select “Boot options”. On the right-hand side, check the “Force BIOS Setup” box.

Force BIOS Setup

Force BIOS Setup

This will allow us to tweak the boot order so that the CD-ROM drive will take precedence over the hard drive. Restart the Ubuntu VM from the system settings menu (the icon that looks like a gear crossed with a power button icon) by selecting “Shut Down…” and then selecting “Restart”. Wait for the VM to restart into the BIOS setup utility.

BIOS Setup

Is it live, or is it VMerex?

Using the arrow keys, select the “Boot” menu, and then highlight “CD-ROM Drive”. Use the ‘+’ key to move it up in the boot order on top of the “Hard Drive” option.

Adjusting the boot order

Adjusting the boot order

Press ‘F10’ to save and exit, and before you confirm the changes, open the VM settings one more time, and map in the live CD ISO file. I did this just as I did above when preparing the VM for the initial Ubuntu installation (see the earlier screenshot). Make sure you check “Connected” and “Connect at power on”.

Now go ahead and confirm the BIOS changes which will cause the VM to restart.

If you did everything right, you should be prompted with a screen like this:

Live CD Boot

Choose, but choose wisely...

Dash Icon

Dash Icon

Select “Try Ubuntu” and you will be taken to a desktop running under the ‘ubuntu’ user. Now since we didn’t make any effort to create an icon for the View client on the desktop or in the Launcher we have to open it another way. One quick option is to use Dash.

Click the Dash icon and in the search box enter ‘vmware’. This should locate the VMware View Client application. Click the VMware View Client icon and off you go.

Dash Search

Thar she blows!

You will once again need to accept the EULA (this is a new user) and then the VMware View Client should launch.

VMware View Client via live CD

VMware View Client via live CD

Let’s go ahead and get connected to a desktop…

Win7 Aero Desktop

It really works!


Wrapping Up

Now that you have tested the live CD ISO you are welcome to deploy it however you like. Burn it directly to a CD/DVD depending on size, or use one of the many guides available to deploy it to a USB drive.

To be fair, this is not in any kind of state to act as a true base image for something like full-scale PC re-purposing, it’s far too large, and it doesn’t automatically boot into the VMware View Client. Going forward i plan to address some of these shortcomings, but for now this is a good way to least get a feel for the performance of the new VMware View Client for Linux on a range of hardware without causing any damage to the underlying OS installation.

More to come on this as time permits.

UPDATE: I have been asked to provide the resulting ISO so here is a link you can use to grab it. As with anything you might get from someone else’s Dropbox – Use at your own risk. I take no responsibility for any damages that may be caused by the use of this file, and I make no warranty as to it’s validity or authenticity – is that scary enough for ya? With that out of the way, here you go:  livecd_view_client.iso


PCoIP Log Viewer Introduction and Basic Operation

A brief introduction video is up. I wanted to keep this first video at a pretty high level, just introduce the tool and give a glimpse of it in operation. Future videos will go into detail on specific functions and how to do data analysis.


Public Release of PCoIP Log Viewer 2.0

I am very pleased to announce the release of my PCoIP Log Viewer tool to the public.

Before we dive into any details I do want to point out a few key things-

Despite me calling this “Version 2.0” it is, in many ways, a 0.8 release, if you will.  This is because the original Log Viewer was only ever released as an internal VMware tool (Full Disclosure: I work for VMware) and all it dealt with was the parsing and visualization of the PCoIP server log files –  hence the clever and catchy “Log Viewer” name.  To myself and the rest of VMware, that was version 1.0. Several iterations were released internally but none significant enough to warrant a major revision change.  With the introduction of the WMI counters in View 5.0 I knew I wanted to include a real-time element to the viewer and at that point the 2.0 stream began. The release you see here today is the first release of the tool that provides log file visualization as well as real-time monitoring of the PCoIP WMI counters but the real-time portion of the app is really in it’s early stages of development so expect bugs and a bit of “unpolished” behavior.

Another point I want to make is that this tool comes as-is. It is a project I work on mostly in my spare time, and while recently it has become a larger part of my actual workstream at VMware, it’s still just me supporting it.  It’s not endorsed or supported by VMware Inc. in any way. Any problems you may have with it need to be brought to me and should not reflect in any way on my employer.

Lastly, there are many of you and just one of me. I may be unresponsive at times. I may not fix YOUR bug immediately. This doesn’t mean I don’t care it just means I am likely busy with other tasks. Rest assured, I take this tool very seriously and I strive to produce a high-quality and useful (most importantly) piece of software but there ARE bugs, and more will be uncovered. I will address them as quickly as my schedule allows – but cut me some slack :)

Ok, with that out of the way let’s talk about what exactly this thing does-

PCoIP Log Viewer 2.0

The PCoIP Log Viewer provides capabilities to visualize and analyze PCoIP performance metrics collected from PCoIP server log files and real-time WMI counters.


  • Parsing and graphical display of PCoIP performance metrics from PCoIP server log files (View 4.x, 5.0)
  • Agentless, real-time display of PCoIP WMI counters (View 5.0)
  • Ability to store WMI sessions for later review
  • WMI-Rewind™  for DVR-like capability to move forward and back through time while viewing (or reviewing) a WMI session
  • Tabbed interface to display multiple concurrent WMI sessions and/or log files
  • Drag-and-Drop display of multiple (parsed) log files for easy/rapid opening when troubleshooting
  • Export of saved WMI sessions to XLSX format for custom analysis and graphing



  • Windows (XP, Vista, 7)

Viewer GUI

  • Windows (XP, Vista, 7), MacOS, Linux
  • Java 1.6+


The Viewer is comprised of two components, a front-end parser for converting PCoIP server log files into XML, and a Viewer GUI for graphing the resulting files and performing real-time monitoring of PCoIP WMI statistics.  If all you plan to utilize are the real-time WMI capabilities you do not need to download the front-end parser, just grab the Viewer GUI and be on your way. The parser is split out so that it can easily be included into a master VDI image and then scripted to parse log files at logoff or on-demand by help desk resources. The resulting files can then be placed onto a network share (for example) where support personell can drag them into the Viewer GUI.

You can download the Log Viewer components here:

Please make sure that you have Java 1.6 or greater installed (see Requirements) before accessing the Webstart link!

Installation and Operation

Video guides and tutorials will be forthcoming and will cover operation of the tool in far greater detail than I am about to reveal here. If you are uncomfortable “flying blind” with a new tool and no instruction manual, then I suggest you wait until those items are produced and published. I also suggest that you might want to consider a career choice outside of IT :-)  For the rest of you, here is a very brief guide to getting started:

  • Download the parser (remember where you put it), open a cmd shell, navigate to the directory where you placed the pcoip_parse executable and run: pcoip_parse.exe -h
  • Read the resulting output
  • Download the Webstart/JNLP file for the Viewer GUI and let the installation procede. You will see that I have self-signed the JAR files, and you may be prompted to trust me. Normally I would recommend against this, but in this case, it’s probably something you want to do. I promise to be trustworthy with regards to this tool.  In all seriousness, the Log Viewer does need read/write access to local disk in order to store the database and any exported files there, hence the request for full access.
  • If you plan to use real-time WMI stat collection you must take the following steps on the desktop VM(s) you want to monitor:
    • Disable Windows Firewall, or allow DCOM to pass. I recommend disabling as I was never able to get DCOM to pass cleanly otherwise and most implementations have a real firewall sitting in front of the desktops anyway.
    • Ensure the Remote Registry Service is started and set it to Automatic
    • Set Ownership to Administrators, and then enable Full Control for Administrators on the following registry key:
  • Now go forth and experiment
  • Wait for some tutorial videos to come

Known Issues and Limitations

  • For a WMI connection to be established and monitor a desktop there must be a PCoIP session active on that desktop. Essientally the PCoIP server process must be running to generate PCoIP WMI stats.  If the server isn’t running, there’s nothing to collect, and the tool doesn’t really do anything but die a horrible, firey death – sometimes.
  • The Log Viewer must be used on a local LAN to get accurate results. While technically you can connect via VPN and poll a desktop for stats it will be seriously delayed and you may never achieve a polling interval of less than 5 seconds – regardless of what you set the interval to be. This is partially a result of making the Viewer agentless and using DCOM to poll for stats, and partially because the pure Java implementation of DCOM I am using to insure the tool will run cross-platform can be very chatty.  I am hoping to improve this going forward but the current recommendation if you require remote monitoring is to spin up a small pool of desktops within the View infrastructure you need to manage and install the Log Viewer onto them, then remotely access those desktops as a jump-point to monitor the rest of the infrastructure.
  • When viewing a WMI session the “Client Address” field under “Session Statistics” will actually show the virtual desktop IP/host name rather than the actual IP of the attached client. This is more of a placeholder for a future feature add than an actual bug.
  • The Log Viewer window can be scaled/sized vertically to show more graphs at a time, but scaling it horizontally will not scale the graphs to be “wider”.  If you need to see more detail in a given area click and drag from left-to-right to zoom instead of trying to make the graph itself larger. This may be addressed in a future update.
  • While little testing has been done to confirm/invalidate it, I do not suggest using the Log Viewer for extended periods of time. I would consider extended logging to be 8 hours or more. While things might be just fine, I do not have enough data to mark this as a valid use case.
  • When shutting down, the Log Viewer will do a database compaction. Depending on the current size of the database and how much data has been added since the Viewer was last shutdown this can be a time-consuming process. That’s all well and good, except there’s no indication from the UI that this database compaction is taking place so it appears as though the Viewer is hung, which may lead you to want to kill it, which would be a bad thing while in the middle of a compaction process.  Just be patient, and see the previous limitation to avoid monitoring REALLY long sessions.
  • Mac/Linux users may see some minor GUI rendering issues with placement and/or clipping of text/icons on certain screens.

In Closing

I realize there is very little material here to help you understand what the tool is telling you but the plan is to produce a series of videos to handle that going forward. Until then feel free to submit questions in the comments and I will likely setup an FAQ page to answer them. I’ll update this post once that is in place.

I hope you find the tool useful and find value in what it tells you.