要安装 Horizon 7 for Linux,您的 Linux 系统必须满足操作系统、Horizon 7 和 vSphere 平台的特定要求。

Horizon Agent 支持的 Linux 版本

下表列出了 Horizon Agent 支持的 Linux 操作系统。

表 1. Horizon Agent 支持的 Linux 操作系统
Linux 分发包 架构
Ubuntu 16.04 和 18.04
注: 您必须应用 VMware 知识库文章 http://kb.vmware.com/kb/2151294 中所述的解决方案之一。
x64
RHEL 6.6、6.7、6.8、6.9、6.10、7.2、7.3、7.4、7.5、7.6、7.7、8.0 和 8.1 x64
CentOS 6.6、6.7、6.8、6.9、6.10、7.2、7.3、7.4、7.5、7.6、7.7、8.0 和 8.1 x64
NeoKylin 6 Update 1 x64
SLED 12.x SP1/SP2/SP3 x64
SLES 12.x SP1/SP2/SP3 x64
注: Linux 代理在某些 Linux 分发包中具有依赖项包。有关详细信息,请参阅 安装 Horizon Agent 的依赖项包
注: 在 RHEL/CentOS 8.x 系统上,Horizon Agent 仅支持 X11 显示服务器协议。不支持 Wayland 协议。

所需的平台和 Horizon 7 软件版本

要安装并使用 Horizon 7 for Linux,您的部署必须满足 vSphere 平台、Horizon 7Horizon Client 软件的特定要求。

表 2. 所需的平台和 Horizon 7 软件版本
平台和软件 支持的版本
vSphere 平台版本
  • vSphere 6.0 U2 或更高版本
  • vSphere 6.5 U1 或更高版本
  • vSphere 6.7 或更高版本
Horizon 环境
  • Horizon 连接服务器 7.11
Horizon Client 软件
  • 适用于 Android 的 Horizon Client 5.3.0
  • 适用于 Windows 的 Horizon Client 5.3.0
  • 适用于 Linux 的 Horizon Client 5.3.0
  • 适用于 Mac OS X 的 Horizon Client 5.3.0
  • 适用于 iOS 的 Horizon Client 5.3.0 (iPad Pro)
  • Chrome、Firefox 和 Internet Explorer 上的 HTML Access 5.3.0
  • 不支持零客户端。

Linux 虚拟机使用的 TCP/UDP 端口

Horizon Agent 和 Horizon Client 使用 TCP 或 UDP 端口进行相互之间以及它们与各种 Horizon Server 组件之间的网络访问。

表 3. Linux 虚拟机使用的 TCP/UDP 端口
端口 目标 端口 协议 说明
Horizon Client * Linux 代理 22443 TCP/UDP 如果未使用 Blast 安全网关,则为 Blast
安全服务器、Horizon 连接服务器或 Access Point 设备 * Linux 代理 22443 TCP/UDP 如果使用了 Blast 安全网关,则为 Blast
Horizon Agent * Horizon 连接服务器 4001、4002 TCP JMS SSL 流量。
注: 有关客户端使用的 TCP 和 UDP 端口的更多信息,请参阅 Horizon Client 和 Agent 安全指南文档和 VMware Horizon 7 指南中的“网络端口”

要允许用户连接到其 Linux 桌面,这些桌面必须可以接受来自 Horizon Client 设备、安全服务器和 Horizon Connection Server的入站 TCP 连接。

在 Ubuntu 和 Kylin 分发包中,已默认配置 iptables 防火墙并设置了一条“ACCEPT”的输入策略。

在 RHEL 和 CentOS 分发包中,如果可能,Horizon Agent 安装程序脚本将配置 iptables 防火墙并设置一条“ACCEPT”的输入策略。

请确保 RHEL 或 CentOS 客户机操作系统上的 iptables 具有一条“ACCEPT”的输入策略,用于接受来自 Blast 端口 22443 的新连接。

启用 BSG 时,将通过安全服务器或 Horizon Connection Server上的 BSG 在 Horizon Client 设备与 Linux 桌面之间建立客户端连接。未启用 BSG 时,将直接在 Horizon Client 设备与 Linux 桌面之间建立连接。

验证 Linux 虚拟机使用的 Linux 帐户

帐户名称和帐户类型中列出了 Linux 虚拟机使用的帐户名称和帐户类型。

表 4. 帐户名称和帐户类型
帐户名称 帐户类型 使用者
Linux 操作系统内置 Java Standalone Agent、mksvchanserver、Shell 脚本
vmwblast 由 Linux 代理安装程序创建 VMwareBlastServer
<当前登录用户> Linux 操作系统内置或 AD 用户或 LDAP 用户 Python 脚本

桌面环境

Horizon 7 for Linux 支持不同 Linux 分发包中的多种桌面环境。 支持的桌面环境中列出了每个 Linux 分发包的默认桌面环境,以及 Horizon 7 for Linux 支持的其他桌面环境。
表 5. 支持的桌面环境
Linux 分发包 默认桌面环境 Horizon 7 for Linux 桌面支持的桌面环境
Ubuntu 18.04 Gnome Gnome Ubuntu、K 桌面环境 (KDE)、MATE
Ubuntu 16.04 Unity Gnome Flashback (Metacity)、KDE、MATE
RHEL/CentOS 6.x Gnome Gnome、KDE
RHEL/CentOS 7.x Gnome Gnome、KDE
RHEL/CentOS 8.x Gnome Gnome
SLED 12 SP1/SP2/SP3 Gnome Gnome
SLES 12 SP1/SP2/SP3 Gnome Gnome
NeoKylin 6 Update 1 Mate Mate
要更改在某个支持的 Linux 分发包中使用的默认桌面环境,您必须执行以下步骤并使用适用于您的 Linux 桌面的命令。
注: 仅当您的 Linux 桌面使用 GDM3 欢迎程序(登录屏幕)时,才可对 KDE 和 MATE 桌面环境使用单点登录 (SSO)。您必须使用 用于安装桌面环境的命令中列出的命令安装 KDE 和 MATE。

使用 RHEL/CentOS 7.x 和 Ubuntu 18.04/16.04 分发包时,SSO 无法对锁定的 KDE 会话进行解锁。您必须手动输入密码才能对锁定的会话解锁。

  1. 使用默认桌面环境设置安装支持的 Linux 分发包的操作系统。
  2. 为您的特定 Linux 分发包运行 用于安装桌面环境的命令中的相应命令。
    表 6. 用于安装桌面环境的命令
    Linux 分发包 新的默认桌面环境 用于更改默认桌面环境的命令
    RHEL/CentOS 6.x KDE
    # yum	groupinstall "X Window System" "KDE Desktop"
    RHEL/CentOS 7.x KDE
    # yum	groupinstall "KDE Plasma Workspaces"
    Ubuntu 18.04/16.04 KDE
    # apt install plasma-desktop
    Ubuntu 18.04 MATE 1.225
    # apt install	ubuntu-mate-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 16.04 Gnome Flashback (Metacity)
    # apt install gnome-session-flashback
  3. 要开始使用新的默认桌面环境,请重新启动桌面。
如果您在装有多个桌面环境的 Linux 桌面上启用了 SSO,请使用以下信息选择要在 SSO 会话中使用的桌面环境。
  • 对于 Ubuntu 18.04/16.04 和 RHEL/CentOS 7.x,请使用 SSODesktopType 选项中的信息设置 /etc/vmware/viewagent-custom.conf 文件中的 SSODesktopType 选项,以指定要用于 SSO 的桌面环境。
    表 7. SSODesktopType 选项
    桌面类型 SSODesktopType 选项设置
    MATE SSODesktopType=UseMATE
    GnomeUbuntu SSODesktopType=UseGnomeUbuntu
    GnomeFlashback SSODesktopType=UseGnomeFlashback
    KDE SSODesktopType=UseKdePlasma
    GnomeClassic SSODEsktopType=UseGnomeClassic
  • 对于 RHEL/CentOS 6.x,要让 SSO 登录会话使用 KDE,请从 /usr/share/xsession 目录中移除 KDE 启动文件以外的所有桌面启动文件。例如,可使用下面的一组命令。
    # cd /usr/share/xsessions
    # mkdir backup
    # mv *.desktop backup
    # mv backup/kde*.desktop ./
    完成初始设置后,最终用户必须注销或重新引导其 Linux 桌面,才能将 KDE 用作下一个 SSO 会话中的默认桌面。
  • 对于 RHEL/CentOS 8.x,要让 SSO 登录会话使用 Gnome Classic,请从 /usr/share/xsession 目录中移除 Gnome Classic 启动文件以外的所有桌面启动文件。例如,可使用下面的一组命令。
    # cd /usr/share/xsessions
    # mkdir backup
    # mv *.desktop backup
    # mv backup/gnome-classic.desktop ./
    完成初始设置后,最终用户必须注销或重新引导其 Linux 桌面,才能将 Gnome Classic 用作下一个 SSO 会话中的默认桌面。

如果您在装有多个桌面环境的 Linux 桌面上禁用了 SSO,则无需执行前面所述的任何步骤。最终用户在登录该 Linux 桌面时,必须选择其所需的桌面环境。

网络要求

VMware Blast Extreme 支持用户数据报协议 (UDP) 和传输控制协议 (TCP)。网络状况会影响 UDP 和 TCP 的性能。为获得最佳用户体验,请根据网络条件选择 UDP 或 TCP。
  • 如果网络条件良好(例如处于局域网 (LAN) 环境中),请选择 TCP。
  • 如果网络条件较差(例如处于广域网 (WAN) 环境中,在该环境中可能会发生数据包丢失和时间延迟),请选择 UDP。
使用网络分析器工具(例如,Wireshark)来确定 VMware Blast Extreme 使用的是 TCP 还是 UDP。可使用下面的一组步骤(使用 Wireshark)作为参考示例。
  1. 在您的 Linux 虚拟机上下载并安装 Wireshark。
    对于 RHEL/CentOS 6:
    sudo yum install wireshark
    对于 Ubuntu 18.04/16.04:
    sudo apt install tshark
    对于 SLED/SLES 12:
    sudo zypper install wireshark
  2. 使用 VMware Horizon Client 连接到 Linux 桌面。
  3. 打开终端窗口并运行以下命令,此命令将显示 VMware Blast Extreme 使用的 TCP 软件包或 UDP 软件包。
    sudo tshark -i any | grep 22443
USB 重定向和客户端驱动器重定向 (CDR) 功能容易受网络条件的影响。如果网络条件不佳(例如带宽受限,并且伴有时间延迟和数据包丢失),用户体验会变差。在此类条件下,最终用户可能会遇到以下情形。
  • 复制远程文件的速度可能较慢。在这种情况下,请改为传输较小的文件。
  • 远程 Linux 桌面中不显示 USB 设备。
  • USB 数据无法完整传输。例如,在复制大型文件时,获得的文件可能小于原始文件。

用于 USB 重定向的 VHCI 驱动程序

USB 重定向功能依赖于 USB 虚拟主机控制器接口 (Virtual Host Controller Interface, VHCI) 内核驱动程序。为支持 USB 3.0 和 USB 重定向功能,必须执行以下步骤:

  1. https://sourceforge.net/projects/usb-vhci/files/linux%20kernel%20module/ 下载 USB VHCI 源代码。
  2. 要编译 VHCI 驱动程序源代码并在 Linux 系统上安装生成的二进制文件,请使用 编译并安装 USB VHCI 驱动程序中的命令。
    例如,如果在 /install_tmp/ 目录下解压缩安装文件 VMware-horizonagent-linux-x86_64-<version>-<build-number>.tar.gz,那么 full-path_to_patch-file/install_tmp/VMware-horizonagent-linux-x86_64-<version>-<buildnumber>/resources/vhci/patch/vhci.patch ,并且要使用的 patch 命令是
    # patch -p1 < /install_tmp/VMware-horizonagent-linux-x86_64-<version>-<build-number>/resources/vhci/patch/vhci.patch
注: VHCI 驱动程序的安装必须在安装 Horizon for Linux 之前完成。
表 8. 编译并安装 USB VHCI 驱动程序
Linux 分发包 编译并安装 USB VHCI 驱动程序的步骤
Ubuntu 18.04
  1. 安装依赖项包。
    # apt-get install make
    # apt-get install gcc
    # apt-get install libelf-dev
  2. 编译并安装 VHCI 驱动程序。
    # 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

Ubuntu 16.04

编译并安装 VHCI 驱动程序。
# 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/6.10

RHEL/CentOS 7.x

RHEL/CentOS 8.x

  1. 安装依赖项包。
    # yum install gcc-c++
    # yum install kernel-devel-$(uname -r)
    # yum install kernel-headers-$(uname -r)
    # yum install patch
    # yum install elfutils-libelf-devel
  2. 编译并安装 VHCI 驱动程序。
    # 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
  3. (RHEL/CentOS 8.x) 为了确保 VHCI 驱动程序能够与 USB 重定向功能一起正常工作,请为 USB 驱动程序配置签名设置。
    1. 为 USB 驱动程序创建 SSL 密钥对。
      openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"
    2. 对 USB 驱动程序进行签名。
      sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/kernel/drivers/usb/host/usb-vhci-iocifc.ko
      sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/kernel/drivers/usb/host/usb-vhci-hcd.ko
    3. 注册用于 UEFI 安全引导的密钥。
      sudo mokutil --import MOK.der
      注: 此命令会发出一个为 UEFI 安全引导设置计算机所有者密钥 (Machine Owner Key, MOK) 密码的请求。
    4. 要在 vSphere 控制台中设置 UEFI 安全引导,请重新引导系统。有关更多信息,请参阅 https://sourceware.org/systemtap/wiki/SecureBoot

SLED/SLES 12 SP2

  1. 确定当前内核软件包的版本。
    # rpm -qa | grep kernel-default-$(echo $(uname -r) | cut -d '-' -f 1,2)

    输出为当前安装的内核软件包的名称。例如,如果软件包名称为 kernel-default-3.0.101-63.1,那么,当前内核软件包的版本为 3.0.101-63.1。

  2. 安装 kernel-develkernel-default-develkernel-macrospatch 软件包。
    # zypper install --oldpackage kernel-devel-<kernel-package-version> \
    kernel-default-devel-<kernel-package-version> kernel-macros-<kernel-package-version> patch
    例如:
    # 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. 编译并安装 VHCI 驱动程序。
    # 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

此外,请遵循以下原则:

  • 如果您的 Linux 内核更改为新版本,您必须重新编译并重新安装 VHCI 驱动程序,但无需重新安装 Horizon for Linux。
  • 您还可以使用与以下 Ubuntu 18.04/16.04 系统示例类似的步骤,为 VHCI 驱动程序添加动态内核模块支持 (Dynamic Kernel Module Support, DKMS)。
    1. 安装内核头文件。
      # apt install linux-headers-`uname -r`
    2. 使用以下命令安装 dkms
      # apt install dkms
    3. 提取和修补 VHCI TAR 文件。
      # tar xzvf vhci-hcd-1.15.tar.gz
      # cd vhci-hcd-1.15
      # patch -p1 <full-path_to_patch-file>
      # cd ..
    4. 将提取的 VHCI 源文件复制到 /usr/src 目录。
      # cp -r vhci-hcd-1.15 /usr/src/usb-vhci-hcd-1.15
    5. 创建一个名为 dkms.conf 的文件,并将其放在 /usr/src/usb-vhci-hcd-1.15 目录中。
      # touch /usr/src/usb-vhci-hcd-1.15/dkms.conf
    6. dkms.conf 文件添加以下内容。
      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. dkms 中添加此 VHCI 驱动程序。
      # dkms add usb-vhci-hcd/1.15
    8. 生成 VHCI 驱动程序。
      # dkms build usb-vhci-hcd/1.15
    9. 安装 VHCI 驱动程序。
      # dkms install usb-vhci-hcd/1.15