リナックス バーチャル デリバリー エージェント

USBデバイスのリダイレクト

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

ヒント:

ネットワーク遅延が100ミリ秒未満の場合は、USBデバイスのリダイレクトを使用することをお勧めします。ネットワーク遅延が200ミリ秒を超える場合は、USBデバイスのリダイレクトを使用しないでください。

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

  • オープンソースUSB/IPプロジェクト
  • Citrix USBセッションモジュール
  • Citrix USBサービスモジュール

オープンソースUSB/IPプロジェクト:

USB/IPプロジェクトは、Linuxカーネルドライバーと、カーネルドライバーと通信してすべてのUSBデータを取得できるいくつかのユーザーモードライブラリで構成されています。

Linux VDAは、オープンソースのUSB/IPプロジェクトに基づいてUSBデバイスのリダイレクトを実装し、USB/IPのカーネルドライバーとユーザーモードライブラリを再利用します。ただし、Linux VDAとCitrix Workspaceアプリ間のすべてのUSBデータ転送は、Citrix ICA USBプロトコルによってカプセル化されます。

Citrix USBセッションモジュール:

Citrix USBセッションモジュールは、USB/IPカーネルモジュールとCitrix Workspaceアプリ間の通信ブリッジとして機能します。

Citrix USBサービスモジュール:

Citrix USBサービスモジュールは、USBデバイスの接続や切断など、USBデバイスに対するすべての操作を管理します。

USBデバイスリダイレクトの仕組み

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

Linux VDAは、クライアントから正常にリダイレクトされたUSBデバイスのリストをサポートしています。

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

ヒント:

USB 3.0ポートのサポートを追加しました。クライアントデバイスのUSB 3.0ポートにUSB 3.0デバイスを挿入できます。

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

USBマスストレージデバイス ベンダーID:プロダクトID ファイルシステム
Netac Technology Co., Ltd 0dd8:173c ファット32、エヌティーエフエス
Kingston Datatraveler 101 II 0951:1625 ファット32、エヌティーエフエス
Kingston Datatraveler GT101 G2 1567:8902 ファット32、エヌティーエフエス
SanDisk SDCZ80 flash drive 0781:5580 ファット32、エヌティーエフエス
WD HDD 1058:10B8 ファット32、エヌティーエフエス
Toshiba Kingston DataTraveler 3.0 USB device 0930:6545 ファット32、エヌティーエフエス
Taiwan OEM – OBSOLETE VendorCo ProductCode Disk 2.0 FFFF:5678 ファット32、エヌティーエフエス
TD-RDF5A Transcend USB device 8564:4000 ファット32、エヌティーエフエス

注:

RHEL、Rocky Linux、SUSE で NTFS を使用するには、まずこれらのディストリビューションで NTFS サポートを有効にしてください。

USB 3Dマウス ベンダーID:プロダクトID
3DConnexion SpaceMouse Pro 046d: c62b
USBスキャナー ベンダーID:プロダクトID
Epson Perfection V330 photo 04B8: 0142
ユビコ USB ベンダーID:プロダクトID
Yubico YubiKey OTP+FIDO+CCID -Keyboard, HID 1050:0407
ウェブカメラUSB ベンダーID:プロダクトID
Logitech composite USB device – WebCam, Audio 0460:0825

USBデバイスリダイレクトの設定

(RHELおよびRocky Linuxのみ) USB/IPカーネルモジュールのインストールまたはコンパイル

Linux VDAは、USBデバイスリダイレクトの仮想ホストコントローラーとしてUSB/IPを使用します。ほとんどの場合、USB/IPカーネルモジュールはLinuxカーネルバージョン3.17以降でリリースされているため、デフォルトでカーネルモジュールをビルドする必要はありません。ただし、USB/IPカーネルモジュールはRHELおよびRocky Linuxでは利用できません。これらのLinuxディストリビューションでUSBデバイスリダイレクトを使用するには、USB/IPカーネルモジュールをインストールまたはコンパイルする必要があります。お使いのLinuxディストリビューションに基づいて、https://pkgs.org/download/kmod-usbip からUSB/IPをダウンロードしてインストールしてください。

USBデバイスリダイレクトポリシーの設定

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

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

USBデバイスリダイレクトを有効にする

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

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

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

USBデバイスリダイレクトを有効にする(/ja-jp/linux-virtual-delivery-agent/2507-ltsr/media/client-usb-redirection-policy.png)

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

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

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

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

クライアントUSBデバイスリダイレクトルール設定(/ja-jp/linux-virtual-delivery-agent/2507-ltsr/media/client-usb-redirection-rule.png)

注:

USBデバイスリダイレクトを構成する際は、クライアントUSBデバイスリダイレクトオプションを許可に設定し、クライアントUSBデバイスリダイレクトルールAllow:#all okとして構成してください。両方の設定を構成しないと、セッション内でクリックしたときに外部マウスが消える可能性があります。

Azure上のUbuntuでのUSBリダイレクトのサポート

デフォルトでは、Azure上のUbuntuには特定のUSBカーネルドライバーが含まれていない場合があります。以下の手順に従って、汎用デバイスと特定のデバイスの両方でUSBリダイレクトを有効にできます。

汎用デバイスのUSBリダイレクトを有効にする

標準USBストレージデバイス、YubiKey USB HIDデバイス、ASIXネットワークアダプターなどの汎用USBデバイスの場合、以下の構成スクリプトを実行するだけで済みます。

sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbcfg.sh

スクリプトを実行した後、Citrix USBサービスを再起動してサポートを有効にします。

sudo service ctxusbsd restart

特定のデバイス用のUSBカーネルドライバーモジュールの構築

すぐにサポートされていないデバイスの場合、以下の一般的なワークフローを使用して、必要なカーネルドライバーモジュールを構築およびインストールできます。以下の例では、説明のためにKingston DataTraveler 2.0 Stick (VID=0930, PID=6544)を使用しています。

前提条件:

  • Linux VDAパッケージがインストールされたVDAマシン。

  • 汎用Linuxカーネルを実行しているLinux物理マシン。

Linux物理マシンで必要なカーネルドライバーを特定する

ステップ1 - デバイスを接続する

USBデバイスを汎用Linuxカーネルを実行している物理マシンに接続します。

ステップ2 - USBカーネルドライバー識別スクリプトを準備する

/opt/Citrix/VDA/sbin/usbazure/ctxusbkodriver.shを物理マシンにコピーし、実行可能にします。

ステップ 3 - デバイスのVIDとPIDを取得する

lsusbを使用して、接続されているUSBデバイスを特定します。

lsusb
Example output:
Bus 001 Device 040: ID 0930:6544 Toshiba Corp. TransMemory-Mini / Kingston DataTraveler 2.0 Stick
<!--NeedCopy-->

ステップ 4 - 必要なカーネルドライバーを特定する

デバイスのVID:PIDを指定してヘルパースクリプトを実行します。

./ctxusbkodriver.sh 0930:6544
Example output:
All USB Kernel drivers for 0930:6544:
usb-storage
<!--NeedCopy-->

VDAマシンにカーネルドライバーをビルドしてインストールする

ステップ 1 - ビルド環境を構成する

構成スクリプトを実行してビルド環境をセットアップし、必要なカーネルソースコードを/root/.ctxusbにダウンロードします。

sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbcfg.sh

ステップ 2 - カーネルビルド構成を決定する

構成スクリプトを使用して、適切なカーネルモジュールビルドオプションを取得します。

sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbkoconfig.sh /root/.ctxusb/linux usb-storage
Example output:
Config option: CONFIG_USB_STORAGE
Folder: /root/.ctxusb/linux/drivers/usb/storage
<!--NeedCopy-->

ステップ 3 - カーネル構成オプションを検査して記録する

cd /root/.ctxusb/linux
make menuconfig
<!--NeedCopy-->
  • 検索機能(/を押す)を使用して、オプション(例:CONFIG_USB_STORAGE)を見つけます。
  • Record relevant settings (e.g., CONFIG_USB_SUPPORT=y, CONFIG_USB_STORAGE=m).
  • 変更を保存せずに終了します。

ステップ 4 - カーネルドライバーをビルドしてインストールする

カーネルモジュールをコンパイルしてインストールします:

sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbkobuild.sh /root/.ctxusb/linux/drivers/usb/storage "CONFIG_USB_SUPPORT=y CONFIG_USB_STORAGE=m"

ステップ5 - カーネルドライバーの検証

modinfo usb-storage

正常に完了すると、指定したUSBデバイス用のカーネルドライバーがビルドされ、インストールされます。

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

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

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

Linux VDAは、Citrix WorkspaceアプリからリダイレクトされたすべてのUSBディスクを管理者権限で管理し、所有者のみがリダイレクトされたデバイスにアクセスできるようにします。そのため、デバイスをアンマウントするには管理者権限が必要です。

デバイスをアンマウントできない

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

Citrix Workspaceアプリのツールバーを使用してUSBディスクのリダイレクトをすぐに停止すると、ディスク上で変更または作成したファイルが失われる可能性があります。この問題は、ファイルシステムにデータを書き込む際に、システムがファイルシステム内のメモリキャッシュをマウントするため、データがディスク自体に書き込まれないために発生します。Citrix Workspaceアプリのツールバーを使用してリダイレクトを停止すると、データがディスクにフラッシュされる時間がなくなり、データが失われます。

この問題を解決するには、USBリダイレクトを停止する前に、ターミナルでsyncコマンドを使用してデータをディスクにフラッシュします。

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

Citrix Workspaceアプリのツールバーにデバイスが表示されないことがあり、これはUSBリダイレクトが行われていないことを示します。

ワークスペースアプリのツールバーにあるデバイスタブ(/ja-jp/linux-virtual-delivery-agent/2507-ltsr/media/client-usb-redirection-troubleshoot.png)

この問題が発生した場合は、以下を確認してください。

  • ポリシーがUSBデバイスリダイレクトを許可するように構成されていること。
  • Citrix USBサービスモジュールが実行されていること。

ポリシーが正しく設定されていない場合は、この記事の「USBデバイスリダイレクトポリシーの設定」セクションを参照して修正してください。

Citrix USBサービスモジュールが実行されていない場合は、以下の手順を実行してください。

  1. 以下のコマンドを使用して、お使いのLinuxディストリビューションでUSB/IPカーネルモジュールが利用可能かどうかを確認します。

    modinfo usbip-core
    <!--NeedCopy-->
    
  2. 出力が以下のように表示される場合は、お使いのLinuxディストリビューションに基づいてUSB/IPカーネルモジュールをインストールまたはコンパイルしてください。

    modinfo: ERROR: Module usbip-core not found.
    <!--NeedCopy-->
    
    • RHELおよびRocky Linuxについては、この記事の「USB/IPカーネルモジュールのインストールまたはコンパイル」セクションを参照してください。
    • SUSE の場合は、https://software.opensuse.org/package/usbip から USB/IP パッケージをダウンロードしてインストールします。
    • Ubuntu/Debianの場合は、以下の手順を実行してUSB/IPカーネルモジュールをコンパイルおよびインストールします。

      1. USB/IPカーネルモジュールのソースコードをダウンロードします。

        https://github.com/torvalds/linux/tree/master/drivers/usb/usbipにあるLinuxカーネルリポジトリにアクセスし、ターゲットのLinuxカーネルバージョン(v4.15以降)タグを選択して、https://github.com/torvalds/linux/tree/v4.15/drivers/usb/usbipのようなリンクを取得します。

        DownGitにアクセスし、上記のリンクを入力してUSB/IPソースコードをダウンロードするためのダウンロードリンクを作成します。

      2. 以下のコマンドを使用してソースファイルを解凍します。

        unzip ${USBIP_SRC}.zip
        
        cd usbip
        <!--NeedCopy-->
        
      3. Makefile」ファイルを次のように変更します。

        # SPDX-License-Identifier: GPL-2.0
        
        ccflags-$(CONFIG_USBIP_DEBUG) := -DDEBUG
        
        obj-$(CONFIG_USBIP_CORE) += usbip-core.o
        
        usbip-core-y := usbip_common.o usbip_event.o
        
        obj-$(CONFIG_USBIP_VHCI_HCD) += vhci-hcd.o
        
        vhci-hcd-y := vhci_sysfs.o vhci_tx.o vhci_rx.o vhci_hcd.o
        
        #obj-$(CONFIG_USBIP_HOST) += usbip-host.o
        
        #usbip-host-y := stub_dev.o stub_main.o stub_rx.o stub_tx.o
        
        #obj-$(CONFIG_USBIP_VUDC) += usbip-vudc.o
        
        #usbip-vudc-y := vudc_dev.o vudc_sysfs.o vudc_tx.o vudc_rx.o vudc_transfer.o vudc_main.o
        <!--NeedCopy-->
        
      4. ソースコードをコンパイルします。

        apt-get install linux-headers-`uname -r`
        
        make -C /lib/modules/`uname -r`/build M=$PWD
        <!--NeedCopy-->
        
      5. USB/IPカーネルモジュールをインストールします。

        cp usbip-core.ko vhci-hcd.ko /opt/Citrix/VDA/lib64/
        <!--NeedCopy-->
        
      6. USB/IPカーネルモジュールをロードするために、ctxusbsdサービスを再起動します。

        systemctl restart ctxusbsd
        <!--NeedCopy-->
        

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デバイスのリダイレクト