USBリダイレクトの構成
USBデバイスはCitrix Receiver™とLinux VDAデスクトップ間で共有されます。USBデバイスがデスクトップにリダイレクトされると、ユーザーはそのUSBデバイスをローカルに接続されているかのように使用できます。
-
USBリダイレクトには、主に以下の3つの機能領域があります。
- オープンソースプロジェクトの実装 (VHCI)
- VHCIサービス
- USBサービス
オープンソースVHCI
USBリダイレクト機能のこの部分は、IPネットワークを介した汎用USBデバイス共有システムを開発します。これは、Linuxカーネルドライバーと、カーネルドライバーと通信してすべてのUSBデータを取得できるいくつかのユーザーモードライブラリで構成されています。Linux VDAの実装では、CitrixはVHCIのカーネルドライバーを再利用します。ただし、Linux VDAとCitrix Receiver間のすべての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デバイスリダイレクトを有効(または無効)にします(ワークステーションホストのみ)。
[設定の編集]ダイアログで:
- [許可]を選択します。
- [OK]をクリックします。

USBリダイレクトルールの設定
USBリダイレクトポリシーを有効にした後、Citrix Studioを使用してリダイレクトルールを設定し、Linux VDAで許可(または拒否)するデバイスを指定します。
クライアントUSBデバイスリダイレクトルールダイアログで:
- [新規]をクリックしてリダイレクトルールを追加するか、[編集]をクリックして既存のルールを確認します。
- ルールを作成(または編集)した後、[OK]をクリックします。

VHCIカーネルモジュールのビルド
USBリダイレクトはVHCIカーネルモジュール(usb-vhci-hcd.koおよびusb-vhci-iocif.ko)に依存します。これらのモジュールはLinux VDAディストリビューション(RPMパッケージの一部)に含まれています。これらは公式のLinuxディストリビューションカーネルに基づいてコンパイルされており、以下の表に示されています。
| サポートされるLinuxディストリビューション | カーネルバージョン |
|---|---|
| RHEL 7.3 | 3.10.0-514.el7.x86_64 |
| RHEL 6.6 | 2.6.32-504.el6.x86_64 |
| SUSE 12.2 | 4.4.49-92.11-default |
| SUSE 11.4 | 3.0.101-0.47.55-default |
| Ubuntu 16.04 | 4.4.0-45-generic |
重要:
マシンのカーネルがCitrixがLinux VDA用にビルドしたドライバーと互換性がない場合、USBサービスが起動に失敗する可能性があります。この場合、独自のVHCIカーネルモジュールをビルドした場合にのみ、USBリダイレクト機能を使用できます。
カーネルがCitrixがビルドしたモジュールと一致しているかどうかの確認
コマンドラインで、次のコマンドを実行してカーネルの一貫性を確認します。
insmod /opt/Citrix/VDA/lib64/usb-vhci-hcd.ko
<!--NeedCopy-->
コマンドが正常に実行された場合、カーネルモジュールは正常にロードされており、バージョンはCitrixによってインストールされたものと一致しています。
コマンドがエラーで実行された場合、カーネルはCitrixモジュールと一致せず、再ビルドする必要があります。
VHCIカーネルモジュールの再ビルド
カーネルモジュールがCitrixのバージョンと互換性がない場合は、次の手順を実行します。
-
CitrixダウンロードサイトからLVDAソースコードをダウンロードします。「Linux Virtual Delivery Agent (sources)」セクションに含まれるファイルを選択します。
-
citrix-linux-vda-sources.zipファイルからファイルを復元します。VHCIソースファイルはlinux-vda-souces/vhci-hcd-1.15.tar.bz2にあります。tar xvf vhci-hcd-1.15.tar.bz2を使用してVHCIファイルを復元できます。
-
ヘッダーファイルとModule.symversファイルに基づいてカーネルモジュールをビルドします。適切なLinuxディストリビューションに基づいてカーネルヘッダーファイルをインストールし、Module.symversを作成するには、次の手順を使用します。
RHEL 7.3/RHEL 6.9/RHEL 6.6:
yum install kernel-devel <!--NeedCopy-->SUSE 12.2:
- zypper install kernel-devel zypper install kernel-source <!--NeedCopy-->SUSE 11.4:
zypper install kernel-source <!--NeedCopy-->Ubuntu 16.04:
apt-get install linux-headers <!--NeedCopy-->ヒント:
インストールが成功すると、次のようなカーネルフォルダーが作成されます。
/usr/src/kernels/3.10.0-327.10.1.el7.x86_64
-
/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.*からコピーします。 -
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--> -
vhci-hcd-1.15/フォルダーで、makeを実行してVHCIカーネルをビルドします。
注:
ビルドが成功すると、usb-vhci-hcd.koとusb-vhci-iocifc.koがvhci-hcd-1.15/フォルダーに作成されます。
-
カーネルモジュールを新しくビルドしたものに置き換えます: cp -f usb-vhci-*.ko /opt/Citrix/VDA/lib64/
-
USBサービスを再起動します: service ctxusbsd restart
-
セッションからログオフし、再度ログオンします。USBリダイレクトが機能していることを確認します。
USBリダイレクトの問題のトラブルシューティング
このセクションの情報を使用して、Linux VDAの使用中に発生する可能性のあるさまざまな問題のトラブルシューティングを行います。
リダイレクトされたUSBディスクのマウント解除ができない
Citrix ReceiverからリダイレクトされたすべてのUSBディスクのアクセス制御のため、Linux VDAは、所有者のみがリダイレクトされたデバイスにアクセスできるように、これらすべてのデバイスを管理者権限で管理します。その結果、ユーザーは管理者権限なしではデバイスをマウント解除できません。

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

Citrix Receiverのツールバーにデバイスがない
Citrix Receiverのツールバーにデバイスが表示されない場合があり、これはUSBリダイレクトが行われていないことを示します。この問題が発生した場合は、以下を確認してください。
- USBリダイレクトを許可するようにポリシーが構成されていること
- カーネルモジュールがカーネルと互換性があること

注:
Citrix Receiver for Linuxでは、デバイスタブは利用できません。
Citrix ReceiverのツールバーにUSBデバイスが表示されるが、「ポリシー制限」と表示されてリダイレクトに失敗する
この問題は、デバイスのポリシー構成が原因で発生します。このような場合は、次のことを確認してください。
- リダイレクトを有効にするようにLinux VDAポリシーを構成します。
- Citrix Receiverのレジストリに追加のポリシー制限が構成されていないか確認します。デバイスはCitrix Receiverのレジストリ設定によってブロックされる可能性があります。この設定によってデバイスへのアクセスが拒否されていないことを確認するために、レジストリパスのDeviceRulesを確認します。 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA Client\GenericUSB
USBデバイスが正常にリダイレクトされるが、セッションで使用できない
通常、リダイレクトできるのはサポートされているUSBデバイスのみです。ただし、場合によっては、他の種類のデバイスがアクティブなLinux VDAセッションにリダイレクトされることがあります。このような状況では、リダイレクトされたデバイスごとに、ユーザーが所有するノードがシステム/devパスに作成されます。しかし、ユーザーがデバイスを正常に使用できるかどうかは、ドライバーと構成によって決まります。所有されている(接続されている)がアクセスできないデバイスが見つかった場合は、そのデバイスを無制限ポリシーに追加します。
注:
USBドライブの場合、Linux VDAはディスクを構成してマウントします。ユーザー(およびそれをインストールした所有者のみ)は、追加の構成なしでディスクにアクセスできます。これは、サポートされているデバイスリストにないデバイスには当てはまらない場合があります。