CentOS7でUSB/IPを有効にする

CloudStackのVMでサーバーに繋いだUSB機器を使いたいが、

USBパススルーが難しいっぽいので、USB/IPを入れた手順のメモ。

構成は、自宅CloudStackのサーバーに繋がったUSB機器をUSB/IPを通してvm(windows)で使用する。

– 手順 –

1.カーネルをUSB/IPモジュールを有効にしてビルドする

①ビルドツールを入れる

“Development tools”を入れていない場合は入れる

②ソースをダウンロード

カーネルを確認して、

http://vault.centos.org/7.3.1611/updates/Source/SPackages/から同じのをダウンロードした。

③ソースの展開

④ソースディレクトリへ移動

⑤現在のカーネル設定をコピー

⑥設定を修正

Device Drivers→Staging driversでUSB/IP supportの下を有効にする。

⑦コンフィグをコピーして先頭行に# x86_64を入れる

⑧コンフィグを~/rpmbuild/SOURCES/にコピーする

⑨~/rpmbuild/SPECSに移動してkernel.specを修正する

⑩ビルド

1時間かかる。( ´_ゝ`)🍵

⑪インストール

⑫リブート

ビルドしたカーネルを選択して起動する。kernel.specのbuildidで指定した.localが付いている。

2.usbipツールをビルドする

①usbipモジュールを有効にする

②libsysfsをもってくる

ここからhttp://rpmfind.net/linux/rpm2html/search.php?query=libsysfs-devel

③OSビルドしたディレクトリのusbipツールが入っているディレクトリへ移動

④ビルド&インストール

3.USB/IPの設定

①デーモンの起動

②USB一覧からUSB/IPで公開したい機器を確認

③バインド

busid 1-1の機器が公開したいやつなので、バインドする。

これで、サーバー上で公開された。

4.自動起動の設定

①usbip-hostの自動起動

モジュール設定を作成する。

②usbipdの自動起動

サービスを作成する。

反映して有効化。

③usbipのバインドを自動実行

usbをバインドするスクリプト作成。

usbをバインド解除するスクリプト作成。

起動時にスクリプトを実行するサービスを作成。

反映して有効化。

5.クライアントの設定

①ドライバのダウンロード

USB/IP Projectの手順にでてくるドライバはエラーがでたので、パッチ当ててあるやつをダウンロードした。

https://sourceforge.net/p/usbip/discussion/418507/thread/86c5e473/に書いてるhttps://dl.dropboxusercontent.com/u/39506207/usbip.zipをダウンロード。

署名されてないので警告が出る。。

さらにCloudStackのVM(Windows Server 2012)にうまく入らなかったので、同じネットワークのWindows7に入れてみた。

②ドライバのインストール

デバイスマネージャーでレガシーハードウェアをディスクを使用してインストールする。

警告がでる。

システムデバイスにUSB/IP Enumeratorと表示される

③USB/IPで公開されてる機器にアタッチ

コマンドプロンプトで公開されてる機器を確認

機器にアタッチ

④機器を使うアプリを動かしてみる

繋がった。(∩´∀`)∩

参考サイト

I Need the Kernel Source – https://wiki.centos.org/HowTos/I_need_the_Kernel_Source

I Need to Build a Custom Kernel – https://wiki.centos.org/HowTos/Custom_Kernel

USB/IP Project – http://usbip.sourceforge.net/

 

%d人のブロガーが「いいね」をつけました。