KVM客戶機使用主機USB設備
有些時候KVM客戶機還是要使用USB設備,比如USB密鑰等
KVM命令行參數
-usb 打開usb驅動程序,啟動客戶機usb支持
-usbdevice devname 為客戶機增加usb設備,devname有多種形式,詳見man kvm,這裡只涉及一種形式host:vendor_id:product_id,也就是-usbdevce vendor_id:product_id
獲取USB設備參數
將usb設備插入主機之前
$lsusb > usb.old
usb設備插入主機之後
$lsusb > usb.new
然後
vimdiff usb.old usb.new
找到新增加的那一行,類似下面這行
Bus 002 Device 004: ID 13fd:1040 Initio Corporation
ID後面的兩個字段分別是vendor_id和product_id
映射usb設備
客戶機命令行添加這兩個參數
sudo kvm -usb -usbdevice host:13fd:1040 …
這樣客戶機就可以看到映射的USB設備了
小問題
把移動硬盤映射到客戶機做測試,虛擬客戶機竟然無法啟動了,從遠程vnc看一直停留在Booting from Hard Disk…,搜索了下下也無結果,後來靈光一閃,是不是因為移動硬盤成了啟動磁盤?果然如此,修改引導參數如下
-boot order=c,menu=on
這裡增加了menu=on,這樣啟動的時候按F12可以選擇從哪個驅動器啟動,重新啟動,果然看到移動硬盤成了第一個啟動設備,選擇本地硬盤正常啟動系統,從客戶機裡也可以看到移動硬盤。
據了解,現在KVM還沒有命令行參數可以設置從第二塊硬盤啟動,也有人在提這個事情,建議order=e從第二塊硬盤啟動,依次類推。
update:
參數-usbdevice devname映射普通的USB設備有兩種格式,devname可以指定為
host:bus.addr
host:vendor_id:product_id
上面-usbdevice host:13fd:1040指定的是host:vendor_id:product_id這種格式,對於例子中顯示的USB設備,也可以以host:bus.addr格式設定參數
host:2.4
其中2為總線號,4為設備在總線上的地址Bus 002 Device 004,但是使用host:bus.addr這種格式有一個缺點,如果USB設備換一個插口,其總線和設備號會發生變化,而host:vendor_id:product_id這種格式則不受影響,即便客戶機換到另一台主機上跑也是一樣。
update again(09/19/2012):
KVM主機上插了兩個同類型的usb設備,這個兩個usb設備的verdor_id和product_id竟然完全一樣,那只能通過host:bus.addr這種方式為客戶機指定usb設備了,不然kvm主機會不知所措吧。