Today, after few months of trying to get this done, I finally have a solution to a problem nobody could solve (or at least, it seems like nobody could according to my Google searches…): installing VMware Horizon and VMware Workstation on the same Linux machine.

Background

When trying to install Horizon on top of an existing Workstation installation on any Linux distribution, you will receive an error similar to the one below:

According to my Google research, there is no fix for this as both Workstation and Horizon require an access to the same file at the same time and both are refusing to share (just like any siblings would!)

The Solution

After months of trying different “hacks” to get this setup working, I eventually stumbled across Bedrock. I won’t go into much detail in this post, so let me summarize to you quickly here - Bedrock is a “meta” Linux distribution (I’d consider using a term “distro add-on”) allowing you to run packages from Debian on Arch, Arch on Fedora, CentOS on Void etc. etc. etc.

You can learn more about Bedrock in my previous post: Bedrock Linux - The Freedom of Choice.

Bedrock achieves this by basically turning your distro into a sort of “multi-distro Linux”. Once you have Bedrock installed, you can add new distribution strata to your OS - in simple terms, this means you can install Debian “soul” on top of your current distribution.

A little note here, Bedrock is not a virtualization technology nor a container - Bedrock vs VMs; Bedrock vs Containers.

The cooperation between your “main/host” Linux distribution and the new distributions imported as strata is seamless. With Bedrock, running a command like the one below on Arch is totally acceptable:

root # sudo apt update && pacman -Syu

Do you know now what I did to run Horizon and Workstation side-by-side? If not, let me show you here really quick:

Step One - Install Horizon (or) Workstation on your current system

In this example, my laptop is running pure Arch* with GNOME desktop. After getting yaourt from AUR, installing Horizon wasn’t too much of a hassle:

root # yaourt vmware-horizon-client

If you don’t trust AUR helpers, you can instead build Horizon Client directly uusing the PKGBUILD script from AUR.

*any other dsitribution compatibile with VMware Horizon Client and “hijackable” with Bedrock (Debian, Ubuntu, Fedora, VOID etc.) can be used instead of Arch.

Step Two - Install Bedrock

Before we move on, let me warn you - installing Bedrock is a one-way trip. Unless you have your system backed up, you won’t be able to go back to vanilla Linux. Either take a full backup now or try following this guide on a VM first.

To install Bedrock, download the bash installation script from the official repo:

https://raw.githubusercontent.com/bedrocklinux/

At the moment, the live script can be found at:

https://github.com/bedrocklinux/bedrocklinux-userland/releases/download/0.7.3/bedrock-linux-0.7.3-x86_64.sh

We can easily get it on our Linux with wget

root # wget https://github.com/bedrocklinux/bedrocklinux-userland/releases/download/0.7.3/bedrock-linux-0.7.3-x86_64.sh

Afterwards, we need to make the script executable.

root # chmod +x ./bedrock-linux-0.7.3-x86_64.sh

Lastly, we need to run said script (as sudo/root) and follow the instructions given.

root # sh ./bedrock-linux-0.7.3-x86_64.sh

After a while, we’ll be asked to reboot.

Step Three - Adding Debian to Bedrock

Now comes the time when we finally begin to play around with some Linux magic.

To install Debian on top of Arch using Bedrock (I still can’t get used to how cool it sounds), we can run the following command:

root # brl fetch debian

The system will download some bits and pieces and after about 15min, we’ll have our Debian strata ready for use.

root # brl list
arch
bedrock
debian

Step Four - Install VMware Workstation using Debian

Before we can install it, we’ll have to download it! Point your browser to the link below to download the latest version of VMware Workstation Pro for Linux:

https://www.vmware.com/go/getworkstation-linux

Once downloaded, open up your download directory in terminal and make the installation file executable:

root # chmod +x VMware-Workstation-Full-15.0.4-12990004.x86_64.bundle

Once you have that done, you can launch the installation process from the terminal. The Debian strata will be automatically picked up and used for the installation.

Answer all the questions asked by the installer and let if finish. Do not attempt launching Workstation yet.

Step Five - Patching the Kernel

The last thing which has to be done is patching the kernel. This can easily by done using a patch created by mkubecek.

Let’s start by downloading and extracting the patch archive*:

root # wget https://github.com/mkubecek/vmware-host-modules/archive/workstation-15.0.4.tar.gz
root # tar -xzf workstation-15.0.4.tar.gz

Apply the patch to the kernel by issuing make and make install

root # cd vmware-host-modules-workstation-15.0.4
root # make
root # make install

Again, let it run for a bit. You shouldn’t have to wait for than 5-6 minutes.

*always make sure to replace the version number in the two examples above with a correct release of Workstation you installed in step four

Result

I don’t think I need to say anything more. Just look at this screenshot below and enjoy:

The two applications are accessible to each other and fully compatibile (even though one of them is running “mostly” under Arch and the other “mostly” under Debian). I’ve been using both for quite some time now in this configuration and I haven’t encountered any issues so far.

This solution works because VMware Horizon was installed in the Arch strata (and the yaourt AUR helper), while VMware Workstation was placed under Debian strata (Bedrock chose Debian for the installation in step four as .bundle files are not supported by Arch). This way, we duplicated the problematic system file(s) and, instead of forcing Horizon & Workstation to share them, we assigned them parallel copies of these files.

I hope some poor soul who struggled just like me to get this working will stumble across this post. I wish I would back when I was trying to figure out how to get this working :)