Horizon Agent for Linux를 설치하려면 Linux 운영 체제, Linux 가상 시스템, VMware Horizon 시스템 구성 요소 및 vSphere 플랫폼에 대한 특정 요구 사항을 충족해야 합니다.

Horizon Agent에 지원되는 Linux 버전

다음 표에는 Horizon Agent에 대해 테스트되고 지원되는 Linux 운영 체제가 나와 있습니다.

표 1. Horizon Agent에 대한 지원되는 Linux 운영 체제
Linux 배포 아키텍처
Ubuntu 20.04 및 18.04 x64
RHEL(Red Hat Enterprise Linux) Workstation 7.6, 7.7, 7.8, 7.9, 8.0, 8.1, 8.2, 8.3, 8.4 및 8.5 x64
Red Hat Enterprise Linux(RHEL) Server 7.8, 7.9, 8.4 및 8.5 x64
CentOS 7.6, 7.7, 7.8, 7.9 x64
SLED(SUSE Linux Enterprise Desktop) 12 SP3, 15 SP2 및 15 SP3 x64
SLES(SUSE Linux Enterprise Server) 12 SP3, 12 SP5, 15 SP2 및 15 SP3 x64
참고: 일부 Linux 배포의 경우 Horizon Agent에 종속성 패키지가 포함되어 있습니다. 자세한 내용은 Horizon Agent에 대한 종속성 패키지 설치의 내용을 참조하십시오.

일부 기능은 제한된 Linux 운영 체제 하위 집합에서 지원됩니다. 자세한 내용은 특정 기능에 대해 설명하는 이 문서의 섹션을 참조하십시오.

필수 플랫폼 및 소프트웨어 버전

Horizon Agent for Linux를 설치하고 사용하려면 배포가 vSphere 플랫폼, Horizon Connection Server 및 Horizon Client 소프트웨어에 대한 특정 요구 사항을 충족해야 합니다.

표 2. 필수 플랫폼 VMware Horizon 소프트웨어 버전
플랫폼 및 소프트웨어 지원되는 버전
vSphere 플랫폼 버전
  • vSphere 7.0 이상 릴리스
  • vSphere 6.7 이상 릴리스
  • vSphere 6.5 U1 이상 릴리스
Horizon 환경
  • Horizon Connection Server 2111
Horizon Client 소프트웨어
  • Android용 Horizon Client 2203
  • Windows용 Horizon Client 2203
  • Linux용 Horizon Client 2203
  • Mac용 Horizon Client 2203
  • iOS용 Horizon Client 2203
  • Chrome 및 Firefox의 HTML Access 2203
  • VMware Blast 프로토콜을 지원하는 제로 클라이언트
    참고: Teradici PCoIP 제로 클라이언트는 지원되지 않습니다.

Linux 가상 시스템에서 사용하는 TCP/UDP 포트

Horizon 8 Agent 및 Horizon Client에서는 상호 네트워크 액세스 그리고 다양한 Horizon 8 Server 구성 요소와의 네트워크 액세스에 TCP 또는 UDP 포트를 사용합니다.

표 3. Linux 가상 시스템에서 사용하는 TCP/UDP 포트
소스 포트 대상 포트 프로토콜 설명
Horizon Client * Linux Agent 22443 TCP/UDP Blast 보안 게이트웨이를 사용할 경우 Blast
Horizon 8 연결 서버 또는 Unified Access Gateway 장치 * Linux Agent 22443 TCP/UDP Blast 보안 게이트웨이를 사용할 경우 Blast
Horizon 8 Agent * Horizon 8 연결 서버 4001, 4002 TCP JMS SSL 트래픽
참고: 클라이언트에서 사용하는 TCP 및 UDP 포트에 대한 자세한 내용은 " Horizon 보안" 문서 및 VMware Horizon의 네트워크 포트 가이드를 참조하십시오.

사용자가 Linux 데스크톱에 연결하도록 허용하려면 데스크톱은 Horizon Client 디바이스, Unified Access GatewayHorizon Connection Server에서 수신 TCP 연결을 수락할 수 있어야 합니다.

Ubuntu 배포에서 iptables 방화벽은 기본적으로 입력 정책 ACCEPT를 사용하여 구성됩니다.

RHEL 및 CentOS 배포에서는 가능한 경우 Horizon Agent 설치 관리자 스크립트가 입력 정책 ACCEPT를 사용하여 iptables 방화벽을 구성합니다.

RHEL 또는 CentOS 게스트 운영 체제의 iptables에는 Blast 포트 22443에서 들어오는 새 연결에 대해 입력 정책 ACCEPT가 지정되어 있습니다.

BSG가 사용되도록 설정되면 Horizon Connection Server의 BSG를 통해 Horizon Client 디바이스에서 Linux 데스크톱으로의 클라이언트 연결이 설정됩니다. BSG가 활성화되지 않으면 Horizon Client 디바이스에서 Linux 데스크톱으로 직접 연결이 설정됩니다.

Linux 가상 시스템에서 사용하는 Linux 계정 확인

다음 표에서는 Linux 가상 시스템에서 사용하는 계정 이름 및 계정 유형을 나열합니다.

표 4. 계정 이름 및 계정 유형
계정 이름 계정 유형 사용자
루트 Linux OS 내장 Java Standalone Agent, mksvchanserver, 셸 스크립트
vmwblast Linux Agent 설치 관리자에서 생성 VMwareBlastServer
<현재 로그인 사용자> Linux OS 내장 또는 AD 사용자 또는 LDAP 사용자 Python 스크립트

데스크톱 환경

Horizon Agent for Linux는 여러 Linux 배포에서 다중 데스크톱 환경을 지원합니다. 다음 표에는 각 Linux 배포판에 대한 기본 데스크톱 환경 및 Horizon Agent for Linux에서 지원되는 추가 데스크톱 환경이 표시됩니다.
표 5. 지원되는 데스크톱 환경
Linux 배포 기본 데스크톱 환경 Horizon Agent for Linux에서 지원되는 데스크톱 환경
Ubuntu 20.04/18.04 Gnome Gnome Ubuntu, KDE(K Desktop Environment), MATE
RHEL/CentOS 7.x Gnome Gnome, KDE
RHEL 8.x Gnome Gnome
SLED/SLES Gnome Gnome
참고: GDM(Gnome Display Manager)은 Linux 데스크톱에서 지원되는 유일한 디스플레이 관리자입니다. 자세한 내용은 기술 자료 문서 87459를 참조하십시오.

KDE 및 MATE 데스크톱 환경용 SSO(싱글 사인온)는 Linux 데스크톱에서 GDM3 초기 화면(로그인 화면)을 사용 중일 경우에만 작동합니다. 데스크톱 환경을 설치하는 명령에 나열된 명령을 사용하여 KDE 및 MATE를 설치해야 합니다.

RHEL/CentOS 7.x 및 Ubuntu 배포를 사용할 경우 SSO는 잠긴 KDE 세션의 잠금을 해제하지 못합니다. 잠긴 세션의 잠금을 해제하려면 암호를 직접 입력해야 합니다.

지원되는 Linux 배포 중 하나에 사용되는 기본 데스크톱 환경을 변경하려면 다음 단계와 Linux 데스크톱에 대한 적절한 명령을 사용해야 합니다.

  1. 기본 데스크톱 환경 설정을 사용하여 지원되는 Linux 배포의 운영 체제를 설치합니다.
  2. 특정 Linux 배포판에 대해 다음 표에 설명된 적절한 명령을 실행합니다.
    표 6. 데스크톱 환경을 설치하는 명령
    Linux 배포 새 기본 데스크톱 환경 기본 데스크톱 환경을 변경하는 명령
    RHEL/CentOS 7.x KDE
    yum groupinstall "KDE Plasma Workspaces"
    Ubuntu 20.04/18.04 KDE
    apt install plasma-desktop
    Ubuntu 20.04/18.04 MATE 1.225
    apt install ubuntu-mate-desktop
  3. 새 기본 데스크톱 환경을 사용하려면 데스크톱을 다시 시작합니다.
여러 데스크톱 환경이 설치된 Linux 데스크톱에서 SSO를 사용하도록 설정한 경우 다음 정보를 사용하여 SSO 세션에서 사용할 데스크톱 환경을 선택하십시오.
  • Ubuntu 20.04/18.04 및 RHEL/CentOS 7.x의 경우 다음 표의 정보를 사용하여 SSO와 함께 사용할 데스크톱 환경을 지정하도록 /etc/vmware/viewagent-custom.conf 파일의 SSODesktopType 옵션을 설정합니다.
    표 7. SSODesktopType 옵션
    데스크톱 유형 SSODesktopType 옵션 설정
    MATE SSODesktopType=UseMATE
    GnomeUbuntu SSODesktopType=UseGnomeUbuntu
    GnomeFlashback SSODesktopType=UseGnomeFlashback
    KDE SSODesktopType=UseKdePlasma
    GnomeClassic SSODesktopType=UseGnomeClassic
  • RHEL 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(User Datagram Protocol) 및 TCP(Transmission Control Protocol) 모두 지원합니다. 네트워크 상태가 TCP 및 UDP 성능에 영향을 줍니다. 최상의 사용자 환경을 위해서는 네트워크 상태에 따라 UDP 또는 TCP를 선택합니다.
  • LAN(Local Area Network) 환경에서와 같이 네트워크 상태가 양호한 경우에는 TCP를 선택합니다.
  • 패킷 손실 및 시간 지연이 발생하는 WAN(Wide Area Network) 환경에서와 같이 네트워크 상태가 좋지 않은 경우에는 UDP를 선택합니다.
Wireshark와 같은 네트워크 분석기 도구를 사용하여 VMware Blast Extreme이 TCP를 사용하는지 또는 UDP를 사용하는지 확인합니다. Wireshark를 사용하는 다음 단계를 참조 예시로 사용하십시오.
  1. Linux VM에 Wireshark를 다운로드하여 설치합니다.
    RHEL/CentOS:
    sudo yum install wireshark
    Ubuntu:
    sudo apt install tshark
  2. VMware Horizon Client를 사용하여 Linux 데스크톱에 연결합니다.
  3. 터미널 창을 열고 다음 명령을 실행합니다. 그러면 VMware Blast Extreme에서 사용되는 TCP 패키지 또는 UDP 패키지가 표시됩니다.
    sudo tshark -i any | grep 22443
USB 리디렉션 및 CDR(클라이언트 드라이브 리디렉션) 기능은 네트워크 상태에 민감합니다. 시간 지연 및 패킷 손실이 발생하는 제한된 대역폭과 같이 네트워크 상태가 나쁜 경우에는 사용자 환경도 좋지 않습니다. 이러한 상태에서 최종 사용자에게는 다음 중 하나가 발생할 수 있습니다.
  • 원격 파일 복사가 느려질 수 있습니다. 이 상황에서는 대신 더 작은 크기의 파일을 전송합니다.
  • USB 디바이스가 원격 Linux 데스크톱에 나타나지 않습니다.
  • USB 데이터가 완전히 전송되지 않습니다. 예를 들어 큰 파일을 복사하는 경우 파일 크기가 원본 파일보다 더 작아질 수 있습니다.

USB 리디렉션용 VHCI 드라이버

참고: VHCI 드라이버의 올바른 설치 순서를 확인하려면 다음 지침을 따르십시오.
  • .tar.gz tarball 설치 관리자를 사용하여 Horizon Agent를 설치하려면 먼저 tarball 설치 관리자를 다운로드하여 압축을 풀고 VHCI 드라이버를 설치한 다음, USB 리디렉션 기능에 설치 매개 변수를 사용하여 Horizon Agent를 설치해야 합니다.
  • .rpm RPM 설치 관리자를 사용하여 Horizon Agent를 설치하려면 먼저 Horizon Agent를 설치한 다음, VHCI 드라이버를 설치하고 USB 리디렉션 기능을 Horizon Agent 구성에 추가해야 합니다.

자세한 내용은 Linux 가상 시스템에서 Horizon Agent 설치의 내용을 참조하십시오.

USB 리디렉션 기능은 USB VHCI(Virtual Host Controller Interface) 커널 드라이버에 따라 달라집니다. USB 3.0 및 USB 리디렉션 기능을 지원하려면 다음 단계를 수행하여 VHCI 드라이버를 설치해야 합니다.

  1. https://sourceforge.net/projects/usb-vhci/files/linux%20kernel%20module/에서 USB VHCI 소스 코드를 다운로드합니다.
  2. Horizon Agent 설치 관리자 형식에 따라 VHCI 패치 파일의 전체 경로를 식별합니다. 지침은 다음 예를 참조하십시오.
    • (Tarball 설치 관리자) tarball 설치 관리자 VMware-horizonagent-linux-x86_64-YYMM-y.y.y-xxxxxxx.tar.gz를 다운로드한 후 /install_tmp/ 디렉토리 아래에 압축을 풀면 full-path_to_patch-file/install_tmp/VMware-horizonagent-linux-x86_64-YYMM-y.y.y-xxxxxxx/resources/vhci/patch/vhci.patch입니다.
    • (RPM 설치 관리자) RPM 설치 관리자 VMware-horizonagent-linux-YYMM-y.y.y-xxxxxxx.el8.x86_64.rpm을 다운로드한 후 Horizon Agent를 설치하는 데 사용합니다. full-path_to_patch-file/usr/lib/vmware/viewagent/resources/vhci/patch/vhci.patch입니다.
  3. VHCI 드라이버 소스 코드를 컴파일하고 결과 바이너리를 Linux 시스템에 설치하려면 다음 표에 표시된 명령을 사용하십시오. 명령의 full-path_to_patch-file을 이전 단계에서 식별한 파일 경로로 변경합니다.
    예를 들어 파일 경로가 /install_tmp/VMware-horizonagent-linux-x86_64-YYMM-y.y.y-xxxxxx/resources/vhci/patch/vhci.patch인 경우 patch 명령은 다음과 같습니다.
    patch -p1 < /install_tmp/VMware-horizonagent-linux-x86_64-YYMM-y.y.y-xxxxxxxi/resources/vhci/patch/vhci.patch
표 8. USB VHCI 드라이버 컴파일 및 설치
Linux 배포 USB VHCI 드라이버 컴파일 및 설치 단계
Ubuntu 20.04/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

RHEL/CentOS 7.x

RHEL 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 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/" -addext extendedKeyUsage=1.3.6.1.5.5.7.3.3
    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 보안 부팅을 위해 MOK(시스템 소유자 키) 암호를 설정하는 요청을 실행합니다.
    4. vSphere 콘솔에서 UEFI 보안 부팅을 설정하려면 시스템을 재부팅합니다. 자세한 내용은 https://sourceware.org/systemtap/wiki/SecureBoot를 참조하십시오.

SLED/SLES 12.x

SLED/SLES 15.x

  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-devel, kernel-default-devel, kernel-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
  4. (SLED/SLES 15.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/" -addext extendedKeyUsage=1.3.6.1.5.5.7.3.3
    2. USB 드라이버에 대한 서명 파일의 경로를 찾습니다.
      find / -name sign-file

      이 명령은 시스템에 있는 모든 서명 파일의 경로를 반환합니다. USB 드라이버에 대한 서명 파일 경로는 다음 예와 유사합니다.

      /usr/src/linux-5.3.18-24.9-obj/x86_64/default/scripts/
    3. USB 드라이버에 서명합니다. 다음 명령에서 <sign-file-path>는 4b 단계에서 이전에 찾은 서명 파일의 경로입니다.
      sudo /<sign-file-path>/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/kernel/drivers/usb/host/usb-vhci-iocifc.ko
      sudo /<sign-file-path>/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/kernel/drivers/usb/host/usb-vhci-hcd.ko
    4. UEFI 보안 부팅을 위해 키를 등록합니다.
      # sudo mokutil --import MOK.der
      참고: 이 명령은 UEFI 보안 부팅을 위해 MOK(시스템 소유자 키) 암호를 설정하는 요청을 실행합니다.
    5. vSphere 콘솔에서 UEFI 보안 부팅을 설정하려면 시스템을 재부팅합니다. 자세한 내용은 https://sourceware.org/systemtap/wiki/SecureBoot를 참조하십시오.

또한 다음 지침을 따르십시오.

  • Linux 커널이 새 버전으로 변경되면 VHCI 드라이버를 다시 컴파일한 후 다시 설치해야 하지만 Horizon Agent for Linux를 다시 설치할 필요는 없습니다.
  • 또한 Ubuntu 시스템에 대한 다음 예시와 비슷한 단계를 사용하여 VHCI 드라이버에 DKMS(Dynamic Kernel Module Support)를 추가할 수 있습니다.
    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. /usr/src 디렉토리에 압축을 푼 VHCI 소스 파일을 복사합니다.
      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