[Debian][KVM] 仮想マシンでシリアルUSBケーブルを使う

仮想マシン上の Windows 2000 でモバイル用アプリケーションを開発するためには、転送用のUSBケーブルを使用する必要がある。USB デバイスを仮想マシンで使用するための例として、Windows 2000 にこのUSBケーブルを登録する手順を示す。Windows XPでも基本手順は変わらないはずだ。

libvirtXMLファイルを編集する

libvirtサイトのXMLフォーマットの記述を読むと、usb デバイスを仮想マシンで使用するには、XMLファイルを編集する必要があるとのこと。本来は virsh コマンドで編集するべしとのことだが、それに関する記述が詳しくないので仕方なく、元ファイルを直接に編集する。

元ファイルは、lenny では、

/etc/libvirt/qemu/仮想マシン名.xml

である。このファイルを編集して、

  ...
  <devices>
    ...
    <hostdev mode='subsystem' type='usb'>
      <source>
        <vendor id='0x07cf'/>
        <product id='0x47ff'/>
      </source>
    </hostdev>
  </devices>
  ...

の記述を加えよとのこと。ここでvendor_id と puroduct_id は、使用するusbデバイスのものをあらかじめ調べておく。

今回使用するのは、CasioのMysync USBケーブルである。ホストOSのlenny上でlsusbコマンドを実行すると、


# lsusb
...
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 07cf:47ff Casio Computer Co., Ltd
Bus 001 Device 003: ID 15d9:0a4d Trust International B.V.
...
上記のIDが分かる。

libvirt を再起動し、

# /etc/init.d/libvirt-bin restart

仮想マシンマネージャから仮想マシンを開き、表示->詳細 を見ると以下のようになる。

USBデバイスが登録されているのが分かる(左欄の下から2番目)。

Windows 上の操作

この状態で仮想マシンを機動すると、USB デバイスに対する「新しいハードウェアの検索ウィザード」が立ち上がる。ここでは一旦ウィザードをキャンセルする。次に、あらかじめダウンロードしておいたデバイスドライバインストール用プログラムを実行する。これで、ドライバがディスクに保存される。

ここで、再起動すると再びウィザードが立ち上がるので、通常のドライバのインストール手順をたどる。

デバイスマネージャを開くと、ポートの項目に以下のように認識される。


問題点

以上の手順で当初の目的は達成されるのだが、ひとつ問題がある。それは、USBケーブルを指して置かないと仮想マシンが起動しないこと。そのため現状では、USBケーブルを使用しないときは上記の編集前のXMLファイルに戻して使用している。CDROM デバイスにあるように、ConnectとDisconnect状態を、仮想マシンの詳細画面で切り替えることが出来れば便利なのだが。

そのような方法が現状(virt-manager=0.8.3-2~bpo50+1,libvirt-bin=0.8.1-2~bpo50+1)ではまだ存在しないのか、あるいは既に組み込まれているがXMLファイルへの記述が間に合っていないのは分からない。