Linux Virtual Delivery Agent

Konfigurieren der USB-Umleitung

USB-Geräte werden zwischen der Citrix Workspace™-App und dem Linux VDA-Desktop gemeinsam genutzt. Wenn ein USB-Gerät auf den Desktop umgeleitet wird, kann der Benutzer das USB-Gerät so verwenden, als wäre es lokal angeschlossen.

  • Die USB-Umleitung umfasst drei Hauptfunktionsbereiche:

  • Implementierung eines Open-Source-Projekts (VHCI)
  • VHCI-Dienst
  • USB-Dienst

Open-Source VHCI:

Dieser Teil der USB-Umleitungsfunktion entwickelt ein allgemeines System zur gemeinsamen Nutzung von USB-Geräten über ein IP-Netzwerk. Es besteht aus einem Linux-Kernel-Treiber und einigen Benutzermodus-Bibliotheken, die die Kommunikation mit dem Kernel-Treiber ermöglichen, um alle USB-Daten zu erhalten. In der Linux VDA-Implementierung verwendet Citrix den Kernel-Treiber von VHCI wieder. Alle USB-Datenübertragungen zwischen dem Linux VDA und der Citrix Workspace-App sind jedoch im Citrix ICA®-Protokollpaket gekapselt.

VHCI-Dienst:

Der VHCI-Dienst ist ein von Citrix bereitgestellter Open-Source-Dienst zur Kommunikation mit dem VHCI-Kernelmodul. Dieser Dienst fungiert als Gateway zwischen VHCI und dem Citrix USB-Dienst.

USB-Dienst:

Der USB-Dienst stellt ein Citrix-Modul dar, das die gesamte Virtualisierung und Datenübertragung auf dem USB-Gerät verwaltet.

Funktionsweise der USB-Umleitung

Wenn ein USB-Gerät erfolgreich auf den Linux VDA umgeleitet wird, werden typischerweise ein oder mehrere Geräteknoten im Systempfad /dev erstellt. Manchmal ist das umgeleitete Gerät jedoch für eine aktive Linux VDA-Sitzung nicht nutzbar. USB-Geräte benötigen Treiber, um ordnungsgemäß zu funktionieren, und einige Geräte erfordern spezielle Treiber. Wenn keine Treiber bereitgestellt werden, sind die umgeleiteten USB-Geräte für die aktive Linux VDA-Sitzung nicht zugänglich. Um die USB-Gerätekonnektivität sicherzustellen, installieren Sie die Treiber und konfigurieren Sie das System ordnungsgemäß.

Der Linux VDA unterstützt eine Liste von USB-Geräten, die erfolgreich zum und vom Client umgeleitet werden. Darüber hinaus wird das Gerät, insbesondere die USB-Festplatte, ordnungsgemäß gemountet, sodass der Benutzer ohne zusätzliche Konfiguration auf die Festplatte zugreifen kann.

Unterstützte USB-Geräte

Die folgenden Geräte wurden für die Unterstützung dieser Version des Linux VDA verifiziert. Andere Geräte können frei verwendet werden, jedoch mit unerwarteten Ergebnissen:

Hinweis:

Der Linux VDA unterstützt nur USB 2.0-Protokolle.

  • USB-Massenspeichergerät VID:PID Dateisystem
    Netac Technology Co., Ltd 0dd8:173c FAT32
    Kingston Datatraveler 101 II 0951:1625 FAT32
    Kingston Datatraveler GT101 G2 1567:8902 FAT32
    SanDisk SDCZ80 flash drive 0781:5580 FAT32
    WD HDD 1058:10B8 FAT32
    USB-3D-Maus VID:PID  
    3DConnexion SpaceMouse Pro 046d: c62b  
    USB-Scanner VID:PID  
    Epson Perfection V330 photo 04B8: 0142  

Konfigurieren der USB-Umleitung

Eine Citrix-Richtlinie steuert, ob die USB-Geräteumleitung aktiviert oder deaktiviert ist. Darüber hinaus kann der Gerätetyp auch über eine Delivery Controller™-Richtlinie angegeben werden. Beim Konfigurieren der USB-Umleitung für den Linux VDA konfigurieren Sie die folgende Richtlinie und Regeln:

  • Client-USB-Geräteumleitungsrichtlinie
  • Client-USB-Geräteumleitungsregeln

Aktivieren der USB-Umleitungsrichtlinie

Aktivieren (oder deaktivieren) Sie in Citrix Studio die USB-Geräteumleitung zum und vom Client (nur für Workstation-Hosts).

Im Dialogfeld Einstellung bearbeiten:

  1. Wählen Sie Zulässig.
  2. Klicken Sie auf OK.

Abbildung der Aktivierung der USB-Umleitung

Festlegen von USB-Umleitungsregeln

Nachdem Sie die USB-Umleitungsrichtlinie aktiviert haben, legen Sie in Citrix Studio Umleitungsregeln fest, indem Sie angeben, welche Geräte auf dem Linux VDA zugelassen (oder verweigert) werden.

Im Dialogfeld für Client-USB-Geräteumleitungsregeln:

  1. Klicken Sie auf Neu, um eine Umleitungsregel hinzuzufügen, oder auf Bearbeiten, um eine vorhandene Regel zu überprüfen.
  2. Nachdem Sie eine Regel erstellt (oder bearbeitet) haben, klicken Sie auf OK.

Abbildung der Einstellung für Client-USB-Umleitungsregeln

Erstellen des VHCI-Kernelmoduls

Die USB-Umleitung hängt von den VHCI-Kernelmodulen (usb-vhci-hcd.ko und usb-vhci-iocif.ko) ab. Diese Module sind Teil der Linux VDA-Distribution (als Teil des RPM-Pakets). Sie werden basierend auf den offiziellen Linux-Distributions-Kerneln kompiliert und sind in der folgenden Tabelle aufgeführt:

Unterstützte Linux-Distribution Kernel-Version
RHEL 7.7, CentOS 7.7 3.10.0-1062
SUSE 12.3 4.4.73-5-default
Ubuntu 18.04 4.15.0-45-generic
Ubuntu 16.04 4.4.0-142-generic

Wichtig:

Wenn der Kernel Ihres Computers nicht mit dem für den Linux VDA erstellten Treiber kompatibel ist, kann der USB-Dienst möglicherweise nicht gestartet werden. In diesem Fall können Sie die USB-Umleitungsfunktion nur nutzen, wenn Sie Ihre eigenen VHCI-Kernelmodule erstellen.

Überprüfen, ob Ihr Kernel mit den von Citrix erstellten Modulen konsistent ist

Führen Sie in der Befehlszeile den folgenden Befehl aus, um zu überprüfen, ob der Kernel konsistent ist:

insmod /opt/Citrix/VDA/lib64/usb-vhci-hcd.ko
<!--NeedCopy-->

Wenn der Befehl erfolgreich ausgeführt wird, wurde das Kernelmodul erfolgreich geladen und die Version ist mit der von Citrix installierten konsistent.

Wenn der Befehl Fehler aufweist, ist der Kernel nicht mit dem Citrix-Modul konsistent und muss neu erstellt werden.

Erneutes Erstellen des VHCI-Kernelmoduls

Wenn Ihr Kernelmodul nicht mit der Citrix-Version konsistent ist, gehen Sie wie folgt vor:

  1. Laden Sie den LVDA-Quellcode von der Citrix Download-Seite herunter. Wählen Sie die Datei im Abschnitt “Linux Virtual Delivery Agent (Quellen)” aus.

  2. Entpacken Sie die Datei citrix-linux-vda-sources.zip. Navigieren Sie zu linux-vda-sources/vhci-hcd-1.15.tar.bz2 und entpacken Sie die VHCI-Quelldateien mit tar xvf vhci-hcd-1.15.tar.bz2.

  3. Erstellen Sie das Kernelmodul basierend auf den Header-Dateien und der Datei Module.symvers. Verwenden Sie die folgenden Schritte, um die Kernel-Header-Dateien zu installieren und Module.symvers basierend auf der entsprechenden Linux-Distribution zu erstellen:

    RHEL/CentOS:

    yum install kernel-devel
    <!--NeedCopy-->
    

    SUSE 12:

    
    -  zypper install kernel-devel
    
    zypper install kernel-source
    
    <!--NeedCopy-->
    

    Ubuntu:

    
    apt-get install linux-headers
    
    <!--NeedCopy-->
    

    Tipp:

    Wenn die Installation erfolgreich ist, gibt es einen Kernel-Ordner, der wie folgt aussieht:

    /usr/src/kernels/3.10.0-327.10.1.el7.x86_64

  4. Vergewissern Sie sich im Ordner /usr/src/kernels/3.10.0-327.10.1.el7.x86_64, dass die Datei Module.symvers vorhanden ist. Wenn diese Datei nicht im Ordner ist, erstellen Sie den Kernel (indem Sie die folgenden Befehle nacheinander ausführen: make oldconfig; make prepare; make modules; make), um diese Datei zu erhalten, oder kopieren Sie sie aus /usr/src/kernels/3.10.0-327.10.1.el7.x86_64-obj/x86_64/defaults/module.*

  5. Führen Sie die folgenden Befehle aus, um die Entwicklungstools zu installieren.

    RHEL/CentOS:

    yum groupinstall 'Development Tools'
    <!--NeedCopy-->
    

    Ubuntu 18.04:

    apt install build-essential
    apt install libelf-dev
    <!--NeedCopy-->
    

    Ubuntu 16.04:

    apt install build-essential
    <!--NeedCopy-->
    
  6. Ändern Sie in der Datei vhci-hcd-1.15/Makefile das Makefile von VCHI und setzen Sie KDIR auf das Kernelverzeichnis:

    #KDIR = $(BUILD_PREFIX)/lib/modules/$(KVERSION)/build
    
    KDIR = /usr/src/kernels/3.10.0-327.10.1.el7.x86_64
    <!--NeedCopy-->
    
  7. Führen Sie im Ordner vhci-hcd-1.15/ make aus, um den VHCI-Kernel zu erstellen.

    Hinweis:

    Wenn der Build erfolgreich war, werden usb-vhci-hcd.ko und usb-vhci-iocifc.ko im Ordner vhci-hcd-1.15/ erstellt.

  8. Ersetzen Sie das Kernelmodul durch das neu erstellte: cp -f usb-vhci-*.ko /opt/Citrix/VDA/lib64/

  9. Starten Sie den USB-Dienst neu:

    service ctxusbsd restart
    <!--NeedCopy-->
    
  10. Melden Sie sich ab und wieder an der Sitzung an. Überprüfen Sie, ob die USB-Umleitung funktioniert.

Beheben von Problemen beim Kernel-Build

  • Bei bestimmten Kerneln von Ubuntu 16 kann ein Kernel-Build-Fehler auftreten. Der Fehler lautet implicit declaration of function 'copy\_to\_user', siehe den folgenden Screenshot.

    Abbildung des Fehlers "implizite Deklaration der Funktion"

    Der Fehler tritt aufgrund von Header-Dateiänderungen in den Kerneln auf. Als Workaround fügen Sie die Zeile #include <linux/uaccess.h> zur Datei vhci-hcd-1.15/usb-vhci-iocifc.c hinzu.

    Abbildung des Hinzufügens einer Zeile zur Behebung eines Kernel-Build-Fehlers

  • Bei Kernel 4.15.0-29-generic von Ubuntu 16 kann ein Kernel-Build-Fehler auftreten. Der Fehler lautet 'driver\_attr\_debug_output' undeclared, siehe den folgenden Screenshot.

    Abbildung des Fehlers "nicht deklarierter Kernel-Build"

    Der Fehler tritt auf, wenn Symbole im Kernel fehlen. Als Workaround deaktivieren Sie die Makrodefinition für DEBUG in den Dateien vhci-hcd-1.15/usb-vhci-iocifc.c und vhci-hcd-1.15/usb-vhci-hcd.c.

    Abbildung des Deaktivierens des Makros

Beheben von Problemen bei der USB-Umleitung

Verwenden Sie die Informationen in diesem Abschnitt, um verschiedene Probleme zu beheben, die bei der Verwendung des Linux VDA auftreten können.

USB-Datenträger kann nicht ausgeworfen werden

Für die Zugriffssteuerung aller von der Citrix Workspace-App umgeleiteten USB-Datenträger verwaltet der Linux VDA alle diese Geräte mit Administratorrechten, um sicherzustellen, dass nur der Besitzer auf das umgeleitete Gerät zugreifen kann. Daher kann der Benutzer das Gerät ohne Administratorrechte nicht auswerfen.

Abbildung, dass ein Gerät nicht ausgeworfen werden kann

Datei geht verloren, wenn Sie die Umleitung eines USB-Datenträgers beenden

Wenn Sie einen USB-Datenträger an eine Sitzung umleiten und versuchen, ihn zu ändern (z. B. einige Dateien auf dem Datenträger zu erstellen), und dann die Umleitung sofort über die Symbolleiste der Citrix Workspace-App beenden, kann die von Ihnen geänderte oder erstellte Datei verloren gehen. Dieses Problem tritt auf, weil das System beim Schreiben von Daten in ein Dateisystem den Speicher-Cache im Dateisystem einbindet. Die Daten werden nicht auf den Datenträger selbst geschrieben. Wenn Sie die Umleitung über die Symbolleiste der Citrix Workspace-App beenden, bleibt keine Zeit mehr, die Daten auf den Datenträger zu schreiben, was zu Datenverlust führt. Um dieses Problem zu beheben, verwenden Sie den Befehl sync in einem Terminal, um Daten auf den Datenträger zu schreiben, bevor Sie die USB-Umleitung beenden.

Abbildung, dass eine Datei verloren geht, wenn die Umleitung eines USB-Datenträgers beendet wird

Keine Geräte in der Symbolleiste der Citrix Workspace-App

Manchmal werden in der Symbolleiste der Citrix Workspace-App keine Geräte angezeigt, was darauf hindeutet, dass keine USB-Umleitung stattfindet. Wenn dieses Problem auftritt, überprüfen Sie Folgendes:

  • Die Richtlinie ist so konfiguriert, dass die USB-Umleitung zugelassen wird.
  • Das Kernelmodul ist mit Ihrem Kernel kompatibel.

Die Registerkarte "Geräte" in der Symbolleiste der Workspace-App

Hinweis:

Die Registerkarte Geräte ist in der Citrix Workspace-App für Linux nicht verfügbar.

Fehlgeschlagene Umleitung, wenn USB-Geräte in der Symbolleiste der Citrix Workspace-App sichtbar sind, aber als richtlinienbeschränkt gekennzeichnet sind

Wenn das Problem auftritt, gehen Sie wie folgt vor:

  • Konfigurieren Sie die Linux VDA-Richtlinie, um die Umleitung zu aktivieren.
  • Überprüfen Sie, ob zusätzliche Richtlinieneinschränkungen in der Registrierung der Citrix Workspace-App konfiguriert sind. Überprüfen Sie DeviceRules im Registrierungspfad, um sicherzustellen, dass der Zugriff auf das Gerät durch diese Einstellung nicht verweigert wird:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA Client\GenericUSB

Ein USB-Gerät wird erfolgreich umgeleitet, aber ich kann es in meiner Sitzung nicht verwenden

Normalerweise können nur unterstützte USB-Geräte umgeleitet werden. Andere Geräte können ebenfalls an eine aktive Linux VDA-Sitzung umgeleitet werden. In diesem Fall wird für jedes umgeleitete Gerät ein dem Benutzer gehörender Knoten im Systempfad /dev erstellt. Es sind jedoch die Treiber und die Konfiguration, die bestimmen, ob der Benutzer das Gerät erfolgreich verwenden kann. Wenn Sie ein Gerät finden, das zwar angeschlossen, aber nicht zugänglich ist, fügen Sie das Gerät einer uneingeschränkten Richtlinie hinzu.

Hinweis:

Im Falle von USB-Laufwerken konfiguriert und mountet der Linux VDA den Datenträger. Der Benutzer (und nur der Besitzer, der ihn installiert hat) kann ohne zusätzliche Konfiguration auf den Datenträger zugreifen. Dies ist möglicherweise nicht der Fall für Geräte, die nicht in der Liste der unterstützten Geräte aufgeführt sind.

Konfigurieren der USB-Umleitung