2016-08-15 22 views
1

の内側に表示されていない、それは私がUSBデバイスが(OS:Windowsの10)私はベイグラント内で目に見えるUSBデバイスを作ってみましたベイグラント

vb.customize ['modifyvm', :id, '--usb', 'on'] 
# Provider-specific configuration so you can fine-tune various 
# backing providers for Vagrant. These expose provider-specific options. 
# Example for VirtualBox: 
config.vm.provider "virtualbox" do |vb| 
# # Display the VirtualBox GUI when booting the machine 
vb.gui = true 
# # Configure dongle 
vb.customize ['modifyvm', :id, '--usb', 'on'] 
vb.customize ['usbfilter', 'add', '0', '--target', :id, '--name', 'VC', '--vendorid', '0x046E', '--productid', '0x0001'] 

エンド

ファイルベイグラントに以下の2行を追加した理由です。しかしときに私vagrant upこのUSBデバイスを見ることができません。 VirtualBoxデバイスマネージャで不明なデバイスとしてマークします。デバイスはローカルPCで表示され、いくつかのコマンド後に表示されることがあります(vagrant reload)。しかし、私はマシンが起動するとすぐにUSBデバイスを見えるようにする安定したソリューションを探しています。

答えて

1

これは、VirtualBoxの設定 - > USB - > USBデバイスフィルタ、またはVagrantfileを介してプロパティを定義することで実現できます。

usermodの定義により、VirtualBox拡張パックはホストとゲストマシンの間のUSB統合を実装できます。

迷惑メールボックスをインストールする前に。以下のコマンドを実行します

# add host user to 'vboxusers' group 
sudo usermod -a -G vboxusers rohan 

注: - ホストマシン上の現在のユーザーに変更しローハン。今

、vagrantfileランでUSBの統合にVBoxManageを属性を定義する前に、あなたの現在のホスト・マシンに搭載されたUSBの情報を取得するのに役立ちます:

sudo VBoxManage list usbhost 

[sudo] password for rohan: 
Host USB Devices: 

UUID:    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 
VendorId:   0x0781 (0781) 
ProductId:   0x5575 (5575) 
Revision:   1.39 (0139) 
Port:    0 
USB version/speed: 2/2 
Manufacturer:  SanDisk 
Product:   Cruzer Glide 
SerialNumber:  xxxxxxxxxxxxxxxxxxxx 
Address:   sysfs:/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1//device:/dev/vboxusb/001/011 
Current State:  Busy 

さて、Vagrantfileが決定(構成属性を実装することができます上記):

# Enable USB Controller on VirtualBox 
    config.vm.provider "virtualbox" do |vb| 
    vb.customize ["modifyvm", :id, "--usb", "on"] 
    vb.customize ["modifyvm", :id, "--usbehci", "on"] 
    end 

    # Implement determined configuration attributes 
    config.vm.provider "virtualbox" do |vb| 
    vb.customize ["usbfilter", "add", "0", 
     "--target", :id, 
     "--name", "Any Cruzer Glide", 
     "--product", "Cruzer Glide"] 
    end 

それ以上の結果や属性に行われるために必要なすべての変更は、その後に応じconfig.vm.providerに値を追加する場合

usbfilter     add <index,0-N> 
          --target <uuid|vmname>|global 
          --name <string> 
          --action ignore|hold (global filters only) 
          [--active yes|no] (yes) 
          [--vendorid <XXXX>] (null) 
          [--productid <XXXX>] (null) 
          [--revision <IIFF>] (null) 
          [--manufacturer <string>] (null) 
          [--product <string>] (null) 
          [--remote yes|no] (null, VM filters only) 
          [--serialnumber <string>] (null) 
          [--maskedinterfaces <XXXXXXXX>] 

USBデバイス上に定義した後vagrant halt時にゲストマシンに搭載することができ、vagrant up、またはvagrant provisionに続く、vagrant reload続く:

後、あなたがusbfilterに関して定義できるプロパティがあります。

:USBデバイスが随時変化することができるので、Vagrantfile内 を定義すべきデバイス、前もって予測することは困難です。したがって、 VirtualBox GUI(設定> USB> USBデバイスフィルタ)経由でUSBフィルタを定義すると、上記のVagrantfileの実装よりも多くの場合、 が優先されます。

参考using terminalusing UI

+0

ご返信ありがとうございます。ミニチュートリアルありがとうございます。残念なことに、私の目標は私の手で何かをするのではなく、穴のプロセスを自動化することだから、解決策ではありません。そして私は解決策を見つけました。 DEVCONツールは セット場所 "D:\ MSSDK \ツール\ x64の" 配置され、 '#設定の場所。 #を外しUSBドングル、ホストマシンから \ devcon.exe削除* VID_096E * #ReconectをUSBドングルからバーチャルマシンへ 。\ devcon.exe rescan' 私はプログラムレベルでUSBを切断して、USBからバギーントマシンに再接続するdevcon.exeツールを使用します。 –

+0

何らかの理由でUSBデバイスがホストマシンに接続されていて、VirtualBoxで「Uknown device」とマークされているため、100%で動作します。だから私は接続して再接続する - そして今はすべて期待どおりに動作します。 –

+0

あなたの答えをありがとう。他のユーザーがあなたの答えを助けることができる答えとしてあなたのコメントを再投稿してください。 :-) –

0

私は解決策を見つけました。ここにdevconツールを使用している短いPowerShellスクリプトがあります。

# Set location where devcon tool is placed 

Set-Location "D:\MSSDK\Tools\x64" 

# Disconnect USB from host machine 

.\devcon.exe remove *VID_096E* 

# Reconect USB to virtual machine 

.\devcon.exe rescan 

devcon.exeは、MS SDKツールキットの一部です。物理的に切断されていなくても、USBデバイスを取り外して接続することができます。 USBがホストマシンから切断された後、私は再スキャンを行い、USBデバイスがVirtualBox内で見えるようにした後に行います。

関連する問題