Jak uzyskać dostęp do karty SD z maszyny wirtualnej?

64

Chcę sformatować kartę SD z mojej maszyny wirtualnej z systemem Linux. Mam wbudowany czytnik kart SD w moim laptopie. Próbowałem użyć VirtualBox i VMware Player i zainstalowałem gościa Ubuntu 10.04. Żadne z nich nie pokazuje czytnika kart SD jako urządzenia. Mogę uzyskać dostęp do karty SD z hosta Windows.

Nie interesują mnie rozwiązania wykorzystujące foldery współdzielone, ponieważ chcę uzyskać dostęp do karty SD jako sprzętu (powinna się pojawić /dev).

Zasadniczo chcę skonfigurować kartę SD dla BeagleBoard , ale nie chcę instalować fizycznego Ubuntu na moim komputerze.

Punit Soni
źródło
1
Czy zainstalowałeś dodatki dla gości virtualbox?
tumchaaditya
1
Miałem ten sam problem. Poniższe rozwiązania działały dla mnie, ale były mało elastyczne. W końcu zainwestowałem w „czytnik USB Micro SD”, który domyślnie pojawia się na maszynie wirtualnej. To pozwoliło mi podłączyć i odłączyć kartę bez dodatkowych czynności. Kolejna perspektywa rozwiązania
TheMeaningfulEngineer

Odpowiedzi:

56

W nowszych komputerach MacBook Pro gniazdo kart SD nie jest już widoczne jako urządzenie USB. Z tego powodu musisz podłączyć surowe urządzenie do maszyny wirtualnej, aby uzyskać surowy dostęp do całej karty. Pełna dokumentacja znajduje się w sekcji Advanced Storage Configuration dokumentacji VirtualBox.

Jak wyraźnie stwierdzono w dokumentach:

Ostrzeżenie - dostęp do surowego dysku twardego przeznaczony jest wyłącznie dla zaawansowanych użytkowników. Nieprawidłowe użycie lub użycie przestarzałej konfiguracji może doprowadzić do całkowitej utraty danych na dysku fizycznym . Co najważniejsze, nie próbuj uruchamiać partycji z aktualnie działającym systemem operacyjnym hosta w gościu. Doprowadzi to do poważnego uszkodzenia danych.

Krótkim przewodnikiem są następujące kroki, aby podłączyć urządzenie do maszyny Wirtualnej z systemem Linux:

  1. Zidentyfikuj surowe urządzenie blokujące dysk w systemie hosta

    1. Włóż kartę SD do gniazda
    2. Otwórz terminal i wpisz „mount”. Zobaczysz dane wyjściowe identyfikujące zamontowany wolumin z karty SD. W moim systemie otrzymuję następujące informacje

      $ 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. W moim przypadku wolumin „NO NAME” to karta SD, więc zwracam uwagę na tę /dev/disk2s1część. W tym konkretnym przypadku s1część reprezentuje partycję (plasterek) na surowym urządzeniu, więc część, której użyjemy później, jest tylko /dev/disk2częścią.

  2. Otwórz Narzędzie dyskowe i „Odmontuj” wolumin. Nie „wysuwaj” go. Pamiętaj, że może być konieczne odłączanie woluminu raz na jakiś czas podczas następnych kroków, ponieważ znalazłem, że OSX automatycznie zamontuje go losowo.
  3. Teraz skonfigurowaliśmy VirtualBox, aby był świadomy surowego urządzenia za pomocą następującego polecenia w terminalu.

    1. Należy pamiętać, że /path/to/file.vmdkmożna go umieścić w dowolnym miejscu, chociaż dobrze jest przechowywać to w folderze maszyny wirtualnej gościa, takim jak~/VirtualBox VMs/guest-vm/sdcard.vmdk
    2. Zauważ, -rawdiskże używamy nie odnosi się do partycji (plaster), ale tylko urządzenie blokowe jako całość.

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. Następnie dołączamy surowy dysk do wirtualnej maszyny wirtualnej w interfejsie użytkownika VirtualBox

    1. Upewnij się, że maszyna wirtualna gościa nie działa.
    2. Otwórz obszar ustawień dla maszyny wirtualnej gościa
    3. Kliknij „Pamięć” na pasku narzędzi
    4. Kliknij kontroler obok kontrolera, aby dodać dysk twardy
    5. Wybierz „Wybierz istniejący dysk”
    6. Przejdź do /path/to/file.vmdkużytej w kroku 3 i wybierz ją
    7. Powinieneś teraz powrócić do karty Pamięć i zobaczyć ją file.vmdkna liście.
  5. Uruchom maszynę wirtualną
  6. W zależności od tego, czy masz GUI, czy nie, karta SD może się automatycznie zamontować. Jeśli potrzebujesz zamontować to ręcznie, jest po prostu widoczne jako kolejne standardowe urządzenie blokowe, więc na moim gościu zostało to ujawnione jako / dev / sdb.

Aktualizacja

Wygląda na to, że niektóre osoby mogą mieć problemy z dostępem do surowego urządzenia w kroku 3.2 lub 4.6. Próby uruchomienia niektórych poleceń za pomocą sudo nie pomogą, ponieważ VirtualBox będzie działał jako zalogowany użytkownik i nadal nie będzie mógł uzyskać dostępu do surowego urządzenia poprawnego lub wygenerowanego pliku vmdk.

Poniższe kroki powinny pomóc, chociaż ich nie przetestowałem.

  1. Sprawdź, czy konto, którego używasz w systemie OSX, ma uprawnienia administratora w sekcji Preferencje systemowe / Użytkownicy. Istnieje spora szansa, że ​​powinien to być także główny rachunek w systemie, aby uzyskać dostęp do surowego urządzenia do pracy.
  2. Sprawdź surowe uprawnienia do dysku

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

    Te uprawnienia muszą być zgodne z bieżącym zalogowanym kontem użytkownika:

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

    Uprawnienia na urządzeniu powinny również umożliwiać zwykłemu koncie użytkownika zarówno odczytanie (r), jak i zapisanie (w) na tym urządzeniu. NIE ZMIENIAJ ZEZWOLEŃ NA URZĄDZENIU, JEŚLI NIE ZNAJDZIESZ CAŁKOWICIE, CO ROBISZ.


Aktualizacja nr 2

Okazuje się, że OSX Mountain Lion utworzył urządzenie z uprawnieniami „root: operator” i uprawnieniami 0640. Niestety na razie jedynym sposobem na uzyskanie dostępu do tego urządzenia jest „sudo chown $ USER” dla bieżącego użytkownika za każdym razem, gdy wkładasz urządzenie, jednak nie jest to zalecane, chyba że naprawdę rozumiesz, co robisz. Mamy nadzieję, że Apple lub VirtualBox znajdzie bardziej odpowiednie rozwiązanie.

JinnKo
źródło
2
W Mountain Lion dostałem diskarbitrationd partycję montażową z sdcard, aby to zatrzymać:$ 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
2013
1
Dzięki @kenji, to dodatkowa świetna wskazówka dla użytkowników Mtn Lion (sam trochę zmagałem się z problemem automount). Z moich wskazówek skorzystałyby moje szczegółowe instrukcje na forach VirtualBox ; Dodam link do twojego komentarza tam i poniżej. Dzięki jeszcze raz.
likethesky
1
Postępowałem zgodnie z tym przewodnikiem, ale miałem problemy z uprawnieniami, a następnie sformatowałem chmod 777 na urządzeniu i działało dobrze. Więcej informacji tutaj: balage.blogs.balabit.com/2010/10/…
Samantha Catania
2
Otrzymałem RESOURCE_BUSY podczas próby dodania obrazu jako dysku twardego do wirtualnego urządzenia. Zauważyłem, że OSX ponownie zamontował partycje kart SD. Zmusić ich do odmontowania, wpisując następujące polecenie w Terminalu (na hoście)sudo diskutil unmountDisk /dev/<disk path>
Rob
1
Mogę potwierdzić, że trzeba 1) odmontować 2) chown 3) utworzyć dysk wirtualny 4) odmontować ponownie 5) dodać do VM 6) odmontować PONOWNIE 7) uruchomić VM. - @JinnKo: czy możesz dodać to do odpowiedzi? czy mogę?
Erik Allik,
42

Odpowiedź dla użytkowników systemu Windows

  1. Uzyskaj identyfikator urządzenia swojego czytnika kart SD.

    Będziesz potrzebował karty w napędzie zamontowanej przez system Windows.

    Wpisz to polecenie

    wmic diskdrive list brief
    

    Powinno to wyglądać mniej więcej tak:

    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
    

    Ostatnim urządzeniem jest czytnik kart SD, więc DeviceID to \\.\PHYSICALDRIVE1

  2. Utwórz plik łącza do karty SD

    Otwórz okna poleceń jako Administrator

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

    Zakłada to domyślną ścieżkę instalacji - w razie potrzeby zmień ją. (Upewnij się, że cudzysłowy znajdują się wokół argumentu rawdisk).

    Plik .vmdk jest linkiem do karty SD, można go umieścić w dowolnym miejscu w systemie hosta, ale to polecenie po prostu umieszcza go na pulpicie dla wygody.

  3. Postępuj zgodnie z krokami 4–6 w odpowiedzi JinnKo, jedynym drobnym ulepszeniem jest to, że musisz uruchomić VirtualBox jako Administrator

  1. Następnie dołączamy surowy dysk do wirtualnej maszyny wirtualnej w interfejsie użytkownika VirtualBox
    1. Upewnij się, że maszyna wirtualna gościa jest wyłączona.
    2. Upewnij się, że VirtualBox nie działa
    3. Uruchom VirtualBox, klikając go prawym przyciskiem myszy i wybierając „Uruchom jako administrator”
    4. Otwórz obszar ustawień dla maszyny wirtualnej gościa
    5. Kliknij „Pamięć” na pasku narzędzi
    6. Kliknij kontroler obok kontrolera, aby dodać dysk twardy
    7. Wybierz „Wybierz istniejący dysk”
    8. Przejdź do /path/to/file.vmdkużytej w kroku 3 i wybierz ją
    9. Powinieneś teraz powrócić do karty Pamięć i zobaczyć ją file.vmdkna liście.
  2. Uruchom maszynę wirtualną
  3. W zależności od tego, czy masz GUI, czy nie, karta SD może się automatycznie zamontować. Jeśli potrzebujesz zamontować to ręcznie, jest po prostu widoczne jako kolejne standardowe urządzenie blokowe, więc na moim gościu zostało to ujawnione jako / dev / sdb.
Sandyscott
źródło
Na wypadek, gdybyś próbował to zrobić, cygwinuważaj na znaki ucieczki. Nie znalazłem poprawnego cygwinrozwiązania, ale zauważyłem, że polecenie, które działa cmd, nie działa cygwin.
TheMeaningfulEngineer
Kiedy uruchamiam VirtualBox jako administrator, nie widzę moich komputerów, więc nie mogę zmienić ich ustawień. Powodem jest prawdopodobnie to, że nie jestem użytkownikiem administracyjnym, ponieważ pracuję z linkami w folderach udostępnionych, które tego wymagają. Po zmianie typu konta na administratora i dodaniu napędu sdcard i uruchomieniu VirtualBox jako administrator, nie mogę przejść przez ekran logowania. Nie znalazłem problemu w syslog. Dopiero po ponownym usunięciu napędu sdcard mogę się zalogować, gdy uruchomię VirtualBox jako administrator, ale oczywiście nie widzę karty SD. Więc to nie działa dla mnie. :(
Frank Breitling,
7

Najprawdopodobniej brakuje Ci rozszerzeń, jeśli czytnik SD używa kontrolera USB.

wprowadź opis zdjęcia tutaj

W obszarze Plik> Preferencje postępuj zgodnie z rysunkiem. Dodaj i wskaż pobrane rozszerzenie.

wprowadź opis zdjęcia tutaj

Uruchom ponownie maszynę wirtualną i powinieneś mieć dostęp do urządzeń USB.

Kobaltz
źródło
Cześć, wypróbowałem to rozwiązanie i zainstalowałem pakiet rozszerzeń virtualbox, ale wciąż nie powiodło się. Robię to w Macbooku, jeśli to robi jakąkolwiek różnicę. Ponadto w moim systemie profilującym system Macbook czytnik kart SD nie jest wymieniony na liście urządzeń USB, ale jako osobna kategoria zwana „czytnikiem kart”. Ponadto widzę urządzenia, które są wymienione pod USB w Virtualbox.
Punit Soni
4

W nowszych komputerach MacBook Pro gniazdo kart SD nie jest już widoczne jako urządzenie USB

Aby rozwiązać ten problem, możesz po prostu użyć zewnętrznego czytnika kart pamięci USB (tj. Karty SD na USB) zamiast wbudowanego czytnika kart. Odsłoni twoją kartę SD jako urządzenie USB, dzięki czemu możesz ją łatwo zamontować, tak jak każde urządzenie USB. Są to tanie urządzenia i byłoby to akceptowalne rozwiązanie, biorąc pod uwagę wszystkie problemy z drugiej strony.

Ahmet
źródło
To najmądrzejszy pomysł w historii, dzięki! Miałem nawet czytnik kart USB, ale nie zdawałem sobie sprawy, że mogę go użyć.
marco.m
4

Używam Kubuntu 15.04, VirtualBox 4.3.26

Zakłada się, że urządzenie karty SD jest /dev/mmcbl0, a wyjście .vdk będzie sd-card.vmk:

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

Nie jestem pewien, czy jest to najlepszy sposób na naprawienie uprawnień, ale zadziałało:

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

Teraz przejdź do Ustawień VM, wybierz Pamięć, kliknij Kontroler: Sata, kliknij ikonę Dodaj dysk twardy, wybierz .vdk (w tym przypadku sd-card.vmdk)

Bogdan
źródło
3

Miałem wiele problemów z uruchomieniem rozwiązania przez JinnKo, głównie z powodu mojego pobytu w Mountain Lion (OS X 10.8) ... Ale dzięki jego życzliwej pomocy rozwiązałem problemy.

Pełne rozwiązanie znajduje się tutaj .

Jednak esencja mojego rozwiązania - dla użytkowników Mountain Lion - jest następująca (użyj kroków JinnKo powyżej, ale wstaw mój krok tutaj przed uruchomieniem polecenia „VBoxManage internalcommands createrawvmdk [...]” (to znaczy pomiędzy jego kroki 2 i 3):

** Szczególnie dla Mtn Lion ** Upewnij się, że jesteś właścicielem tego urządzenia. Na 10,8 Mtn Lion prawdopodobnie przekonasz się, że nie jesteś. Sprawdź to, wykonując:

ls -l /dev/disk*

Za pomocą „*” zobaczysz WSZYSTKIE urządzenia dyskowe, możesz także: ls -l / dev / diskX, aby zobaczyć „X”, na przykład:

ls -l /dev/disk5

Na Mtn Lion (10.8.x) zobaczysz coś takiego:

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

Gdzie „X” to numer twojego urządzenia, na przykład „5” w / dev / disk5 ...

W systemie Lion (10.7.x), Snow Leopard (10.6.x) lub być może we wcześniejszych wersjach systemu OS X, jeśli Twoja nazwa użytkownika to „brad”, prawdopodobnie zobaczysz coś takiego:

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

Gdzie „X” to numer twojego urządzenia, jak „5” w / dev / disk5 ... Jeśli jesteś właścicielem, to wszystko dobrze, nie ma tu nic do roboty, przejdź do następnego kroku, to znaczy kroku createrawvmdk ( we wspaniałych instrukcjach @JinnKo powyżej).

Jeśli nie jesteś właścicielem (ale „rootem” lub innym użytkownikiem), to (a) zaloguj się jako administrator lub (b) wykonaj następujące czynności (ponownie, upewnij się, że używasz prawidłowego numeru / litery urządzenia tutaj!):

* PRZESTROGA * Poniższe informacje dotyczą tylko osób, które chcą ryzykować trwałe zniszczenie danych na dysku twardym lub dysku flash. NIE NIE to zrobić, jeśli nie jesteś pewien, że wiesz, co robisz:

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

* UWAGA * NIE NIE to zrobić, jeśli nie jesteś pewien, że wiesz co robisz. Powyższe dotyczy tylko tych, którzy chcą RYZYKO trwale niszczyć dane na dysku twardym lub dysku flash.

Musisz to zrobić dla WSZYSTKICH swoich plasterków (s1, s2, s3, ... jakkolwiek jest ich wiele). Na przykład moja nazwa użytkownika to „brad”, więc zrobiłem: sudo chown brad /dev/disk5wtedy sudo chown brad /dev/disk5s1, potem dla s2i s3(ponieważ miałem już 3 istniejące partycje lub plasterki).

Jeśli karta SD nie została podzielona na partycje, może być konieczne wykonanie tylko sudo chown <your username> /dev/diskXraz (bez robienia żadnych plasterków / partycji)

Mam nadzieję, że pomoże to innym biednym użytkownikom Mtn Lion!

likethesky
źródło
Doskonałe rozwiązanie Byłbym zagubiony bez tego zapisu. Dziękuję Ci bardzo!
ggutenberg
1

Jak dotąd nie udało mi się znaleźć sposobu, aby to zrobić bezpośrednio, nawet przy użyciu czytnika kart USB ( /dev/dm-1zamiast tego zakładałem kartę /dev/mmcblk1).

Moim zadaniem było stworzenie wirtualnego dysku o pojemności 4 GB w VirtualBox. To może następnie (as /dev/sdb) zainstalować BeagleBoard Ubuntu zgodnie z dokumentacją.

Następnie zamknąłem maszynę wirtualną, przekonwertowałem ją na plik RAW DD i użyłem DD, aby umieścić ją na karcie: (na komputerze Mac):

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

( /dev/disk2w moim przypadku, ale trzykrotne sprawdzenie, czy pomyłka może spowodować uszkodzenie dysku twardego).

ddKomenda trwało około 1 h 20 min!

Mam nadzieję, że to pomoże. Nadal pracuję nad łatwiejszym i szybszym sposobem - nie powinniśmy przesyłać 4 GB danych na 600 MB systemu operacyjnego.

Bogaty
źródło
0

Dla mnie rozwiązaniem było włączenie urządzenia USB z kartą SD, za pomocą
Devices -> USB devices ->My card reader,
a po kilku sekundach na mojej maszynie wirtualnej pojawiają się nowe dyski.

Zainstalowałem wcześniej pakiet rozszerzeń VirtualBox.

Zdzisiek
źródło
0

Zainstalowałem pliki „Virtual Box Guest Additons CD”, ale mój czytnik kart SD nie wyświetlał się na mojej maszynie wirtualnej z systemem Windows XP. Udało mi się uruchomić moje, włączając urządzenie USB w Virtual Box, a następnie ponownie uruchamiając maszynę wirtualną.

skibulk
źródło
0

Jak wspomniał Kobaltz. Aby obsługiwać wersje USB 2.0 i 3.0, musisz zainstalować pakiet rozszerzeń wirtualnych, zainstalowałem pakiet rozszerzeń Virtual VM VMB 5.2.22 i możesz go pobrać ze strony pobierania Virtual Box. Po pobraniu pliku możesz od razu przystąpić do instalacji i go zainstalować, to samo zostanie dodane do rozszerzeń Virtual Box.

wprowadź opis zdjęcia tutaj

Powinieneś również dodać kartę SD do filtrów urządzeń w naszym Virtual Box, przejdź do Ustawienia -> USB -> Kliknij opcję Dodaj dołączoną kartę SD.

wprowadź opis zdjęcia tutaj

Teraz będziesz mógł do swojej karty SD w filtrach.

wprowadź opis zdjęcia tutaj

Przejdź do plików i zobacz foldery na karcie SD (używam dystrybucji Ubuntu Linux)

wprowadź opis zdjęcia tutaj

Sibeesh Venu
źródło
0

Dla każdego, kto używa maków i postępuje zgodnie z poprzednimi odpowiedziami, jeśli nadal nie możesz uzyskać dostępu do karty SD z powodu problemów z uprawnieniami,

uruchom virtualbox z sudo to rozwiąże.

sudo VirtualBox

Zauważ, że ścieżka do plików vm jest inna, w moim przypadku jest to:

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

Jeśli to nadal nie działa, zmień właściciela i dostęp do dysku karty SD odpowiednio na konto użytkownika i 666.

Pengyuan Zhou
źródło