Konfigurieren der USB-Umleitung

USB-Geräte werden von der Citrix Workspace-App und Linux VDA-Desktop gemeinsam verwendet. Wenn ein USB-Gerät an einen Desktop umgeleitet wird, kann es wie ein lokal verbundenes Gerät verwendet werden.

Die USB-Umleitung umfasst drei hauptsächliche Funktionalitätsbereiche:

  • Open-Source-Projektimplementierung (VHCI)
  • VHCI-Dienst
  • USB-Dienst

Open-Source-VHCI:

Dieser Teil der USB-Umleitung besteht aus der Entwicklung eines allgemeinen Systems zur USB-Gerätefreigabe über ein IP-Netzwerk. Er umfasst einen Linux-Kerneltreiber und einige Benutzermodusbibliotheken für die Kommunikation mit dem Kerneltreiber zum Abruf aller USB-Daten. In der Linux VDA-Implementierung hat Citrix den VHCI-Kerneltreiber wiederverwendet. Alle USB-Datenübertragungen zwischen Linux VDA und der Citrix Workspace-App erfolgen jedoch gekapselt im Citrix ICA-Protokollpaket.

VHCI-Dienst:

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

USB-Dienst:

Der USB-Dienst ist ein Citrix Modul, das sämtliche Virtualisierungen und Datenübertragungen auf dem USB-Gerät verwaltet.

Funktionsweise der USB-Umleitung

Wenn ein USB-Gerät an den Linux VDA umgeleitet wird, werden normalerweise ein oder mehrere Geräteknoten im Systempfad /dev erstellt. Gelegentlich kann das umgeleitete Gerät jedoch nicht von einer aktiven Linux VDA-Sitzung verwendet werden. USB-Geräte funktionieren nur mit Treibern, und manche Geräte erfordern auch Spezialtreiber. Sind diese Treiber nicht vorhanden, kann in der aktiven Linux VDA-Sitzung nicht auf das umgeleitete USB-Gerät zugegriffen werden. Installieren Sie die Treiber und konfigurieren Sie das System, um eine Verbindung mit USB-Geräten zu ermöglichen.

Der Linux VDA unterstützt diverse USB-Geräte, die erfolgreich an den Client und von dem Client umgeleitet werden können. Außerdem werden solche Geräte, insbesondere USB-Datenträger, ordnungsgemäß eingebunden, sodass die Benutzer ohne zusätzliche Konfiguration darauf zugreifen können.

Konfigurieren der USB-Umleitung

Die USB-Geräteumleitung wird über eine Citrix Richtlinie aktiviert bzw. deaktiviert. Außerdem kann der Gerätetyp über eine Delivery Controller-Richtlinie festgelegt werden. Konfigurieren Sie die folgenden Richtlinien und Regeln, um die USB-Umleitung für den Linux VDA zu aktivieren:

  • Richtlinie für die Client-USB-Geräteumleitung
  • Regeln für die Client-USB-Geräteumleitung

Aktivieren der Richtlinie für die USB-Umleitung

In Citrix Studio können Sie die Umleitung von USB-Geräten zum und vom Client (nur Arbeitsstationshosts) aktivieren und deaktivieren.

Führen Sie im Dialogfeld “Einstellung bearbeiten” folgende Schritte aus:

  1. Wählen Sie Zugelassen.
  2. Klicken Sie auf OK.

Abbildung vom Aktivieren der USB-Umleitung

Festlegen von Regeln für die USB-Umleitung

Nach dem Aktivieren der USB-Umleitungsrichtlinie legen Sie mit Citrix Studio die Regeln für die Umleitung fest, d. h. welche Geräte auf dem Linux VDA zulässig sind und welche nicht.

Führen Sie im Dialogfeld “Regeln für die Client-USB-Geräteumleitung” folgende Schritte aus:

  1. Klicken Sie auf Neu, um eine Umleitungsregel hinzuzufügen oder auf Bearbeiten, um eine vorhandene Regel zu prüfen.
  2. Nach dem Erstellen bzw. Ändern der Regel klicken Sie auf OK.

Abbildung der Regeleinstellung für die USB-Clientumleitung

Weitere Informationen zur generischen USB-Umleitung finden Sie unter Citrix Generic USB Redirection Configuration Guide.

Behandeln von Problemen bei der USB-Umleitung

Anhand der Informationen in diesem Abschnitt können Sie diverse Probleme beheben, die bei der Verwendung des Linux VDA auftreten können.

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

Es kann vorkommen, dass in der Symbolleiste der Citrix Workspace-App keine Geräte aufgeführt werden, d. h. dass keine USB-Umleitung stattfindet. Prüfen Sie in diesem Fall Folgendes:

  • Die Richtlinie ist auf Zulassen der USB-Umleitung konfiguriert.
  • Das Kernelmodul ist mit Ihrem Kernel kompatibel.

Abbildung der 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.

Die Umleitung schlägt fehl, wenn in der Symbolleiste der Citrix Workspace-App angezeigte USB-Geräte als richtlinienbeschränkt ausgewiesen sind

Dieses Problem wird durch die Richtlinienkonfiguration der Geräte verursacht. Gehen Sie in solchen Fällen folgendermaßen vor:

  • Konfigurieren Sie die Linux VDA-Richtlinie zum Aktivieren der Umleitung.
  • Prüfen Sie, ob in der Registrierung der Citrix Workspace-App weitere Richtlinieneinschränkungen konfiguriert sind. Ein Gerät ist möglicherweise blockiert durch die Registrierungseinstellung der Citrix Workspace-App. Prüfen DeviceRules im Registrierungspfad, um sicherzustellen, dass dem Gerät durch diese Einstellung kein Zugriff verweigert wird:

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

Weitere Informationen finden Sie unter How to Configure Automatic Redirection of USB Devices auf der Citrix Supportsite.

Ein USB-Gerät wird umgeleitet, kann jedoch nicht in einer Sitzung verwendet werden

In der Regel können nur unterstützte USB-Geräte umgeleitet werden. Manchmal werden jedoch auch andere Geräte in eine aktive Linux VDA-Sitzung umgeleitet. Es wird dann für jedes umgeleitete Gerät ein im Besitz des Benutzers stehender Knoten im Systempfad /dev erstellt. Allerdings bestimmen Treiber und Konfiguration, ob der Benutzer das Gerät verwenden kann. Wenn Sie ein angeschlossenes Gerät finden, auf das nicht zugegriffen werden kann, fügen Sie es einer uneingeschränkten Richtlinie hinzu.

Hinweis:

Im Fall von USB-Laufwerken erfolgt die Konfiguration und Einbindung durch den Linux VDA. Der Benutzer, der das Laufwerk installiert hat (und kein anderer), kann ohne zusätzliche Konfiguration auf das Laufwerk zugreifen. Dies ist bei Geräten, die nicht auf der Liste der unterstützten Geräte stehen, evtl. nicht möglich.

Erstellen des VHCI-Kernelmoduls

Die USB-Umleitung is abhängig von den VHCI-Kernelmodulen (usb-vhci-hcd.ko und usb-vhci-iocif.ko). Diese Module sind Teil der Linux VDA-Distribution (als Teil des RPM-Pakets). Sie werden auf Basis der Kernel der offiziellen Linux-Distribution kompiliert:

Unterstützte Linux-Distribution Kernelversion
RHEL 6.9 2.6.32-696.10.3.el6.x86_64
RHEL 7.6 3.10.0-957
SUSE 12.3 4.4.73-5-default
Ubuntu 18.04 4.15.0-42-generic
Ubuntu 16.04 4.4.0-45-generic

Wichtig:

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

Prüfen des vorliegenden Kernels auf Konsistenz mit dem Modul von Citrix

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

insmod /opt/Citrix/VDA/lib64/usb-vhci-hcd.ko

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

Treten bei der Ausführung des Befehls Fehler auf, bedeutet dies, dass der Kernel nicht mit dem Citrix Modul konsistent ist und neu erstellt werden muss.

Neuerstellen des VHCI-Kernelmoduls

Wenn das Kernelmodul nicht mit der Citrix-Version konsistent ist, führen Sie die folgenden Schritte aus:

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

  2. Stellen Sie die Dateien aus der Datei “citrix-linux-vda-sources.zip” wieder her. Sie können die VHCI-Quelldateien in linux-vda-souces/vhci-hcd-1.15.tar.bz2 finden. Die VHCI-Dateien lassen sich mit tar xvf vhci-hcd-1.15.tar.bz2 wiederherstellen.

  3. Erstellen Sie das Kernelmodul basierend auf den Headerdateien und der Datei Module.symvers. Führen Sie die folgenden Schritte aus, um die Kernelheaderdateien zu installieren und Module.symvers basierend auf der entsprechenden Linux-Distribution zu erstellen:

    RHEL/CentOS:

    yum install kernel-devel
    

    SUSE 12:

    zypper install kernel-devel
    
    zypper install kernel-source
    

    Ubuntu 16.04:

    apt-get install linux-headers
    

    Tipp:

    Wird die Installation erfolgreich abgeschlossen, dann gibt es nun einen Kernelordner, der in etwa folgenden Pfad hat:

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

  4. Prüfen Sie, dass in /usr/src/kernels/3.10.0-327.10.1.el7.x86_64 die Datei Module.symvers vorhanden ist. Ist dies nicht der Fall, erstellen Sie den Kernel, um sie zu erhalten (z. B. make oldconfig; make prepare;make modules;make) oder kopieren Sie sie von /usr/src/kernels/3.10.0-327.10.1.el7.x86_64-obj/x86_64/defaults/module.*

  5. Ändern Sie in der Datei vhci-hcd-1.15/Makefile die Makefile von VCHI und legen Sie KDIR auf das Kernelverzeichnis fest:

    #KDIR = $(BUILD_PREFIX)/lib/modules/$(KVERSION)/build
    
    KDIR = /usr/src/kernels/3.10.0-327.10.1.el7.x86_64
    
  6. Führen Sie im Ordnervhci-hcd-1.15/ den Befehl make aus, um den VHCI-Kernel zu erstellen.

    Hinweis:

    War die Erstellung erfolgreich, werden usb-vhci-hcd.ko und usb-vhci-iocifc.ko im Ordner vhci-hcd-1.15/ erstellt.

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

  8. Starten Sie den USB-Dienst neu: service ctxusbsd restart

  9. Melden Sie sich bei der Sitzung ab und wieder an. Überprüfen Sie, ob die USB-Umleitung funktioniert.

Unterstützte USB-Geräte

Bei den folgenden Geräten wurde die Unterstützung dieser Version des Linux VDA in Tests verifiziert. Andere Geräte können verwendet werden, jedoch können unerwartete Ergebnisse auftreten.

USB-Massenspeichergerät Hersteller-ID:Produkt-ID Dateisystem
Netac Technology Co., Ltd 0dd8:173c FAT32
Kingston Datatraveler 101 II 0951:1625 FAT32
Kingston Datatraveler GT101 G2 1567:8902 FAT32
SanDisk SDCZ80-Flashlaufwerk 0781:5580 FAT32
SanDisk Cruzer 16 GB 1058:10B8 FAT32
WD-Festplatte 0781:5567 FAT32
USB-3D-Maus Hersteller-ID:Produkt-ID
3DConnexion SpaceMouse Pro 046d:c62b
USB-Scanner Hersteller-ID:Produkt-ID
Epson Perfection V330 Photo 04B8: 0142

Bekannte Probleme

  • Bereitstellung eines umgeleiteten USB-Datenträgers kann nicht aufgehoben werden. Der Linux VDA verwaltet die Zugriffsteuerung für die USB-Datenträger aller von der Citrix Workspace-App umgeleiteten USB-Geräte unter Verwendung von Administratorrechten, damit nur der Besitzer eines umgeleiteten Geräts darauf zugreifen kann. Daher können Benutzer die Bereitstellung eines Geräts ohne Administratorrechte nicht aufheben.

    Abbildung: Die Bereitstellung von sda kann nicht aufgehoben werden

  • Bei Beenden der Umleitung eines USB-Datenträgers geht eine Datei verloren. Wenn Sie einen USB-Datenträger in eine Sitzung umleiten, eine Änderung daran vornehmen (z. B. eine Datei auf dem Datenträger erstellen) und die Umleitung dann sofort über die Symbolleiste der Citrix Workspace-App beenden, kann die geänderte oder erstellte Datei verloren gehen. Dieses Problem tritt auf, weil beim Schreiben von Daten in ein Dateisystem der Speichercache im Dateisystem eingebunden wird. 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 zum Übertragen der Daten auf den Datenträger und die Daten gehen verloren. Zur Problemlösung verwenden Sie den Synchronisierungsbefehl in einem Terminal, um die Daten auf den Datenträger zu übertragen, bevor Sie die USB-Umleitung beenden.

    Abbildung: Bei Beenden der Umleitung eines USB-Datenträgers geht eine Datei verloren

  • Ein Fehler beim Erstellen des Kernels kann bei bestimmten Kernels von Ubuntu 16 auftreten. Es wird die Fehlermeldung implicit declaration of function ‘copy_to_user’ angezeigt (siehe Abbildung):

    Abbildung: Fehler bei der impliziten Deklaration der Funktion

    Der Fehler wird durch Headerdateiänderungen in den Kernels ausgelöst. Um das Problem zu umgehen, fügen Sie in der Datei vhci-hcd-1.15/usb-vhci-iocifc.c die Zeile #include <linux/uaccess.h> hinzu.

    Abbildung: Hinzufügen einer Zeile zum Beheben eines Kernelbuildfehlers

  • Ein Fehler beim Erstellen des Kernels kann bei dem Kernel 4.15.0-29-generic von Ubuntu 16 auftreten. Der Fehler ist ‘driver_attr_debug_output’ nicht deklariert:

    Abbildung: Fehler für nicht deklarierten Kernel

    Der Fehler tritt auf, wenn Symbole im Kernel fehlen. 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: Deaktivieren der Makros