USBリダイレクトの構成

最終公開日 : Nov 13, 2026
USBデバイスは、Citrix Workspace™ appとLinux VDAデスクトップ間で共有されます。USBデバイスがデスクトップにリダイレクトされると、ユーザーはそのUSBデバイスをローカルに接続されているかのように使用できます。
ヒント:
ネットワーク遅延が100ミリ秒未満の場合は、USBリダイレクトを使用することをお勧めします。ネットワーク遅延が200ミリ秒を超える場合は、USBリダイレクトを使用しないでください。
USBリダイレクトには、主に次の3つの機能領域があります。
  • オープンソースプロジェクトの実装(VHCI)
  • VHCIサービス
  • USBサービス
オープンソースVHCI:
USBリダイレクト機能のこの部分は、IPネットワークを介した一般的なUSBデバイス共有システムを開発します。これは、Linuxカーネルドライバーと、カーネルドライバーと通信してすべてのUSBデータを取得できるいくつかのユーザーモードライブラリで構成されています。Linux VDAの実装では、CitrixはVHCIのカーネルドライバーを再利用します。ただし、Linux VDAとCitrix Workspace app間のすべての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 ファイルシステム
ネットアックテクノロジー株式会社 0dd8:173c FAT32
キングストン データトラベラー 101 II 0951:1625 FAT32
キングストン データトラベラー GT101 G2 1567:8902 FAT32
SanDisk SDCZ80 フラッシュドライブ 0781:5580 FAT32
WD HDD 1058:10B8 FAT32
USB 3Dマウス VID:PID
3Dコネクション スペースマウス プロ 046d: c62b
USB スキャナー VID:PID
エプソン パーフェクション V330 フォト 04B8: 0142

USBリダイレクトの構成

Citrixポリシーは、USBデバイスリダイレクトが有効か無効かを制御します。さらに、デバイスの種類はDelivery Controller™ポリシーを使用して指定することもできます。Linux VDAのUSBリダイレクトを構成する場合、次のポリシーとルールを構成します。
  • クライアントUSBデバイスリダイレクトポリシー
  • クライアントUSBデバイスリダイレクト規則

USBリダイレクトポリシーを有効にする

Citrix Studioで、クライアントとの間でUSBデバイスリダイレクトを有効(または無効)にします(ワークステーションホストのみ)。
設定の編集ダイアログで:
  1. 許可を選択します。
  2. OKをクリックします。
USBリダイレクトを有効にするイメージ(/en-us/linux-virtual-delivery-agent/2106/media/client-usb-redirection-policy.png)

USBリダイレクトルールを設定する

USBリダイレクトポリシーを有効にした後、Citrix Studioを使用して、Linux VDAで許可(または拒否)するデバイスを指定してリダイレクトルールを設定します。
クライアントUSBデバイスリダイレクトルールダイアログで:
  1. リダイレクトルールを追加するには新規をクリックし、既存のルールを確認するには編集をクリックします。
  2. ルールを作成(または編集)したら、OKをクリックします。
クライアントUSBリダイレクトルール設定のイメージ(/en-us/linux-virtual-delivery-agent/2106/media/client-usb-redirection-rule.png)

VHCIカーネルモジュールをビルドする

USBリダイレクトはVHCIカーネルモジュール(usb-vhci-hcd.koおよびusb-vhci-iocif.ko)に依存します。これらのモジュールはLinux VDAディストリビューションの一部(RPMパッケージの一部)です。これらは公式のLinuxディストリビューションカーネルに基づいてコンパイルされており、次の表に示されています。
サポートされているLinuxディストリビューション カーネルバージョン
RHEL 8.3 4.18.0-240
RHEL 8.2 4.18.0-240
RHEL 8.1 4.18.0-240
RHEL 7.9 3.10.0-1160
RHEL 7.8 3.10.0-1160
SUSE 12.5 4.12.14
ウブントゥ 20.04 5.4.0-70
ウブントゥ 18.04 4.15.0-140
ウブントゥ 16.04 4.4.0-206
デビアン 10 4.19.0-16
重要:
マシンのカーネルがLinux VDA用にビルドされたドライバーと互換性がない場合、USBサービスが起動に失敗する可能性があります。この場合、独自のVHCIカーネルモジュールをビルドした場合にのみ、USBリダイレクト機能を使用できます。

カーネルがCitrixによってビルドされたモジュールと整合しているかを確認する

コマンドラインで、カーネルが整合しているかどうかを確認するために、次のコマンドを実行します。
insmod /opt/Citrix/VDA/lib64/usb-vhci-hcd.ko
コマンドが正常に実行された場合、カーネルモジュールは正常にロードされており、バージョンは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
    SUSE 12:
    zypper install kernel-devel

    zypper install kernel-source
    ウブントゥ:
    apt-get install linux-headers
    ヒント:
    インストールが成功すると、次のようなカーネルフォルダーが作成されます。
    /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 8、CentOS 8:
    yum groupinstall 'Development Tools'

    yum install elfutils-libelf-devel
    RHEL 7、CentOS 7:
    yum groupinstall 'Development Tools'
    ウブントゥ 20.04、ウブントゥ 18.04、Debian 10:
    apt install build-essential flex bison libelf-dev
    ウブントゥ 16.04:
    apt install build-essential flex bison
  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
  7. vhci-hcd-1.15/フォルダーで、makeを実行してVHCIカーネルをビルドします。
    注:
    ビルドが成功した場合、vhci-hcd-1.15/フォルダーにusb-vhci-hcd.koとusb-vhci-iocifc.koが作成されます。
  8. カーネルモジュールを新しくビルドしたものに置き換えます: cp -f usb-vhci-*.ko /opt/Citrix/VDA/lib64/
  9. USBサービスを再起動します:
    service ctxusbsd restart
  10. セッションからログオフし、再度ログオンします。USBリダイレクトが機能しているか確認します。

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

特定のカーネルでVHCIモジュールをビルドすると、次のエラーが発生する可能性があります:
  • implicit declaration of function 'copy\_to\_user'エラーが発生する可能性があります。次のスクリーンショットを参照してください:
    関数の暗黙的な宣言エラーの画像
    このエラーは、カーネルのヘッダーファイルの変更が原因で発生します。回避策として、#include \<linux/uaccess.h\> の行をvhci-hcd-1.15/usb-vhci-iocifc.cファイルに追加します。
    カーネルビルドエラーを修正するための行を追加する画像
  • 'driver\_attr\_debug_output' undeclaredエラーが発生する可能性があります。次のスクリーンショットを参照してください:
    未宣言のカーネルビルドエラーの画像
    このエラーは、カーネルにシンボルがない場合に発生します。回避策として、vhci-hcd-1.15/usb-vhci-iocifc.cファイルとvhci-hcd-1.15/usb-vhci-hcd.cファイルでDEBUGのマクロ定義を無効にします。
    マクロを無効にする画像
  • 'make[3]: *** No rule to make target 'arch/x86/tools/relocs_32.c', needed by 'arch/x86/tools/relocs_32.o'. Stop.エラーが発生する可能性があります。次のスクリーンショットを参照してください:
    カーネルビルドエラーの画像(/en-us/linux-virtual-delivery-agent/2106/media/kernel-building-error4.png)
    回避策として、vhci-hcd-1.15/ パスで以下のコマンドを使用して、SUBDIRS=$(PWD) を M=$(shell pwd) に置き換えます。
    sed -i 's/SUBDIRS=$(PWD)/M=$(shell pwd)/g' Makefile

    sed -i 's/SUBDIRS=$(PWD)/M=$(shell pwd)/g' test/Makefile
  • ./include/uapi/linux/stat.h:30:17: error: expected ')' before numeric constant
    #define S_IRUSR 00400 エラーが発生する可能性があります。次のスクリーンショットを参照してください。
    カーネルビルドエラーの画像(/en-us/linux-virtual-delivery-agent/2106/media/kernel-building-error5.png)
    この問題を回避するには、次のコマンドを実行します。
    sed -i 's/show_debug_output/debug_output_show/g' usb-vhci-iocifc.c usb-vhci-hcd.c

    sed -i 's/store_debug_output/debug_output_store/g' usb-vhci-iocifc.c usb-vhci-hcd.c

    sed -i 's/static DRIVER_ATTR(debug_output, S_IRUSR | S_IWUSR, debug_output_show, debug_output_store);/static DRIVER_ATTR_RW(debug_output);/g' usb-vhci-iocifc.c usb-vhci-hcd.c
  • ./arch/x86/include/asm/uaccess.h:433:29: error: invalid initializer __typeof__(ptr) __pu_ptr = (ptr); \ エラーが発生する可能性があります。次のスクリーンショットを参照してください。
    カーネルビルドエラーの画像(/en-us/linux-virtual-delivery-agent/2106/media/kernel-building-error6.png)
    回避策として、usb-vhci-iocifc.c ファイルの 219 行目を __put_user('\0', arg->bus_id); から __put_user('\0', arg->bus_id + 0); に変更します。
  • error: 'access_ok' undeclared (first use in this function)
    if(unlikely((_IOC_DIR(cmd) & _IOC_READ) && !access_ok(VERIFY_WRITE, arg, _IOC_SIZE(cmd)))) エラーが発生する可能性があります。次のスクリーンショットを参照してください。
    カーネルビルドエラーの画像(/en-us/linux-virtual-delivery-agent/2106/media/kernel-building-error7.png)
    この問題を回避するには、次のコマンドを実行します。
    sed -i 's/VERIFY_READ, //g' usb-vhci-iocifc.c  
    sed -i 's/VERIFY_WRITE, //g' usb-vhci-iocifc.c

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

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

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

Citrix Workspace アプリからリダイレクトされたすべての USB ディスクのアクセス制御のため、Linux VDA は、所有者のみがリダイレクトされたデバイスにアクセスできるように、これらすべてのデバイスを管理者権限で管理します。その結果、ユーザーは管理者権限なしではデバイスをアンマウントできません。
デバイスをアンマウントできないイメージ(/en-us/linux-virtual-delivery-agent/2106/media/unable-to-mount-disk.png)

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

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

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

Citrix Workspaceアプリのツールバーにデバイスが表示されないことがありますが、これはUSBリダイレクトが行われていないことを示します。この問題が発生した場合は、以下を確認してください。
  • ポリシーがUSBリダイレクトを許可するように構成されている
  • カーネルモジュールがカーネルと互換性がある
Workspaceアプリのツールバーにあるデバイスタブ(/en-us/linux-virtual-delivery-agent/2106/media/client-usb-redirection-troubleshoot.png)
注:
Citrix Workspaceアプリ for Linuxでは、Devicesタブは利用できません。

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