USBリダイレクトの設定

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

USBリダイレクトの主な機能として、次の3つが挙げられます:

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

オープンソースVHCI:

USBリダイレクトのこの機能により、IPネットワーク上でシステムを共有する汎用USBデバイスを開発します。 この機能はLinuxカーネルドライバーおよびユーザーモードのライブラリで構成されており、ユーザーはカーネルドライバーと通信してすべてのUSBデータを取得することができます。 Linux VDAの導入では、VHCIのカーネルドライバーがCitrixで再利用されます。 ただし、Linux VDAとCitrix Receiver間のUSBデータ転送はすべてCitrix ICAプロトコルパッケージに格納されます。

VHCIサービス:

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

USBサービス:

USBサービスは、USBデバイスでの仮想化およびデータ転送をすべて管理するCitrixモジュールです。

USBリダイレクトのしくみ

通常、Linux VDAへのUSBデバイスのリダイレクトが正常に行われると、デバイスノードがシステムの/devパスに作成されます。 ただし、リダイレクトされたデバイスがアクティブな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リダイレクトの設定

USBデバイスのリダイレクトの有効化および無効化は、Citrixポリシーにより制御されます。 また、Delivery Controllerポリシーを使用してデバイスの種類を指定することもできます。 USBリダイレクトをLinux VDAに設定するには、次のポリシーと規則を設定します:

  • クライアント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)によって異なります。 これらのモジュールは、RPMパッケージの一部としてLinux VDAディストリビューションに含まれます。 これらは、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

重要:

使用するマシンのカーネルが、Linux VDA用にCitrixの作成したドライバーに対応していない場合は、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(ソース)] に含まれるファイルを選択します。

  2. citrix-linux-vda-sources.zipファイルからファイルを復元します。linux-vda-souces/vhci-hcd-1.15.tar.bz2でVHCIソースファイルを取得できます。tar xvf vhci-hcd-1.15.tar.bz2を使用してVHCIファイルを復元できます。

  3. ヘッダーファイルおよび 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

  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. 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-->
    
  6. vhci-hcd-1.15/ フォルダーで、makeコマンドを実行してVHCIカーネルを構築します。

    構築に成功すると、usb-vhci-hcd.ko および usb-vhci-iocifc.kovhci-hcd-1.15/ フォルダーに作成されます。

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

  8. USBサービスを再起動します:service ctxusbsd restart

  9. ログオフして再びセッションに戻ります。 USBリダイレクトが機能しているかを確認します。

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

このセクションでは、Linux VDAの使用におけるさまざまな問題のトラブルシューティングについて説明します。

リダイレクトされたUSBディスクをマウント解除できない

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

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

USBディスクのリダイレクトを停止するとファイルが失われる

USBディスクをセッションにリダイレクトして、ディスク上でのファイルの作成などでディスクを変更した後に、Citrix Receiverのツールバーを使用して直ちにリダイレクトを停止すると、変更または作成したファイルが失われることがあります。 この問題は、ファイルシステムにデータを書き込むとメモリキャッシュがファイルシステムにマウントされることが原因で発生します。 データはディスクそのものには書き込まれません。 Citrix Receiverのツールバーを使用してリダイレクトを停止した場合、データがディスクにフラッシュされる時間が残っていないため、データが失われます。 この問題を解決するには、ターミナルのsyncコマンドを使用してデータをディスクにフラッシュしてからUSBリダイレクトを停止します。

USBディスクのリダイレクトを停止してファイルが失われた場合の画像

Citrix Receiverのツールバーにデバイスが表示されない

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

  • ポリシーが、USBリダイレクトを許可する設定になっている
  • カーネルモジュールが、使用するカーネルに対応している

Receiverツールバーのデバイスタブの画像

[デバイス]タブは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がディスクの設定とマウントを行います。 ユーザー(およびデバイスをインストールした所有者のみ)は追加の設定なしでディスクにアクセスできます。 「サポートされているデバイス一覧」に掲載されていないデバイスについては、これが適用されないことがあります。

USBリダイレクトの設定