テクノロジーガイド

USB/IP のクライアントへのインストールと使用方法

2 min read チュートリアル 更新されました 27 Sep 2025
USB/IP クライアントのインストールと使用手順
USB/IP クライアントのインストールと使用手順

目的と想定読者

このガイドは、OpenSUSE 系などの Linux クライアント上で USB/IP をインストールし、リモートの USB デバイスを接続・切断する手順を示します。システム管理者やローカルで物理的に接続できない USB デバイスを利用したい開発者が対象です。

重要: 以下の手順は root 権限を前提とします。

前提条件

  • サーバー側で USB/IP サービス(usbip)が動作しており、ネットワーク経由でデバイスを共有していること。
  • サーバーの IP アドレスを把握していること(例: 192.168.0.100)。
  • クライアントとサーバー間のファイアウォールで TCP 3240 ポートが許可されていること(必要に応じてネットワーク管理者に確認)。

クライアントに usbip をインストールする

まずクライアントに usbip をインストールします。サーバーと同様の手順です。

yast2 -i usbip

usbip は既知の USB デバイス一覧(usb.ids)を /usr/share/hwdata に期待しますが、OpenSUSE 11.2 では /usr/share/usbip/usb.ids に置かれているため、シンボリックリンクを作成します。

mkdir /usr/share/hwdata
ln -sf /usr/share/usbip/usb.ids /usr/share/hwdata/

次に vhci-hcd カーネルモジュールを読み込みます。

modprobe vhci-hcd

読み込みが成功したか確認します。

lsmod | grep vhci_hcd

期待される出力例(環境により数字やモジュール名の順序は異なる場合があります):

client1:~ # lsmod | grep vhci_hcd
vhci_hcd               26576  0
usbip_common_mod       25232  1 vhci_hcd
client1:~ #

起動時に自動でモジュールを読み込む設定

再起動時にも自動でモジュールを読み込むには /etc/sysconfig/kernel の MODULES_LOADED_ON_BOOT 行に追加します。エディタで開きます。

vi /etc/sysconfig/kernel

ファイルの該当部(例):

[...]
## Type:                string
## ServiceRestart:      boot.loadmodules
#
# This variable contains the list of modules to be loaded
# once the main filesystem is active
# You will find a few default modules for hardware which
# can not be detected automatically.
#
MODULES_LOADED_ON_BOOT="vhci-hcd"
[...]

設定変更後は SuSEconfig を実行します。

SuSEconfig

サーバーに接続して利用可能な USB デバイスを一覧表示する

サーバー(例: 192.168.0.100)に接続して利用可能なリモート USB デバイスを一覧表示します。

usbip -l 192.168.0.100

出力例(SanDisk の USB メモリが見つかる場面):

client1:~ # usbip -l 192.168.0.100
- 192.168.0.100
2-5: SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
: /sys/devices/pci0000:00/0000:00:04.1/usb2/2-5
: (Defined at Interface level) (00/00/00)
:  0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)

client1:~ #

BUSID(例: 2-5)をメモしておきます。

リモート USB デバイスをクライアントにアタッチする

特定のデバイスをクライアントにアタッチ(接続)します。BUSID を指定して実行します。

usbip -a 192.168.0.100 2-5

実行例出力:

client1:~ # usbip -a 192.168.0.100 2-5
8 ports available

port 0 attached
client1:~ #

アタッチ後、lsusb でローカル接続されたように見えるか確認します。

lsusb

出力例:

client1:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive
client1:~ #

この状態で、リモート USB デバイスをローカルと同様にマウント、フォーマット、読み書きできます。

リモート USB デバイスの切断

クライアント側で使用をやめるときはデタッチします。まずポート情報を確認します。

usbip --port

出力例(ポート 00 が使用中):

client1:~ # usbip --port
8 ports available

Port 00:  at High Speed(480Mbps)
SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
1-1 -> usbip://192.168.0.100:3240/2-5  (remote devid 00020002 (bus/dev 002/002))
1-1:1.0 used by usb-storage
/sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host4/scsi_host/host4/device
Port 01: 
Port 02: 
Port 03: 
Port 04: 
Port 05: 
Port 06: 
Port 07: 
client1:~ #

ポート番号を指定してデタッチします(例: 00)。

usbip -d 00

実行例:

client1:~ # usbip -d 00
8 ports available

port 0 detached
client1:~ #

デタッチ後、lsusb に表示されなくなることを確認します。

client1:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
client1:~ #

サーバー側での再バインド(サーバー上でデバイスをローカルに戻す)

サーバー側では BUSID(例: 2-5)を指定してデバイスをローカルにバインドし、ネットワーク経由で利用できないようにできます(–other オプションを使用)。

サーバーで実行:

bind_driver --other 2-5

出力例:

server1:~ # bind_driver --other 2-5
 (process:3484): DEBUG: write "del 2-5" to /sys/bus/usb/drivers/usbip/match_busid
 Message: bind 2-5 to other drivers than usbip, complete!
server1:~#

この操作によりクライアント側ではデバイスが見えなくなります。

よくある問題とトラブルシューティング

  • デバイスが一覧に出ない
    • サーバー側で usbip が起動しているか確認する(プロセス、ログ)。
    • サーバー IP やネットワーク接続を再確認する。
    • ファイアウォールで TCP ポート 3240 が許可されているか確認する。
  • modprobe しても vhci-hcd が見えない
    • カーネルバージョンやカーネルモジュール名を確認する。
    • カーネルヘッダや必要なパッケージがインストールされているか確認する。
  • アタッチできない/ポートが足りない
    • 別の client から既に同じデバイスが使用されていないか確認する。
    • usbip –port でポート状態を確認し、不要な接続を切断する。

重要: ネットワーク経由でストレージデバイスを使用する場合、データ整合性とパフォーマンスに注意してください。並列アクセスや不意な切断はデータ損失の原因になります。

管理者向けチェックリスト

  • サーバーの usbip デーモンが稼働している
  • サーバー IP と BUSID を取得済み
  • クライアントで usbip パッケージがインストール済み
  • vhci-hcd モジュールを読み込んでいる
  • ファイアウォールで TCP/3240 を開放済み
  • 使用後に安全にデタッチしてからサーバー側で再バインドする

ミニ手順(速習用)

  1. クライアントにインストール: yast2 -i usbip
  2. シンボリックリンク作成(OpenSUSE の場合)
  3. modprobe vhci-hcd
  4. usbip -l でデバイス確認
  5. usbip -a でアタッチ
  6. 使用後に usbip -d でデタッチ
  7. サーバーで bind_driver –other を実行

コマンド チートシート

  • インストール: yast2 -i usbip
  • モジュール読み込み: modprobe vhci-hcd
  • モジュール確認: lsmod | grep vhci_hcd
  • 起動時設定編集: vi /etc/sysconfig/kernel
  • サーバー一覧表示: usbip -l
  • アタッチ: usbip -a
  • ポート一覧: usbip –port
  • デタッチ: usbip -d
  • サーバーでローカルにバインド: bind_driver –other

1行用語集

  • BUSID: サーバー上の USB デバイス識別子(例: 2-5)。
  • vhci-hcd: クライアント側の仮想 USB ホストコントローラドライバ。これによりリモート USB がローカルに見える。

まとめ

  • クライアントで usbip をインストールし、vhci-hcd を読み込めばリモート USB をローカルと同じように扱えます。
  • 利用後は必ずデタッチしてサーバー側で再バインドしておくことで安全に管理できます。
  • ネットワークとファイアウォールの設定、ファイルシステムの整合性に注意してください。

参考リンク

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Python oxzep7 エラーの直し方
テクニカルサポート

Python oxzep7 エラーの直し方

Macで空にしたゴミ箱を復元する方法
データ復旧

Macで空にしたゴミ箱を復元する方法

AI要約の偽電話番号詐欺から身を守る
セキュリティ

AI要約の偽電話番号詐欺から身を守る

AndroidでiMessageを使う方法(AirMessage)
モバイル

AndroidでiMessageを使う方法(AirMessage)

Windows Server 2019をセーフモードで起動する方法
システム管理

Windows Server 2019をセーフモードで起動する方法

Snapchatショートカットの設定と使い方ガイド
SNS

Snapchatショートカットの設定と使い方ガイド