USB/IPを使用して仮想マシンにリモートのUSBデバイスを繋ぐ
DH-ONE/U2がリモートのデバイス。まだ動作はしていない。
追記 : この情報は古い。現在USB/IPはkernel.orgのカーネルに統合されていて、staging内に存在する。ただしユーザランドのツール、つまり各種コマンドのためにusbipのツールをビルドする必要は有る。
追記 : 現在usbipはWindows対応コードが書かれつつある。http://d.hatena.ne.jp/mjt/20090621/p2
共通の作業
- 適切なカーネルソースを導入
- http://usbip.sourceforge.net/ から適当にDL
- usbip-x.x.x/driversの適切なバージョンのディレクトリでmake KSOURCE=/usr/src/linux
- usbip_common_mod.ko vhci-hcd.ko usbip.koを/lib/modules/usbipなど掘って移動
- usbip-x.x.x/srcでautogen.sh、configure、make、make install
これを、デバイスを提供する方提供される方の両方で行う必要がある。
コマンドとして、bind_driver、usbaid、usbip、usbipdができる。
デバイスを提供する方
- insmod usbip_common_mod.ko、insmod usbip.ko。
- usbipdを立ち上げる
- bind_driverでドライバをusbipの物に差し替える
デバイスを提供される方
- insmod usbip_common_mod.ko、insmod vhci-hcd.ko。
- usbip -x HOSTNAMEとして全部付ける
他にも、IDを指定して付けたり等の機能がある。
TCP:3240を何らかの方法で到達可能にする必要がある。SSHのポート転送でも動作する。
デバイスを提供する方が手元に有り、デバイスを提供されるホストがリモートであるなら、ssh HOSTNAME -R3240:127.0.0.1:3240 とし、その場でusbip -x localhostのようにすれば良い。
デバイスを削除するときは、usbip -pで番号を確認し、usbip -d 0等として削除できる。