I was looking at my Raspberry Pi 4 the other day thinking of new uses for it. I thought I’d try to build a thin client. I went out to the VMware Horizon View Client download page and pulled down the latest Linux tarball. The tarball has an armhf directory and I thought “great! This will work perfectly!” Of course it didn’t.
I read the release notes (https://docs.vmware.com/en/VMware-Horizon-Client-for-Linux/2103/rn/horizon-client-linux-2103-release-notes.html#forpartners). The release notes include the installation instructions. Just extract the files and copy them to the right directory. That easy right? Of course not. When I ran the client it spit out an error:
/usr/lib/vmware/view/bin/vmware-view: symbol lookup error: /usr/lib/libarm-linux-gnueabihf/libpangomm-1.4.so: undefined symbol "_ZN4Glib6ObjectC2EOS0_"
There are a bunch of sites that talk about this error and changing scripts to not run full screen but those are for older version. Well that’s no fun. Looking at the release notes for supported operating systems it says:
“Horizon Client for Linux is supported on Raspberry Pi 4 Model B devices that are installed with ThinLinx Operating System (TLXOS) or Stratodesk NoTouch Operating System with limitations. The supported Horizon Client features include Blast Extreme, USB redirection, and H.264 decoding (for one monitor at resolution lower than 1920 x 1920).”
So it works on some OS but not on the default raspian. after some googling it looks like the library was complied with a newer version on C++ or something along those lines. But I know that the library is in the TLXOS and Stratodesk images. Time for some fun!
I pulled down the TLXOS image and uncompressed it then tried to mount it using loop devices. That worked for the first two partitions but the third was an LVM2 partition. So kpartx to the rescue, an lvscan, and mount later:
kpartx -v -a rpi-4.10.0.img lvsan mount /dev/sdcard/root /mnt
And I get an unknown filesystem reiser4 error. What??? Who uses reiser4? Maybe they had a reason or maybe it was just to make this hard. Reiser4 support needs to be compiled into the kernel. Is this really what I want to do on a Sunday? Sure why not. So I downloaded the kernel source for a later version than I had installed and that was on the list of patches for reiser4. Copied the old kernel config over and started the compile. Of course it errored due to the certificates not being in place. I removed the line from the config and recompiled. Everything went fine. Installed and rebooted. The file system mounted and I found the module:
mount /dev/sdcard/root /mnt find /dev/sdcard/root/ libpangomm-1.4.so
They were all in the /mnt/usr/lib/vmware directory. I scp’ed all the files over to the pi
scp -r /mnt/usr/lib/vmware/* pi@pi:/home/pi/vmwarelib/
Then I copied all those files to the directory according to the release notes. Everything done the client came right up. For some reason hosted apps don’t work correctly. They load up but I can’t interact with them. For desktops it works fine but the tool bar at the top shows up briefly then disappears. I’m sure these are things to do with some config file somewhere but I’m happy with it working the way it is.