Os usuários do VirtualBox de todos os níveis (do iniciante ao desenvolvedor) têm vários cenários em que requerem acesso a um dispositivo USB do VirtualBox vms por meio de passagem USB. Especificamente, acessando dispositivos USB que estão conectados a um computador host.
Como os vboxusers conduzem com sucesso a passagem USB do VirtualBox dentro das VMs para acessar seus dispositivos de hardware USB pela Ethernet (ou outras conexões de rede)?
Vamos responder isso abaixo ...
Este artigo fornece instruções passo a passo para mostrar aos vboxusers como habilitar o acesso ao hardware do cartão SD a partir de uma máquina de convidado Ubuntu Linux VirtualBox em uma máquina host executando sistemas operacionais Windows sobre Ethernet (ou qualquer outra conexão de rede).
Antes de seguir qualquer uma das etapas abaixo, certifique-se de que todos os drivers estejam atualizados em todas as máquinas que participam da passagem USB.
Independentemente da plataforma, ferramenta ou sistema operacional (VboxManage, Ubuntu, XP, VirtualBox Extension Packs, etc), dev e novos vboxusers precisam que seus drivers estejam atualizados (ou compatíveis com a versão do VirtualBox Extension Pack usada) para maximizar o sucesso USB passthrough.
Etapa 1-1: Abra o Prompt de Comando (ou Windows PowerShell em sistemas operacionais Windows - como XP Pro) como administrador (por exemplo: tecla "Windows" + "x". Em seguida, selecione "Prompt de comando (admin)")
Etapa 1-2: Use o comando wmic (ou o comando lsusb no Linux) para listar as unidades de disco. Isso deve ser feito antes de inserir o cartão SD no PC.
wmic diskdrive list brief
A saída deve ser a seguinte:
Rubrica | ID de dispositivo | Modelo | Partições | Tamanho |
SAMSUNG MZFLV256HCHP-000MV | \\.\PHYSICALDRIVE0 | SAMSUNG MZFLV256HCHP-000MV | 3 | 256052966400 |
Etapa 1-3: Insira o cartão SD na máquina e execute o mesmo comando de antes (em um sistema operacional Linux, seria o comando lsusb para listar informações sobre detalhes específicos sobre barramentos USB, etc)
Os usuários devem ver uma linha adicional mostrando o ID do dispositivo do cartão SD. No exemplo a seguir, o ID é: “\\.\PHYSICALDRIVE1“.
Rubrica | ID de dispositivo | Modelo | Partições | Tamanho |
Generic- USB3.0 CRW -SD USB Device | \\.\PHYSICALDRIVE1 | Generic- USB3.0 CRW -SD USB Device | 2 | 31914086400 |
SAMSUNG MZFLV256HCHP-000MV | \\.\PHYSICALDRIVE0 | SAMSUNG MZFLV256HCHP-000MV | 3 | 256052966400 |
Devs e vboxusers devem observar: os usuários devem saber se estão usando um dispositivo USB 3.0 ou 2.0 (EHCI) USB. "EHCI" significa: “Enhanced Host Controller Interface”.
Etapa 2-1: Transfira a pasta para a pasta de instalação do VirtualBox. No exemplo a seguir, será: “C:\Program Files\Oracle\VirtualBox\”.
cd "C:\Program Files\Oracle\VirtualBox\"
Etapa 2-2: Usando o “VBoxManage.exe” crie o arquivo VMDK do cartão SD. O argumento final diz respeito aos cartões SD DeviceID (reveja os passos 1-1 a 1-3)
.\VBoxManage.exe internalcommands createrawvmdk -filename C:\sdcard.vmdk -rawdisk
\\.\PHYSICALDRIVE1
Se tudo estiver bem, a saída será “sdcard.vmdk” e será criada na pasta raiz do C-drive.
RAW host disk access VMDK file C:\sdcard.vmdk created successfully.
Etapa 3-1: Como administrador, inicie a GUI do VirtualBox
Etapa 3-2: Na GUI do VirtualBox, navegue da seguinte forma: “Configuração > Armazenamento”
Etapa 3-3: Clique em “Controlador: SATA”
Etapa 3-4: Marque a caixa de seleção ao lado de “Use Host I/O Cache”
Etapa 3-5: Agora clique no ícone “Adds Hard Disk” (mostrado no auxílio visual abaixo)
Etapa 3-6: Selecione “Escolher disco existente”
Etapa 3-7: Vá para a unidade C e escolha o arquivo “sdcard.vmdk” (o arquivo que criamos na Etapa 2)
Inicie a máquina virtual e comece a verificação. Neste exemplo, é semelhante a: “/dev/sdb” (imagem do sistema operacional Raspbian em cartão SD de 32 GB).
$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 29.8 GiB, 32010928128 bytes, 62521344 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb1d773dc
Dispositivo | Arranque inicial | Fim | Setores | Tamanho | Identidade | Modelo |
/dev/sdb1 | 8192 | 96453 | 88262 | 43.1M | c | W95 FAT32 (LBA) |
/dev/sdb2 | 98304 | 31116287 | 31017984 | 14.8G | 83 | Linux |
Infelizmente, ao tentar usar o cartão SD, surgiram vários erros. Abaixo estão algumas opções de solução de problemas para passagem de cartão SD do VirtualBox.
Opção 1 de solução de problemas:
O erro: "O cache de E/S encontrou um erro ao atualizar os dados no meio" ahci-0-1 "(rc = VERR_ACCESS_DENIED)"
Para usuários que experimentaram o erro acima, retorne à Etapa 2 e certifique-se de que a caixa de seleção "Use Host I/O Cache" esteja marcada.
Opção de solução de problemas 2
O erro: "O UUID da mídia não corresponde ao valor armazenado no registro da mídia.
De dentro da pasta de instalação do VirtualBox, execute o seguinte comando:
.\VBoxManage.exe list hdds
Os usuários terão então a capacidade de localizar o UUID nos detalhes do erro
UUID: 5b951504-358d-4a6e-bb8f-61be3ec32367
Parent UUID: base
State: inaccessible
Type: normal (base)
Location: C:\Users\max\Desktop\sdcard.vmdk
Storage format: VMDK
Capacity: 0 MBytes
Encryption: disabled
Use o comando abaixo (especificando o UUID) para remover o disco:
.\VBoxManage.exe closemedium disk 5b951504-358d-4a6e-bb8f-61be3ec32367