Как получить доступ к SD-карте с виртуальной машины?

64

Я хочу отформатировать SD-карту из моей виртуальной машины Linux. В моем ноутбуке есть встроенный считыватель SD-карт . Я попытался использовать VirtualBox и VMware Player и установил гостевую Ubuntu 10.04. Никто из них не показывает устройство чтения карт SD как устройство. Я могу получить доступ к SD-карте с хоста Windows.

Меня не интересуют решения с использованием общих папок, так как я хочу получить доступ к SD-карте как к оборудованию (оно должно отображаться в /dev).

Я хочу настроить SD-карту для BeagleBoard , но не хочу устанавливать физическую Ubuntu на свой ПК.

Пунит Сони
источник
1
Вы установили гостевые дополнения virtualbox?
тумчаадитья
1
Я была такая же проблема. Приведенные ниже решения сработали для меня, но были негибкими. Я закончил тем, что инвестировал в «USB Micro SD reader», который по умолчанию отображается на виртуальной машине. Это позволило мне подключать и отключать карту без дополнительных действий. Еще одна перспектива решения
TheMeaningfulEngineer

Ответы:

56

На более новых MacBook Pro слот для SD-карт больше не отображается как USB-устройство. Из-за этого вам необходимо подключить необработанное устройство к виртуальной машине, чтобы получить необработанный доступ ко всей карте. Полная документация находится в разделе « Расширенная конфигурация хранилища» документации VirtualBox.

Как четко указано в документах:

Предупреждение. Доступ к жесткому диску необработан только для опытных пользователей. Неправильное использование или использование устаревшей конфигурации может привести к полной потере данных на физическом диске . Самое главное, не пытайтесь загрузить раздел с работающей в данный момент операционной системой хоста в гостевой системе. Это приведет к серьезному повреждению данных.

В качестве краткого руководства приведем следующие шаги для подключения устройства к виртуальной машине Linux:

  1. Определите устройство блочного диска в вашей хост-системе

    1. Вставьте SD-карту в слот
    2. Откройте терминал и введите «mount». Вы увидите вывод, идентифицирующий подключенный том с вашей SD-карты. В моей системе я получаю следующее

      $ 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 NAME» - это SD-карта, поэтому я принимаю это к сведению /dev/disk2s1. В данном конкретном случае эта s1часть представляет собой раздел (фрагмент) на необработанном устройстве, поэтому часть, которую мы будем использовать позже, это просто /dev/disk2часть.

  2. Откройте Дисковую утилиту и «Размонтируйте» том. Не «извлекайте» это. Обратите внимание, что вам может понадобиться отключать том время от времени на следующих шагах, так как я обнаружил, что OSX автоматически перемонтирует его случайно.
  3. Теперь мы настроили VirtualBox для отслеживания необработанного устройства с помощью следующей команды в Терминале.

    1. Обратите внимание, что его /path/to/file.vmdkможно поместить куда угодно, хотя рекомендуется хранить его в папке гостевой виртуальной машины, например~/VirtualBox VMs/guest-vm/sdcard.vmdk
    2. Обратите внимание, что -rawdiskмы используем не ссылку на раздел (слайс), а только блочное устройство в целом.

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. Затем мы присоединяем необработанный диск к гостевой виртуальной машине в пользовательском интерфейсе VirtualBox.

    1. Убедитесь, что гостевая виртуальная машина не работает.
    2. Откройте область настроек для гостевой виртуальной машины
    3. Нажмите «Хранение» на панели инструментов
    4. Рядом с контроллером нажмите на иконку «Добавить жесткий диск»
    5. Выберите «Выбрать существующий диск»
    6. Перейдите к тому, который /path/to/file.vmdkвы использовали в шаге 3, и выберите его.
    7. Теперь вы должны вернуться на вкладку «Хранилище» и увидеть свое имя file.vmdkв списке.
  5. Запустите ВМ
  6. В зависимости от того, есть ли у вас графический интерфейс или нет, SD-карта может быть установлена ​​или не установлена ​​автоматически. Если вам нужно смонтировать вручную, он просто отображается как другое стандартное блочное устройство, поэтому на моем госте это было обозначено как / dev / sdb.

Обновить

Кажется, что некоторые люди могут иметь проблемы с доступом к необработанному устройству на шаге 3.2 или 4.6. Попытки выполнить некоторые команды с помощью sudo не помогут, так как VirtualBox будет работать, когда вы вошли в систему, и все равно не сможете получить правильный доступ к необработанному устройству или сгенерированному файлу vmdk.

Следующие шаги должны помочь, хотя я не проверял их.

  1. Проверьте, имеет ли учетная запись, которую вы используете в OSX, права администратора в разделе «Системные настройки / Пользователи». Существует большая вероятность, что для работы с необработанным устройством также должна быть основная учетная запись в системе.
  2. Проверьте разрешения на сырой диск

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

    Эти разрешения должны соответствовать вашей текущей учетной записи пользователя:

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

    Права доступа к устройству также должны позволять вашей обычной учетной записи пользователя выполнять чтение (r) и запись (w) на это устройство. НЕ ИЗМЕНЯЙТЕ РАЗРЕШЕНИЯ НА УСТРОЙСТВО, ЕСЛИ ВЫ АБСОЛЮТНО НЕ ЗНАЕТЕ, ЧТО ВЫ ДЕЛАЕТЕ.


Обновление № 2

Оказывается, OSX Mountain Lion создал устройство с привилегиями «root: operator» и разрешениями 0640. К сожалению, на данный момент единственным способом получить доступ к этому устройству является «sudo chown $ USER» для текущего пользователя при каждой установке устройства, однако это не рекомендуется, если вы действительно не понимаете, что делаете. Надеемся, что либо Apple, либо VirtualBox найдут более подходящее решение.

JinnKo
источник
2
В Mountain Lion, получили неконтролируемый монтирующий раздел от sdcard, чтобы остановить это:$ 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ǝʞ
1
Спасибо @kenji, это еще один отличный совет для пользователей Mtn Lion (я сам немного боролся с проблемой автомонтирования). Мои подробные инструкции на форумах VirtualBox будут полезны из этого совета; Я добавлю ссылку на ваш комментарий там и ниже. Еще раз спасибо.
ликетический
1
Я следовал этому руководству, но у меня были проблемы с разрешениями, затем я создал на устройстве chmod 777, и он работал нормально. Более подробно здесь: balage.blogs.balabit.com/2010/10/…
Саманта Катания
2
Я получил RESOURCE_BUSY при попытке добавить образ в качестве жесткого диска в виртуальную коробку. Я заметил, что OSX перемонтировал разделы SD-карты. Заставьте их отключить, введя следующее в терминале (на хосте)sudo diskutil unmountDisk /dev/<disk path>
Rob
1
Я могу подтвердить, что нужно 1) размонтировать 2) chown 3) создать виртуальный диск 4) размонтировать снова 5) добавить в ВМ 6) размонтировать ВНОВЬ 7) запустить ВМ. - @JinnKo: ты можешь добавить это к ответу? или я могу?
Эрик Аллик
42

Ответ для пользователей Windows

  1. Получите DeviceID вашего устройства чтения карт SD.

    Вам понадобится карта в приводе, смонтированная на Windows.

    Введите эту команду

    wmic diskdrive list brief
    

    Это должно выглядеть примерно так:

    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
    

    Последнее устройство - это устройство чтения карт SD, поэтому DeviceID \\.\PHYSICALDRIVE1

  2. Создайте файл ссылки на SD-карту

    Откройте командные окна от имени администратора

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

    Это предполагает путь установки по умолчанию - измените его, если вам нужно. (Убедитесь, что кавычки находятся вокруг аргумента rawdisk.)

    Файл .vmdk представляет собой ссылку на SD-карту, вы можете поместить ее в любое место на вашей хост-системе, но эта команда просто для удобства помещает ее на рабочий стол.

  3. Выполните шаги 4-6 в ответе JinnKo, единственная незначительная настройка заключается в том, что вам нужно запустить VirtualBox в качестве администратора

  1. Затем мы присоединяем необработанный диск к гостевой виртуальной машине в пользовательском интерфейсе VirtualBox.
    1. Убедитесь, что гостевая виртуальная машина выключена.
    2. Убедитесь, что VirtualBox не работает
    3. Запустите VirtualBox, щелкнув по нему правой кнопкой мыши и выбрав «Запуск от имени администратора».
    4. Откройте область настроек для гостевой виртуальной машины
    5. Нажмите «Хранение» на панели инструментов
    6. Рядом с контроллером нажмите на иконку «Добавить жесткий диск»
    7. Выберите «Выбрать существующий диск»
    8. Перейдите к тому, который /path/to/file.vmdkвы использовали в шаге 3, и выберите его.
    9. Теперь вы должны вернуться на вкладку «Хранилище» и увидеть свое имя file.vmdkв списке.
  2. Запустите ВМ
  3. В зависимости от того, есть ли у вас графический интерфейс или нет, SD-карта может быть установлена ​​или не установлена ​​автоматически. Если вам нужно смонтировать вручную, он просто отображается как другое стандартное блочное устройство, поэтому на моем госте это было обозначено как / dev / sdb.
sandyscott
источник
В случае, если вы пытаетесь получить это с cygwinнаблюдением за побегом персонажей. Я не получил правильное cygwinрешение, но заметил, что команда, которая работает cmd, не работает в cygwin.
TheMeaningfulEngineer
Когда я запускаю VirtualBox с правами администратора, я не вижу свои машины и не могу изменить их настройки. Причина, вероятно, в том, что я не являюсь пользователем-администратором, потому что я работаю со ссылками в общих папках, что требует этого. После изменения типа моей учетной записи на администратора и добавления диска SDCard и запуска VirtualBox в качестве администратора, я не могу выйти из экрана входа в систему. Я не нашел проблему в системном журнале. Только когда диск sdcard снова удален, я также могу войти в систему при запуске VirtualBox от имени администратора, но, конечно, тогда я не вижу карту sd. Так что это не работает для меня. :(
Фрэнк
7

Скорее всего, вам не хватает расширений, если ваш SD-ридер использует USB-контроллер.

введите описание изображения здесь

Под File> Preferences, следуйте за изображением. Добавьте и укажите на загруженное расширение.

введите описание изображения здесь

Перезагрузите виртуальную машину, и у вас должен быть доступ к USB-устройствам.

kobaltz
источник
Привет, я попробовал это решение и установил пакет расширений virtualbox, но все равно безуспешно. Я делаю это в MacBook, если это имеет какое-либо значение. Кроме того, в моем профилировщике системы MacBook устройство чтения карт памяти SD не указано в списке USB-устройств, а в виде отдельной категории, называемой «устройство чтения карт памяти». Кроме того, я могу видеть устройства, которые перечислены под USB в virtualbox.
Punit Soni
4

На более новых MacBook Pro слот для SD-карты больше не отображается как устройство USB

Чтобы решить эту проблему, вы можете просто использовать внешнее устройство чтения карт памяти USB (например, SD-карта на USB-адаптер) вместо встроенного устройства чтения карт. Он будет отображать вашу SD-карту как USB-устройство, чтобы вы могли легко установить ее, как любое USB-устройство. Это дешевые устройства и было бы приемлемым решением с учетом всех других проблем.

Ахмет
источник
Это самая умная идея, спасибо! У меня даже лежал USB кард-ридер, но я не знал, что смогу его использовать.
marco.m
4

Я использую Kubuntu 15.04, VirtualBox 4.3.26

Это предполагает, что устройство SD-карты есть /dev/mmcbl0, и выходной .vdk будет sd-card.vmk:

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

Не уверен, что это лучший способ исправить разрешения, но это сработало:

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

Теперь перейдите в настройки VM, выберите Storage, нажмите Controller: Sata, нажмите на иконку Add Hard Disk, выберите ваш .vdk (в данном случае sd-card.vmdk)

Богдан
источник
3

У меня было много проблем с получением решения от JinnKo, в основном из-за моего нахождения в Mountain Lion (OS X 10.8) ... Но с его любезной помощью я решил проблемы.

Полное решение подробно описано здесь .

Однако суть моего решения - для пользователей Mountain Lion - заключается в следующем (используйте шаги JinnKo, описанные выше, но вставьте мой шаг здесь, прежде чем запускать команду 'VBoxManage internalcommands createrawvmdk [...]' (то есть между его шаги 2 и 3):

** Специально для Mtn Lion ** Убедитесь, что вы являетесь владельцем этого устройства. На 10,8 Mtn Lion вы, вероятно, обнаружите, что это не так. Проверьте это, выполнив:

ls -l /dev/disk*

С '*' вы увидите ВСЕ ваши дисковые устройства, вы также можете сделать: ls -l / dev / diskX, чтобы просто увидеть 'X', например, я сделал:

ls -l /dev/disk5

На Mtn Lion (10.8.x) вы увидите что-то вроде:

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

Где «X» - это номер вашего устройства, например «5» в / dev / disk5 ...

На Lion (10.7.x), Snow Leopard (10.6.x) или, возможно, более ранних версиях OS X, вы - если ваше имя пользователя 'brad' - скорее всего увидите что-то вроде:

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

Где «X» - это номер вашего устройства, например «5» в / dev / disk5 ... Если вы владелец, то все хорошо, ничего не поделаешь, переходите к следующему шагу, то есть шагу createrawvmdk ( в замечательных инструкциях @JinnKo выше).

Если вы не являетесь владельцем (но «root» или какой-либо другой пользователь), то либо (a) войдите в систему под этим именем администратора, либо (b) сделайте следующее (опять же, убедитесь, что вы используете правильный номер / букву устройства) Вот!):

* ВНИМАНИЕ * Ниже только для тех , кто хочет рисковать , постоянно уничтожая данные на жестком диске или флэш - накопитель. DO NOT это сделать , если вы не уверены , что вы знаете , что вы делаете:

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

* ВНИМАНИЕ * DO NOT это сделать , если вы не уверены , что вы знаете , что вы делаете. Вышеуказанное предназначено только для тех, кто хочет РИСК навсегда уничтожить данные на своем жестком диске или флэш-накопителе.

Вам нужно будет сделать это для ВСЕХ ваших срезов (s1, s2, s3, ... сколько бы их ни было). Например, мое имя пользователя - «brad», поэтому я сделал:, sudo chown brad /dev/disk5затем sudo chown brad /dev/disk5s1, для s2и s3(поскольку у меня уже было 3 существующих раздела или фрагмента).

Если вы не разбили SD-карту на разделы, вам может потребоваться сделать это sudo chown <your username> /dev/diskXтолько один раз (без каких-либо срезов / разделов)

Надеюсь, что это поможет некоторым другим бедным пользователям Mtn Lion!

likethesky
источник
Отличное решение. Я был бы потерян без этой записи. Большое спасибо!
Ггутенберг
1

До сих пор мне не удавалось найти способ сделать это напрямую, даже с помощью USB-кард-ридера (он поставил карту /dev/dm-1вместо ожидаемого /dev/mmcblk1).

Моя работа заключалась в создании виртуального диска 4 ГБ в VirtualBox. Это может затем (как /dev/sdb) принять установку BeagleBoard Ubuntu, как это задокументировано.

Затем я выключил виртуальную машину, преобразовал ее в файл RAW DD и использовал DD, чтобы поместить ее на карту: (на хосте Mac):

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

( /dev/disk2в моем случае, но тройная проверка на неправильность может привести к повреждению жесткого диска).

Команда ddзаняла около 1 часа 20 минут!

Надеюсь, это поможет. Я все еще работаю над более простым и быстрым способом - нам не нужно передавать 4 ГБ данных для 600 МБ ОС.

Богатый
источник
0

Для меня решение было включить USB-устройство с SD-картой, используя
Devices -> USB devices ->My card reader,
и через несколько секунд новые диски появляются в моей виртуальной машине.

Я установил пакет расширений VirtualBox до этого.

Zdzisiek
источник
0

Я установил файлы "Virtual Box Guest Additons CD", но устройство чтения карт SD не отображалось на моей виртуальной машине с Windows XP. Я смог начать работать, включив USB-устройство в Virtual Box, а затем перезапустив виртуальную машину.

skibulk
источник
0

Как упомянул Кобальц. Для поддержки версий USB 2.0 и 3.0 вам необходимо установить Virtual Extension Pack, я установил 5.2.22 Oracle VM VirtualBox Extension Pack, и вы можете загрузить его со страницы загрузки Virtual Box. После того, как вы загрузите файл, вы сможете напрямую его установить и установить, то же самое будет добавлено в ваши расширения Virtual Box.

введите описание изображения здесь

Вы также должны добавить свою SD-карту в фильтры устройства в нашей виртуальной коробке, перейдите в «Настройки» -> USB -> нажмите «Добавить SD-карту в приложении».

введите описание изображения здесь

Теперь вы сможете на своей SD-карте в Фильтрах.

введите описание изображения здесь

Перейдите в Файлы и увидите папки с SD-картами (я использую Ubuntu Linux Distribution)

введите описание изображения здесь

Сибееш Вену
источник
0

Для тех, кто использует макросы и читает предыдущие ответы, если вы все еще не можете получить доступ к SD-карте из-за проблем с разрешением,

запустите virtualbox с sudo, это решит проблему.

sudo VirtualBox

Обратите внимание, что путь к файлам vm отличается, в моем случае это:

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

Если это по-прежнему не работает, измените владельца и доступ к диску SD-карты на свою учетную запись и 666 соответственно.

Пэнъюань Чжоу
источник