Como acessar um cartão SD de uma máquina virtual?

64

Quero formatar um cartão SD da minha máquina virtual Linux. Eu tenho um leitor de cartão SD embutido no meu laptop. Tentei usar o VirtualBox e o VMware Player e instalei o Ubuntu 10.04 guest. Nenhum deles está mostrando o leitor de cartão SD como um dispositivo. Eu posso acessar o cartão SD no host do Windows.

Não estou interessado em soluções usando pastas compartilhadas, pois quero acessar o cartão SD como hardware (ele deve aparecer em /dev).

Basicamente, quero configurar o cartão SD para o BeagleBoard , mas não quero instalar um Ubuntu físico no meu PC.

Punit Soni
fonte
11
Você instalou addons de convidados do virtualbox?
tumchaaditya
11
Eu tive o mesmo problema. As soluções abaixo funcionaram para mim, mas eram inflexíveis. Acabei investindo em um "leitor USB Micro SD" que aparece por padrão na máquina virtual. Isso me permitiu conectar e desconectar o cartão sem ações adicionais. Apenas uma outra perspectiva sobre a solução
TheMeaningfulEngineer

Respostas:

56

Nos MacBook Pro mais novos, o slot para cartão SD não é mais exposto como um dispositivo USB. Por isso, você precisará conectar o dispositivo bruto à VM para obter acesso bruto a toda a placa. A documentação completa está na seção Configuração avançada de armazenamento da documentação do VirtualBox.

Conforme claramente indicado nos documentos:

Aviso - O acesso bruto ao disco rígido é apenas para usuários experientes. O uso incorreto ou o uso de uma configuração desatualizada pode levar à perda total de dados no disco físico . Mais importante, não tente inicializar a partição com o sistema operacional host em execução no momento em um convidado. Isso levará a uma grave corrupção de dados.

Como um guia rápido, estas são as etapas para conectar o dispositivo a uma VM Linux:

  1. Identifique o dispositivo de bloco de disco bruto no seu sistema host

    1. Insira o cartão SD no slot
    2. Abra um terminal e digite "mount". Você verá a saída identificando o volume montado no seu cartão SD. No meu sistema, recebo o seguinte

      $ mount
      /dev/disk1 on / (hfs, local, journaled)
      devfs on /dev (devfs, local, nobrowse)
      map -hosts on /net (autofs, nosuid, automounted, nobrowse)
      map auto_home on /home (autofs, automounted, nobrowse)
      /dev/disk2s1 on /Volumes/NO NAME (msdos, local, nodev, nosuid, noowners)`
      
    3. No meu caso, o volume "NO NAME" é o cartão SD, então tomo nota da /dev/disk2s1peça. Nesse caso em particular, a s1peça representa uma partição (fatia) no dispositivo bruto, portanto, a parte que usaremos posteriormente é apenas a /dev/disk2parte.

  2. Abra o Utilitário de Disco e "Desmonte" o volume. Não o "ejete". Observe que você pode precisar desmontar o volume de vez em quando durante as próximas etapas, pois eu descobri que o OSX o remontaria automaticamente aleatoriamente.
  3. Agora configuramos o VirtualBox para conhecer o dispositivo bruto com o seguinte comando no Terminal.

    1. Observe que ele /path/to/file.vmdkpode ser colocado em qualquer lugar, embora seja uma boa ideia armazená-lo na pasta VM convidada, como~/VirtualBox VMs/guest-vm/sdcard.vmdk
    2. Observe que o -rawdiskque usamos não faz referência à partição (fatia), mas apenas ao dispositivo de bloco como um todo.

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. Em seguida, anexamos o disco bruto a uma VM convidada na interface do VirtualBox

    1. Verifique se a VM convidada não está em execução.
    2. Abra a área de configurações da VM convidada
    3. Clique em "Armazenamento" na barra de ferramentas
    4. Ao lado do controlador, clique no ícone "Adicionar disco rígido"
    5. Selecione "Escolher disco existente"
    6. Navegue até o que /path/to/file.vmdkvocê usou na etapa 3 e selecione-o
    7. Agora você deve retornar à guia Armazenamento e vê-lo file.vmdkna lista.
  5. Inicie a VM
  6. Dependendo se você tem uma GUI ou não, o cartão SD pode ou não ser montado automaticamente. Se você precisa montar manualmente, ele é simplesmente exposto como outro dispositivo de bloco padrão; portanto, no meu convidado, isso foi exposto como / dev / sdb.

Atualizar

Parece que algumas pessoas podem ter problemas para acessar o dispositivo bruto na etapa 3.2 ou 4.6. Tentativas de executar alguns dos comandos com o sudo não ajudarão, pois o VirtualBox estará sendo executado como seu usuário conectado e ainda não poderá acessar o dispositivo bruto correto ou o arquivo vmdk gerado.

As etapas a seguir devem ajudar, embora eu não as tenha testado.

  1. Verifique se a conta que você está usando no OSX possui privilégios de administrador na seção Preferências / usuários do sistema. Há uma boa chance de que ela também deva ser a conta principal do sistema para que o acesso ao dispositivo bruto funcione.
  2. Verifique as permissões de disco bruto

        $ ls -l /dev/disk2
        brw-r----- 1 jinn staff    14,  5 Aug 26 15:33 /dev/disk2
    

    Essas permissões devem corresponder à sua conta de usuário logada atual:

        $ id
        uid=501(jinn) gid=20(staff) ...snip...
    

    As permissões no dispositivo também devem permitir que sua conta de usuário habitual leia (r) e grave (w) neste dispositivo. NÃO ALTERE AS PERMISSÕES NO DISPOSITIVO, A menos que você saiba absolutamente o que está fazendo.


Atualização # 2

Acontece que o OSX Mountain Lion criou o dispositivo com privilégios "root: operator" e permissões 0640. Infelizmente, por enquanto, a única maneira de obter acesso a esse dispositivo é "sudo chown $ USER" para o usuário atual sempre que você inserir o dispositivo, mas isso não é recomendado, a menos que você realmente entenda o que está fazendo. Espero que a Apple ou o VirtualBox encontrem uma solução mais adequada.

JinnKo
fonte
2
Em Mountain Lion, ficou diskarbitrationd partição de montagem sdcard, para impedir que isso:$ sudo launchctl list | grep diskarbitrationd 188 - com.apple.diskarbitrationd $ sudo kill -SIGSTOP 188 # pauses diskarbitrationd, disabling automount $ sudo kill -SIGCONT 188 # resumes diskarbitrationd, reenabling automount
ıɾuǝʞ
11
Obrigado @kenji, essa é uma ótima dica adicional para os usuários do Mtn Lion (lutei um pouco com o problema da montagem automática). Minhas instruções detalhadas nos fóruns do VirtualBox se beneficiariam dessa dica; Vou adicionar um link para o seu comentário lá e abaixo. Obrigado novamente.
likethesky
11
Eu segui este guia, mas tive problemas de permissão, então eu pré-montei um chmod 777 no dispositivo e funcionou bem. Mais detalhes aqui: balage.blogs.balabit.com/2010/10/…
Samantha Catania
2
Recebi RESOURCE_BUSY ao tentar adicionar a imagem como um disco rígido à caixa virtual. Notei que o OSX remontou as partições do cartão SD. Forçá-los a desmontar, digitando o seguinte em Terminal (No host)sudo diskutil unmountDisk /dev/<disk path>
Rob
11
Posso confirmar que é preciso 1) desmontar 2) chown 3) criar disco virtual 4) desmontar novamente 5) adicionar à VM 6) desmontar NOVAMENTE 7) iniciar a VM. - @JinnKo: você pode adicionar isso à resposta? ou posso?
Erik Allik
42

Resposta para usuários do Windows

  1. Obtenha o DeviceID do seu leitor de cartão SD.

    Você precisará de um cartão na unidade, montado pelo Windows.

    Digite este comando

    wmic diskdrive list brief
    

    Deve ser algo como isto:

    C:\Users\Sandy Scott>wmic diskdrive list brief
    Caption                      DeviceID            Model                        Partitions  Size
    WDC WD7500BPKT-75PK4T0       \\.\PHYSICALDRIVE0  WDC WD7500BPKT-75PK4T0       3           750153761280
    O2Micro SD SCSI Disk Device  \\.\PHYSICALDRIVE1  O2Micro SD SCSI Disk Device  1           3964584960
    

    O último dispositivo é o leitor de cartão SD, portanto o DeviceID é \\.\PHYSICALDRIVE1

  2. Crie o arquivo de link para o cartão SD

    Abra uma janela de comando como administrador

    "C:\Program Files\Oracle\VirtualBox\VBoxManage" internalcommands createrawvmdk -filename "%USERPROFILE%/Desktop/sdcard.vmdk" -rawdisk "\\.\PHYSICALDRIVE1"
    

    Isso assume o caminho de instalação padrão - altere-o se necessário. (Verifique se as aspas estão em torno do argumento rawdisk.)

    O arquivo .vmdk é um link para o cartão SD, você pode colocá-lo em qualquer lugar do sistema host, mas esse comando apenas o coloca em sua área de trabalho por conveniência.

  3. Siga as etapas 4 a 6 da resposta do JinnKo, o único pequeno ajuste é que você precisa iniciar o VirtualBox como administrador

  1. Em seguida, anexamos o disco bruto a uma VM convidada na interface do VirtualBox
    1. Verifique se a VM convidada está desligada.
    2. Verifique se o VirtualBox não está em execução
    3. Inicie o VirtualBox clicando com o botão direito do mouse e escolhendo "Executar como administrador"
    4. Abra a área de configurações da VM convidada
    5. Clique em "Armazenamento" na barra de ferramentas
    6. Ao lado do controlador, clique no ícone "Adicionar disco rígido"
    7. Selecione "Escolher disco existente"
    8. Navegue até o que /path/to/file.vmdkvocê usou na etapa 3 e selecione-o
    9. Agora você deve retornar à guia Armazenamento e vê-lo file.vmdkna lista.
  2. Inicie a VM
  3. Dependendo se você tem uma GUI ou não, o cartão SD pode ou não ser montado automaticamente. Se você precisa montar manualmente, ele é simplesmente exposto como outro dispositivo de bloco padrão; portanto, no meu convidado, isso foi exposto como / dev / sdb.
Sandyscott
fonte
Caso você esteja tentando entender isso com cygwinos caracteres de escape. Não obtive a cygwinsolução correta , mas notei que o comando que funciona cmdnão funciona cygwin.
TheMeaningfulEngineer
Quando inicio o VirtualBox como administrador, não vejo minhas máquinas e, portanto, não consigo alterar suas configurações. Provavelmente, o motivo é que eu não sou um usuário administrador porque estou trabalhando com links em pastas compartilhadas, o que exige isso. Depois de alterar meu tipo de conta para administrador e adicionar a unidade sdcard e executar o VirtualBox como administrador, não consigo passar da tela de login. Não encontrei o problema no syslog. Somente quando a unidade sdcard é removida novamente, também posso fazer login ao executar o VirtualBox como administrador, mas é claro que não vejo o cartão sd. Portanto, não funciona para mim. :(
Frank Breitling
7

Você provavelmente está perdendo as extensões se o seu leitor SD estiver usando o seu controlador USB.

insira a descrição da imagem aqui

Em Arquivo> Preferências, siga a foto. Adicione e aponte para a extensão baixada.

insira a descrição da imagem aqui

Reinicie sua máquina virtual e você deverá ter acesso aos dispositivos USB.

kobaltz
fonte
Olá, tentei esta solução e instalei o pacote de extensão do VirtualBox, mas ainda não obtive sucesso. Estou fazendo isso no macbook, se isso faz alguma diferença. Além disso, no meu perfil de sistema macbook, o leitor de cartão SD não está listado em dispositivos USB, mas como uma categoria separada chamada "leitor de cartão". Além disso, eu consigo ver os dispositivos listados em USB na caixa virtual.
precisa saber é o seguinte
4

Nos MacBook Pro mais recentes, o slot para cartão SD não é mais exposto como um dispositivo USB

Para superar esse problema, você pode simplesmente usar um leitor de cartão de memória USB externo (por exemplo, cartão SD para adaptador USB) em vez do leitor de cartão embutido. Ele irá expor o seu cartão SD como um dispositivo USB, para que você possa montá-lo facilmente como qualquer dispositivo USB. São dispositivos baratos e seriam uma solução aceitável, considerando todos os problemas da outra maneira.

Ahmet
fonte
Essa é a idéia mais inteligente de todas, obrigado! Eu até tinha um leitor de cartão USB por aí, mas não sabia que poderia usá-lo.
marco.m
4

Estou usando o Kubuntu 15.04, VirtualBox 4.3.26

Isso pressupõe que o dispositivo do cartão SD seja /dev/mmcbl0e a saída .vdk seja sd-card.vmk:

sudo VBoxManage internalcommands createrawvmdk -filename ./sd-card.vmdk -rawdisk /dev/mmcblk0

Não tenho certeza se esta é a melhor maneira de corrigir permissões, mas funcionou:

sudo chmod 777 /dev/mmcblk0
sudo chmod 777 ./sd-card.vmdk

Agora vá para as Configurações da VM, selecione Armazenamento, clique em Controlador: Sata, clique no ícone Adicionar disco rígido, selecione seu .vdk (sd-card.vmdk neste caso)

Bogdan
fonte
3

Eu tive muitos problemas para que a solução da JinnKo funcionasse, principalmente por eu estar no Mountain Lion (OS X 10.8) ... Mas, com sua assistência, resolvi os problemas.

A solução completa está detalhada aqui .

No entanto, a essência da minha solução - para usuários do Mountain Lion - é a seguinte (use as etapas de JinnKo acima, mas insira minha etapa aqui antes de executar o comando 'VBoxManage internalcomands createrawvmdk' '(ou seja, entre etapas 2 e 3):

** Especialmente para o Mtn Lion ** Verifique se você é o proprietário deste dispositivo. Em 10,8 Mtn Lion, você provavelmente descobrirá que não é. Verifique fazendo:

ls -l /dev/disk*

Com o '*' você verá TODOS os seus dispositivos de disco, você também pode fazer: ls -l / dev / diskX para ver apenas 'X', por exemplo:

ls -l /dev/disk5

No Mtn Lion (10.8.x), você verá algo como:

brw-r----- 1 root operator 1, <today's date/time> /dev/diskX

Onde 'X' é o número do seu dispositivo, como o '5' em / dev / disk5 ...

No Lion (10.7.x), Snow Leopard (10.6.x) ou talvez nas versões anteriores do OS X, você verá - se seu nome de usuário for 'brad' - provavelmente verá algo como:

brw-r----- 1 brad operator 1, <today's date/time> /dev/diskX

Onde 'X' é o número do seu dispositivo, como o '5' em / dev / disk5 ... Se você é o proprietário, tudo bem, nada a fazer aqui, vá para a próxima etapa, ou seja, a etapa createrawvmdk ( nas ótimas instruções de @JinnKo acima).

Se você não é o proprietário (mas 'root' ou outro usuário), faça o (a) login como usuário administrador ou (b) faça o seguinte (novamente, verifique se você está usando o número / letra do dispositivo correto aqui!):

* CUIDADO * O texto abaixo é apenas para aqueles que desejam arriscar a destruição permanente de dados no disco rígido ou na unidade de armazenamento flash. NÃO NÃO fazer isso se você não tem certeza que você sabe o que está fazendo:

sudo chown <your username> /dev/disk5
sudo chown <your username> /dev/disk5s1

* CUIDADO * NÃO NÃO fazer isso se você não tem certeza que você sabe o que está fazendo. O acima é apenas para aqueles que desejam arriscar destruir permanentemente os dados no disco rígido ou na unidade de armazenamento flash.

Você precisará fazer isso para TODAS as suas fatias (s1, s2, s3, ... por mais que existam). Por exemplo, meu nome de usuário é 'brad', então fiz:, sudo chown brad /dev/disk5então sudo chown brad /dev/disk5s1, então para s2e s3(desde que eu já tinha três partições ou fatias).

Se você não particionou o cartão SD, talvez seja necessário fazer apenas sudo chown <your username> /dev/diskXuma vez (sem fazer nenhuma das fatias / partições)

Espero que isso ajude outros usuários pobres do Mtn Lion por aí!

likethesky
fonte
Excelente solução. Eu estaria perdido sem essa redação. Muito obrigado!
ggutenberg
1

Até agora, não consegui encontrar uma maneira de fazer isso diretamente, mesmo com um leitor de cartão USB (ele colocou o cartão em /dev/dm-1vez do esperado /dev/mmcblk1).

Minha solução foi criar uma unidade virtual de 4 GB no VirtualBox. Isso poderia (como /dev/sdb) levar a instalação do BeagleBoard Ubuntu, conforme documentado.

Em seguida, desliguei a VM, converti-a em um arquivo DD RAW e usei o DD para colocá-lo no cartão: (no Mac host):

VBoxManage clonehd UbuntuBeagleImage.vdi UbuntuBeagleImage.dd --format RAW
sudo dd if=UbuntuBeagleImage.dd of=/dev/rdisk(NUMBER) bs=1m

( /dev/disk2no meu caso, mas verificar triplamente como errar pode atrapalhar sua unidade de disco rígido).

O ddcomando levou cerca de 1 hora e 20 minutos!

Eu espero que isso ajude. Ainda estou trabalhando para uma maneira mais fácil e rápida - não precisamos transferir 4 GB de dados para 600 MB de SO.

Rico
fonte
0

Para mim, a solução foi ligar o dispositivo USB com cartão SD, usando e
Devices -> USB devices ->My card reader,
após alguns segundos, novos discos aparecem na minha VM.

Eu instalei o VirtualBox Extensions Pack antes disso.

Zdzisiek
fonte
0

Instalei os arquivos "CD Virtual Box Guest Additons", mas meu leitor de cartão SD não estava aparecendo na minha máquina virtual Windows XP. Consegui que o meu funcionasse ativando o dispositivo USB no Virtual Box e reiniciando a Máquina Virtual.

skibulk
fonte
0

Como o kobaltz mencionou. Para oferecer suporte às versões USB 2.0 e 3.0, você precisa instalar o Virtual Extension Pack, instalei o 5.2.22 Oracle VM VirtualBox Extension Pack e você pode baixá-lo na página de download do Virtual Box. Depois de baixar o arquivo, você pode prosseguir e instalá-lo diretamente, o mesmo será adicionado às suas extensões do Virtual Box.

insira a descrição da imagem aqui

Você também deve adicionar seu cartão SD aos filtros de dispositivo em nossa Caixa Virtual, vá para Configurações -> USB -> Clique na opção Adicionar cartão SD anexado.

insira a descrição da imagem aqui

Agora você poderá acessar seu cartão SD nos filtros.

insira a descrição da imagem aqui

Vá para Arquivos e veja as pastas do cartão SD (eu uso o Ubuntu Linux Distribution)

insira a descrição da imagem aqui

Sibeesh Venu
fonte
0

Para quem estiver usando o macos e seguindo as respostas anteriores, se você ainda não conseguir acessar o cartão SD devido a um problema de permissão,

executar o virtualbox com o sudo irá resolvê-lo.

sudo VirtualBox

Observe que o caminho para os arquivos vm é diferente, no meu caso, é:

/private/var/root/VirtualBox\ VMs/$VM_NAME/

Se isso ainda não funcionar, altere o proprietário e o acesso do disco do cartão sd, para sua conta de usuário e 666, respectivamente.

Pengyuan Zhou
fonte