63

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

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

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

10 ответов10

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. Теперь вы должны вернуться на вкладку Storage и увидеть ваш 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 найдут более подходящее решение.

40

Ответ для пользователей 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. Теперь вы должны вернуться на вкладку Storage и увидеть ваш file.vmdk в списке.
  2. Запустите ВМ
  3. В зависимости от того, есть ли у вас графический интерфейс или нет, SD-карта может быть установлена или не установлена автоматически. Если вам нужно смонтировать вручную, он просто выставляется как другое стандартное блочное устройство, так что на моем госте это было обозначено как /dev /sdb.
7

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

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

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

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

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

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

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) сделайте следующее (опять же, убедитесь, что вы используете правильный номер устройства / букву Вот!):

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

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

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

Вам нужно будет сделать это для ВСЕХ ваших срезов (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!

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 до этого.

0

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

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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .