To install Horizon 7 for Linux, your Linux system must meet certain requirements for the operating system, Horizon 7, and vSphere platform.

Supported Linux Versions for Horizon Agent

Supported Linux Operating Systems for View Agent lists the Linux operating systems that are supported on virtual machines in a desktop pool.

Table 1. Supported Linux Operating Systems for View Agent

Linux Distribution

Architecture

Ubuntu 14.04 and 16.04

Note:

You must apply one of the solutions described in VMWare KB article http://kb.vmware.com/kb/2151294.

x64

Ubuntu 12.04

x64

RHEL 6.6, 6.7, 6.8, 6.9, 7.2, 7.3, and 7.4

x64

CentOS 6.6, 6.7, 6.8, 6.9, 7.2, 7.3, and 7.4

x64

NeoKylin 6 Update 1

x64

SLED 11 SP3/SP4, SLED 12 SP1/SP2

x64

SLES 12 SP1/SP2

x64

Note:

Linux agent has dependency packages on some Linux distributions. See Install Dependency Packages for Horizon Agent for more information.

Required Platform and Horizon 7 Software Versions

To install and use Horizon for Linux, your deployment must meet certain requirements for the vSphere platform, Horizon 7, and the Horizon Client software.

Table 2. Required Platform and Horizon 7 Software Versions

Platform and Software

Supported Versions

vSphere platform version

  • vSphere 6.0 U2 or a later release

  • vSphere 6.5 or a later release

Horizon environment

  • Horizon Connection Server 7.3

Horizon Client software

  • Horizon Client 4.6.0 for Android

  • Horizon Client 4.6.0 for Windows

  • Horizon Client 4.6.0 for Linux

  • Horizon Client 4.6.0 for Mac OS X

  • Horizon Client 4.6.0 for iOS (iPad Pro)

  • HTML Access 4.6.0 on Chrome, Firefox, and Internet Explorer

  • Zero clients are not supported

TCP Ports Used by Linux Virtual Machines

View Agent and Horizon Clients use TCP ports for network access between each other and various View server components.

Table 3. TCP Ports Used by Linux Virtual Machines

Source

Port

Target

Port

Protocol

Description

Horizon Client

*

Linux Agent

22443

TCP

Blast if Blast Security Gateway is not used

Security Server, View Connection Server, or Access Point appliance

*

Linux Agent

22443

TCP

Blast if Blast Security Gateway is used

View Agent

*

View Connection Server

4001, 4002

TCP

JMS SSL traffic.

Note:

For more information on TCP and UDP ports used by clients, see TCP and UDP Ports Used by Clients and View Agent in the Horizon Client and View Agent Security in View document.

Verify the Linux Account Used by Linux Virtual Machines

Account Name and Account Type lists the account name and account type used by Linux virtual machines.

Table 4. Account Name and Account Type

Account Name

Account Type

Used By

root

Linux OS built-in

Java Standalone Agent, mksvchanserver, shell scripts

vmwblast

Created by Linux Agent installer

VMwareBlastServer

<current login user>

Linux OS built-in or AD user or LDAP user

Python script

Desktop Environment

Horizon 7 for Linux supports multiple desktop environments on different Linux distributions. Supported Desktop Environments lists the default desktop environments for each Linux distribution and the additional desktop environments supported by Horizon 7 for Linux.

Table 5. Supported Desktop Environments

Linux Distribution

Default Desktop Environment

Desktop Environments Supported by Horizon 7 for Linux Desktops

Ubuntu 16.04

Unity

Gnome Flashback (Metacity), K Desktop Environment (KDE), MATE

Ubuntu 14.04

Unity

Gnome Fallback (Metacity), KDE, MATE

Ubuntu 12.04

Unity

Unity

RHEL/CentOS 6.x

Gnome

Gnome, KDE

RHEL/CentOS 7.x

Gnome

Gnome, KDE

SLED 11 SP4

Gnome

Gnome, KDE

SLED 12 SP1/SP2

Gnome

Gnome

SLES 12 SP1/SP2

Gnome

Gnome

NeoKylin 6 Update 1

Mate

Mate

To change the default desktop environment used on one of the supported Linux distributions, you must use the following steps and commands appropriate for your Linux desktop.

Note:

Single sign-on (SSO) for KDE and the MATE Desktop Environment only works when your Linux desktop is using the default greeter (login screen). You must install KDE and MATE using the commands listed in Commands to Install Desktop Environments.

When using SLED 11 SP3/SP4, RHEL/CentOS 7, and Ubuntu 14.04/16.04 distributions, SSO fails to unlock a locked KDE session. You must manually enter your password to unlock the locked session.

  1. Install the supported Linux distribution's operating system with the default desktop environment setting.

  2. Run the appropriate commands in Commands to Install Desktop Environments for your specific Linux distribution.

    Table 6. Commands to Install Desktop Environments

    Linux Distribution

    New Default Desktop Environment

    Commands to Change the Default Desktop Environment

    RHEL/CentOS 6

    KDE

    # yum	groupinstall "X Window System" "KDE Desktop"

    RHEL/CentOS 7

    KDE

    # yum	groupinstall "KDE Plasma Workspaces"

    SLED 11 SP4

    KDE

    # zypper install -t	pattern desktop-kde

    Ubuntu 14.04/16.04

    KDE

    # apt install plasma-desktop

    Ubuntu 16.04

    MATE 1.16

    # apt-add-repository ppa:ubuntu-mate-dev/xenial-mate 
    # apt update
    # apt upgrade
    # apt install	mate
    # apt install	ubuntu-mate-themes

    Ubuntu 14.04

    MATE 1.8

    # apt-add-repository ppa:ubuntu-mate-dev/ppa
    # apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
    # apt-get update
    # apt-get upgrade
    # apt-get	install mate

    Ubuntu 16.04

    Gnome Flashback (Metacity)

    # apt install gnome-session-flashback

    Ubuntu 14.04

    Gnome Fallback (Metacity)

    # apt-get install gnome-session-fallback
  3. To begin using the new default desktop environment, restart the desktop.

If you enabled SSO on a Linux desktop that has multiple desktop environments installed, use the following information to select the desktop environment to use in an SSO session.

  • For Ubuntu 14.04/16.04 and RHEL/CentOS 7.x, use the information in SSODesktopType Option to set the SSODesktopType option in /etc/vmware/viewagent-custom.conf file to specify the desktop environment to use with SSO.

    Table 7. SSODesktopType Option

    Desktop Type

    SSODesktopType Option Setting

    MATE

    SSODesktopType=UseMATE

    GnomeFlashback

    SSODesktopType=UseGnomeFlashback

    KDE

    SSODesktopType=UseKdePlasma

    GnomeClassic

    SSODEsktopType=UseGnomeClassic

  • For RHEL/CentOS 6.x and SLED 11 SP3/SPF4, for the SSO login session to use KDE, remove all the desktop startup files, except for the KDE startup file, from the /usr/share/xsession directory. Use the following set of commands as an example.

    # cd /usr/share/xsessions
    # mkdir backup
    # mv *.desktop backup
    # mv backup/kde*.desktop ./

    After the initial setup, the end user must log out or reboot their Linux desktop to make KDE as the default desktop in their next SSO session.

If you disabled SSO on a Linux desktop that has multiple desktop environments installed, you do not need to perform any of the previously described steps. The end users have to select their desired desktop environment when they log in to that Linux desktop.

Network Requirements

VMware Blast Extreme supports both User Datagram Protocol (UDP) and Transmission Control Protocol (TCP), and their performances are affected by the network condition. To receive the best user experience, select UDP or TCP based on the network condition.

  • Select TCP if the network condition is good, such as in a local area network (LAN) environment.

  • Select UDP if the network condition is poor, such as in a wide area network (WAN) environment with packet loss and time delay.

Use a network analyzer tool, such as Wireshark, to determine whether VMware Blast Extreme is using TCP or UDP. Use the following set of steps, which use Wireshark, as a reference example.

  1. Download and install Wireshark on your Linux VM.

    For RHEL/CentOS 6:

    sudo yum install wireshark

    For Ubuntu 14.04/16.04:

    sudo apt install tshark

    For SLE 11/12:

    sudo zypper install wireshark

  2. Connect to the Linux desktop using VMware Horizon Client.

  3. Open a terminal window and run the following command, which displays the TCP package or UDP package used by VMware Blast Extreme.

    sudo tshark -i any | grep 22443

USB Redirection and Client Drive Redirection (CDR) features are sensitive to network conditions. If the network condition is bad, such as limited bandwidth with time delay and packet loss, the user experience becomes poor. In such condition, the end user might experience one of the following.

  • Copying remote files can be slow. In this situation, transmit smaller sized files instead.

  • USB device does not appear in the remote Linux desktop.

  • USB data does not transfer completely. For example, if you copy a large file, you might get a file smaller in size than the original file.

VHCI Driver for USB Redirection

The USB redirection feature is supported beginning with Horizon 7 version 7.1 for Linux desktops. The feature has a dependency on the USB Virtual Host Controller Interface (VHCI) kernel driver. You must patch the VHCI driver to support USB 3.0.

The Horizon for Linux installer includes the VHCI driver binary for the default kernel of the supported Linux distributions. The installer installs the VHCI driver when the USB redirection feature is selected. Default Kernel Versions lists the default kernel versions that the Horizon for Linux installer installs.

Table 8. Default Kernel Versions

Linux Distribution

Default Kernel Version

RHEL/CentOS 6.9

2.6.32-696.el6.x86_64

SUSE 12 SP2

4.4.21-69-default

RHEL/CentOS 7.3

3.10.0-514.el7.x86_64

Ubuntu 14.04

3.13.0-24-generic

Ubuntu 16.04

4.4.0-21-generic

If your Linux system uses a kernel version that is different from the default versions included with the Horizon for Linux installer, you must download the USB VHCI source code from https://sourceforge.net/projects/usb-vhci/files/linux%20kernel%20module/. You must then compile the VHCI driver source code and install the resulting binary on your Linux system.

Note:

The VHCI driver installation must be done before the installation of Horizon for Linux.

After you download the latest version of the USB VHCI driver source code, use the commands in Compile and Install USB VHCI Driver to compile and install it on your Linux system. For example, if you unpack the installation file, VMware-horizonagent-linux-x86_64-<version>-<build-number>.tar.gz, under the /install_tmp/ directory, the full-path_to_patch-file is /install_tmp/VMware-horizonagent-linux-x86_64-<version>-<buildnumber>/resources/vhci/patch/vhci.patch and the patch command to use is

# patch -p1 < /install_tmp/VMware-horizonagent-linux-x86_64-<version>-<build-number>/resources/vhci/patch/vhci.patch

Table 9. Compile and Install USB VHCI Driver

Linux Distribution

Steps to Compile and Install USB VHCI Driver

Ubuntu 14.04

Ubuntu 16.04

Compile and install the VHCI drivers.

# tar -xzvf vhci-hcd-1.15.tar.gz
# cd vhci-hcd-1.15
# patch -p1 < full-path_to_patch-file
# make clean && make && make install

RHEL/CentOS 6.9

RHEL/CentOS 7

  1. Install the dependency packages.

    # yum install gcc-c++
    # yum install kernel-devel-$(uname -r)
    # yum install kernel-headers-$(uname -r)
    # yum install patch
  2. Compile and install the VHCI drivers.

    # tar -xzvf vhci-hcd-1.15.tar.gz
    # cd vhci-hcd-1.15
    # patch -p1 < full-path_to_patch-file
    # make clean && make && make install

SUSE 11 SP4

SUSE 12 SP2

  1. Find out the version of the current kernel package

    # rpm -qa | grep kernel-default-$(echo $(uname -r) | cut -d '-' -f 1,2)

    The output is the name of the kernel package currently installed. If, for example, the package name is kernel-default-3.0.101-63.1, then the current kernel package version is 3.0.101-63.1.

  2. Install the dependency packages.

    1. For SUSE 11, install the kernel-source and kernel-default-devel packages that match the current kernel; the gcc and the patch packages.

       # zypper install --oldpackage kernel-source-<kernel-package-version> \
      kernel-default-devel-<kernel-package-version> gcc patch

      For example:

       # zypper install --oldpackage kernel-source-3.0.101-63.1 kernel-default-devel-3.0.101-63.1 gcc patch

    2. For SUSE 12, install the kernel-devel, kernel-default-devel, kernel-macros, and the patch packages.

    # zypper install --oldpackage kernel-devel-<kernel-package-version> \
    kernel-default-devel-<kernel-package-version> kernel-macros-<kernel-package-version> patch

    For example:

    # zypper install --oldpackage kernel-devel-4.4.21-90.1 kernel-default-devel-4.4.21-90.1 kernel-macros-4.4.21-90.1 patch

  3. Compile and install the VHCI drivers.

    # tar -xzvf vhci-hcd-1.15.tar.gz
    # cd vhci-hcd-1.15
    # patch -p1 < full-path_to_patch-file
    # mkdir -p linux/$(echo $(uname -r) | cut -d '-' -f 1)/drivers/usb/core
    # cp /lib/modules/$(uname -r)/source/include/linux/usb/hcd.h linux/$(echo $(uname -r) | cut -d '-' -f 1)/drivers/usb/core
    # make clean && make && make install

If your Linux kernel version is changed, you must recompile and reinstall the VHCI driver, but you do not need to reinstall Horizon for Linux.

You can also add Dynamic Kernel Module Support (DKMS) to the VHCI driver using the steps similar to the following example for an Ubuntu 16.04 system.

  1. Install the kernel headers.

    # apt install linux-headers-`uname -r`
  2. Install dkms using the following command.

    # apt install dkms
  3. Extract and patch the VHCI tar file.

    # tar xzvf vhci-hcd-1.15.tar.gz
    # cd vhci-hcd-1.15
    # patch -p1 <full-path_to_patch-file>
    # cd ..
  4. Copy the extracted VHCI source files to the /usr/src directory.

    # cp -r vhci-hcd-1.15 /usr/src/usb-vhci-hcd-1.15
  5. Create a file named dkms.conf and place it in the /usr/src/usb-vhci-hcd-1.15 directory.

    # touch /usr/src/usb-vhci-hcd-1.15/dkms.conf
  6. Add the following contents to the dkms.conf file.

    PACKAGE_NAME="usb-vhci-hcd
    PACKAGE_VERSION=1.15
    MAKE_CMD_TMPL="make KVERSION=$kernelver"
    
    CLEAN="$MAKE_CMD_TMPL clean"
    
    BUILT_MODULE_NAME[0]="usb-vhci-iocifc"
    DEST_MODULE_LOCATION[0]="/kernel/drivers/usb/host"
    MAKE[0]="$MAKE_CMD_TMPL"
    
    BUILT_MODULE_NAME[1]="usb-vhci-hcd"
    DEST_MODULE_LOCATION[1]="/kernel/drivers/usb/host"
    MAKE[1]="$MAKE_CMD_TMPL"
    
    AUTOINSTALL="YES"
  7. Add this VHCI driver in dkms.

    # dkms add usb-vhci-hcd/1.15
  8. Build the VHCI driver.

    # dkms build usb-vhci-hcd/1.15
  9. Install the VHCI driver.

    # dkms install usb-vhci-hcd/1.15