Linux Virtual Delivery Agent

USBリダイレクトの構成

USBデバイスはCitrix Workspace™アプリとLinux VDAデスクトップ間で共有されます。USBデバイスがデスクトップにリダイレクトされると、ユーザーはまるでローカルに接続されているかのようにUSBデバイスを使用できます。

  • USBリダイレクトには、主に3つの機能領域があります。

  • オープンソースプロジェクトの実装 (VHCI)
  • VHCIサービス
  • USBサービス

オープンソースVHCI:

USBリダイレクト機能のこの部分は、IPネットワークを介した一般的なUSBデバイス共有システムを開発します。これは、Linuxカーネルドライバーと、カーネルドライバーと通信してすべてのUSBデータを取得できるいくつかのユーザーモードライブラリで構成されています。Linux VDAの実装では、CitrixはVHCIのカーネルドライバーを再利用します。ただし、Linux VDAとCitrix Workspaceアプリ間のすべてのUSBデータ転送は、Citrix ICA®プロトコルパッケージにカプセル化されます。

VHCIサービス:

VHCIサービスは、VHCIカーネルモジュールと通信するためにCitrixが提供するオープンソースサービスです。このサービスは、VHCIとCitrix USBサービス間のゲートウェイとして機能します。

USBサービス:

USBサービスは、USBデバイス上のすべての仮想化とデータ転送を管理するCitrixモジュールを表します。

USBリダイレクトの仕組み

通常、USBデバイスがLinux VDAに正常にリダイレクトされると、システム /dev パスに1つ以上のデバイスノードが作成されます。しかし、リダイレクトされたデバイスがアクティブなLinux VDAセッションで利用できない場合があります。USBデバイスは正常に機能するためにドライバーに依存しており、一部のデバイスは特別なドライバーを必要とします。ドライバーが提供されていない場合、リダイレクトされたUSBデバイスはアクティブなLinux VDAセッションからアクセスできません。USBデバイスの接続を確保するには、ドライバーをインストールし、システムを適切に構成してください。

Linux VDAは、クライアントとの間で正常にリダイレクトされるUSBデバイスのリストをサポートしています。さらに、デバイスは適切にマウントされ、特にUSBディスクは、追加の構成なしでユーザーがディスクにアクセスできるようにします。

サポートされるUSBデバイス

以下のデバイスは、このバージョンのLinux VDAをサポートすることが検証されています。その他のデバイスも自由に使用できますが、予期しない結果が生じる可能性があります。

注:

Linux VDAはUSB 2.0プロトコルのみをサポートします。

  • USBマスストレージデバイス VID:PID ファイルシステム
    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マウス VID:PID  
    3DConnexion SpaceMouse Pro 046d: c62b  
    USBスキャナー VID:PID  
    Epson Perfection V330 photo 04B8: 0142  

USBリダイレクトの構成

Citrixポリシーは、USBデバイスリダイレクトを有効にするか無効にするかを制御します。さらに、デバイスの種類はDelivery Controller™ポリシーを使用して指定することもできます。Linux VDAのUSBリダイレクトを構成する際は、以下のポリシーとルールを構成してください。

  • クライアントUSBデバイスリダイレクトポリシー
  • クライアントUSBデバイスリダイレクトルール

USBリダイレクトポリシーの有効化

Citrix Studioで、クライアントとの間のUSBデバイスリダイレクトを有効 (または無効) にします (ワークステーションホストのみ)。

設定の編集ダイアログで:

  1. 許可を選択します
  2. OKをクリックします

USBリダイレクトを有効にする画像

USBリダイレクトルールの設定

USBリダイレクトポリシーを有効にした後、Citrix Studioを使用して、Linux VDAで許可 (または拒否) するデバイスを指定することでリダイレクトルールを設定します。

クライアントUSBデバイスリダイレクトルールダイアログで:

  1. 新規をクリックしてリダイレクトルールを追加するか、編集をクリックして既存のルールを確認します
  2. ルールを作成 (または編集) した後、OKをクリックします

クライアントUSBリダイレクトルール設定の画像

VHCIカーネルモジュールのビルド

USBリダイレクトはVHCIカーネルモジュール (usb-vhci-hcd.ko および usb-vhci-iocif.ko) に依存します。これらのモジュールはLinux VDAディストリビューションの一部として (RPMパッケージの一部として) 含まれています。これらは公式のLinuxディストリビューションカーネルに基づいてコンパイルされており、以下の表に示されています。

サポートされるLinuxディストリビューション カーネルバージョン
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

重要:

マシンのカーネルがLinux VDA用にビルドされたドライバーと互換性がない場合、USBサービスが起動に失敗する可能性があります。この場合、独自のVHCIカーネルモジュールをビルドした場合にのみUSBリダイレクト機能を使用できます。

カーネルがCitrixによってビルドされたモジュールと一致しているかどうかの確認

コマンドラインで、以下のコマンドを実行してカーネルが一致しているかどうかを確認します。

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

コマンドが正常に実行された場合、カーネルモジュールは正常にロードされており、バージョンはCitrixによってインストールされたものと一致しています。

コマンドがエラーで実行された場合、カーネルはCitrixモジュールと一致しておらず、再ビルドする必要があります。

VHCIカーネルモジュールの再ビルド

カーネルモジュールがCitrixバージョンと一致しない場合は、次の手順を実行します。

  1. CitrixダウンロードサイトからLVDAソースコードをダウンロードします。「Linux Virtual Delivery Agent (sources)」セクションに含まれるファイルを選択してください。

  2. citrix-linux-vda-sources.zipファイルを解凍します。linux-vda-souces/vhci-hcd-1.15.tar.bz2に移動し、tar xvf vhci-hcd-1.15.tar.bz2を使用してVHCIソースファイルを解凍します。

  3. ヘッダーファイルとModule.symversファイルに基づいてカーネルモジュールをビルドします。適切なLinuxディストリビューションに基づいてカーネルヘッダーファイルをインストールし、Module.symversを作成するには、以下の手順を使用します。

    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-->
    

    ヒント:

    インストールが成功すると、次のようなカーネルフォルダーが作成されます。

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

  4. /usr/src/kernels/3.10.0-327.10.1.el7.x86_64フォルダーで、Module.symversファイルが存在することを確認します。このファイルがフォルダーにない場合は、カーネルをビルドして(次のコマンドを順に実行します:make oldconfig; make prepare; make modules; make)、このファイルを取得するか、/usr/src/kernels/3.10.0-327.10.1.el7.x86_64-obj/x86_64/defaults/module.*からコピーします。

  5. 開発ツールをインストールするには、次のコマンドを実行します。

    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. vhci-hcd-1.15/Makefileファイルで、VCHIのMakefileを変更し、KDIRをカーネルディレクトリに設定します。

    #KDIR = $(BUILD_PREFIX)/lib/modules/$(KVERSION)/build
    
    KDIR = /usr/src/kernels/3.10.0-327.10.1.el7.x86_64
    <!--NeedCopy-->
    
  7. vhci-hcd-1.15/フォルダーで、makeを実行してVHCIカーネルをビルドします。

    注:

    ビルドが成功すると、usb-vhci-hcd.kousb-vhci-iocifc.kovhci-hcd-1.15/フォルダーに作成されます。

  8. カーネルモジュールを新しくビルドしたものに置き換えます:cp -f usb-vhci-*.ko /opt/Citrix/VDA/lib64/

  9. USBサービスを再起動します。

    service ctxusbsd restart
    <!--NeedCopy-->
    
  10. セッションからログオフし、再度ログオンします。USBリダイレクトが機能していることを確認します。

カーネル構築の問題のトラブルシューティング

  • Ubuntu 16の特定のカーネルでカーネル構築エラーが発生する場合があります。エラーはimplicit declaration of function 'copy\_to\_user'と表示され、次のスクリーンショットを参照してください。

    暗黙的な関数宣言エラーの画像

    このエラーは、カーネルのヘッダーファイル変更が原因で発生します。回避策として、vhci-hcd-1.15/usb-vhci-iocifc.cファイルに#include <linux/uaccess.h>行を追加します。

    カーネル構築エラーを修正するための行追加の画像

  • Ubuntu 16のカーネル4.15.0-29-genericでカーネル構築エラーが発生する場合があります。エラーは'driver\_attr\_debug_output' undeclaredと表示され、次のスクリーンショットを参照してください。

    未宣言のカーネル構築エラーの画像

    このエラーは、カーネルでシンボルが不足している場合に発生します。回避策として、vhci-hcd-1.15/usb-vhci-iocifc.cおよびvhci-hcd-1.15/usb-vhci-hcd.cファイルでDEBUGのマクロ定義を無効にします。

    マクロ無効化の画像

USBリダイレクトの問題のトラブルシューティング

このセクションの情報を使用して、Linux VDAの使用時に発生する可能性のあるさまざまな問題のトラブルシューティングを行います。

リダイレクトされたUSBディスクのマウント解除**

Citrix WorkspaceアプリからリダイレクトされたすべてのUSBディスクのアクセス制御のため、Linux VDAはこれらのデバイスをすべて管理者権限で管理し、所有者のみがリダイレクトされたデバイスにアクセスできるようにします。その結果、ユーザーは管理者権限なしではデバイスをマウント解除できません。

デバイスをマウント解除できない画像

USBディスクのリダイレクト停止時のファイル損失

USBディスクをセッションにリダイレクトし、それを変更しようとすると(たとえば、ディスク上にいくつかのファイルを作成する)、Citrix Workspaceアプリのツールバーを使用してすぐにリダイレクトを停止した場合、変更または作成したファイルが失われる可能性があります。この問題は、ファイルシステムにデータを書き込むときに、システムがファイルシステム内のメモリキャッシュをマウントするために発生します。データはディスク自体には書き込まれません。Citrix Workspaceアプリのツールバーを使用してリダイレクトを停止すると、データがディスクにフラッシュされる時間がなくなり、データが失われます。この問題を解決するには、USBリダイレクトを停止する前に、ターミナルでsyncコマンドを使用してデータをディスクにフラッシュします。

USBディスクのリダイレクト停止時にファイルが失われる画像

Citrix Workspaceアプリのツールバーにデバイスがない場合

Citrix Workspaceアプリのツールバーにデバイスが表示されない場合があります。これは、USBリダイレクトが行われていないことを示します。この問題が発生した場合は、以下を確認してください。

  • USBリダイレクトを許可するようにポリシーが構成されていること
  • カーネルモジュールがカーネルと互換性があること

Workspaceアプリのツールバーにあるデバイスタブ

注:

Citrix Workspaceアプリ for Linuxでは、デバイスタブは利用できません。

Citrix WorkspaceアプリのツールバーにUSBデバイスが表示されるが、ポリシーによって制限されていると表示される場合のリダイレクト失敗

この問題が発生した場合は、次の操作を行います。

  • リダイレクトを有効にするようにLinux VDAポリシーを構成します。
  • Citrix Workspaceアプリのレジストリに追加のポリシー制限が構成されていないか確認します。レジストリパスのDeviceRulesを確認して、この設定によってデバイスへのアクセスが拒否されていないことを確認します。

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

USBデバイスは正常にリダイレクトされますが、セッションで使用できません。

通常、サポートされているUSBデバイスのみがリダイレクトできます。その他のデバイスもアクティブなLinux VDAセッションにリダイレクトされる場合があります。この場合、リダイレクトされたデバイスごとに、ユーザーが所有するノードがシステム/devパスに作成されます。ただし、ユーザーがデバイスを正常に使用できるかどうかは、ドライバーと構成によって決まります。所有されている(接続されている)がアクセスできないデバイスが見つかった場合は、そのデバイスを無制限ポリシーに追加します。

注:

USBドライブの場合、Linux VDAはディスクを構成してマウントします。ユーザー(およびそれをインストールした所有者のみ)は、追加の構成なしでディスクにアクセスできます。これは、サポートされているデバイスリストにないデバイスには当てはまらない場合があります。

USBリダイレクトの構成