Як отримати доступ до SD-карти з віртуальної машини?


64

Я хочу відформатувати SD-карту з моєї віртуальної машини Linux. У мене в ноутбуці є вбудований зчитувач SD-карт . Я спробував використовувати VirtualBox та VMware Player та встановив гостям Ubuntu 10.04. Жоден з них не показує зчитувач SD-карт як пристрій. Я можу отримати доступ до SD-карти від хоста Windows.

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

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


1
Ви встановили гостьові аддони virtualbox?
tumchaaditya

1
У мене було те саме питання. Нижче наведені рішення працювали для мене, але були негнучкими. Я закінчив інвестувати у «USB Micro SD зчитувач», який за замовчуванням з’являється у віртуальній машині. Це дозволило мені підключити та відключити підключення картки без додаткових дій. Ще один погляд на рішення
TheMeaningfulEngineer

Відповіді:


56

У новіших MacBook Pro слот для SD-картки більше не відкритий як USB-пристрій. Через це вам потрібно буде приєднати необроблений пристрій до VM, щоб отримати необмежений доступ до всієї карти. Повна документація знаходиться в розділі Розширена конфігурація зберігання документації на VirtualBox.

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

Попередження - доступ до сирого жорсткого диска призначений лише для експертних користувачів. Неправильне використання або використання застарілої конфігурації може призвести до повної втрати даних на фізичному диску . Найголовніше, не намагайтеся завантажувати розділ за допомогою поточної операційної системи хоста у гостя. Це призведе до серйозної корупції даних.

Короткий посібник - це кроки щодо приєднання пристрою до Linux VM:

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

    1. Вставте SD-карту в гніздо
    2. Відкрийте термінал і наберіть "кріплення". Ви побачите вихід, що ідентифікує встановлений об'єм з вашої 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. Відкрийте утиліту Disk Utility та "Відключити" гучність. Не «викидайте» його. Зауважте, що вам може знадобитися відключати гучність раз у раз під час наступних кроків, оскільки я виявив, що OSX автоматично повторно перезаряджає його.
  3. Тепер ми встановили VirtualBox, щоб бути в курсі необробленого пристрою з наступною командою в Терміналі.

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

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

    1. Переконайтеся, що гостьовий VM не працює.
    2. Відкрийте область налаштувань для гостя VM
    3. Натисніть на "Зберігання" на панелі інструментів
    4. Поруч із контролером натисніть на значок "Додати жорсткий диск"
    5. Виберіть "Вибрати існуючий диск"
    6. Перейдіть до /path/to/file.vmdkпункту 3, який ви використовували, і виберіть його
    7. Тепер вам слід повернутись на вкладку "Зберігання" і побачити своє file.vmdkв списку.
  5. Запустіть VM
  6. Залежно від того, у вас GUI чи ні, 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 знайдуть більш підходяще рішення.


2
У Гірському Леві дістали дискрбітраціюі монтажну перегородку від 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
1313

1
Дякую @kenji, це додаткова чудова порада для користувачів Mtn Lion (я трохи боровся з проблемою automount сам). Мої детальні інструкції на форумах VirtualBox отримали б користь від цієї поради; Я додам посилання на ваш коментар там і нижче. Знову дякую.
лікетський

1
Я дотримувався цього посібника, але у нього були проблеми з дозволом. Потім я заздалегідь створив chmod 777 на пристрої, і він працював чудово. Більше деталей тут: balage.blogs.balabit.com/2010/10/…
Саманта Катанія

2
Я отримав RESOURCE_BUSY при спробі додати зображення у вигляді жорсткого диска до віртуальної скриньки. Я помітив, що OSX переглянув розділи SD-карти. Примусьте їх відключити, ввівши в Терміналі (Про господаря) наступнеsudo diskutil unmountDisk /dev/<disk path>
Роб

1
Я можу підтвердити, що потрібно 1) відключити 2) клоун 3) створити віртуальний диск 4) знову відключити 5) додати до VM 6) відключити ПРОТИ 7) запустити VM. - @JinnKo: чи можете ви додати це до відповіді? чи я можу?
Ерік Аллік

42

Відповідь для користувачів Windows

  1. Отримайте DeviceID зчитувача SD-карт.

    Вам буде потрібна карта в накопичувачі, встановленому вікнами.

    Введіть цю команду

    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. Переконайтесь, що гостьовий VM вимкнено.
    2. Переконайтесь, що VirtualBox не працює
    3. Запустіть VirtualBox, клацнувши правою кнопкою миші та вибравши «Запустити як адміністратор»
    4. Відкрийте область налаштувань для гостя VM
    5. Натисніть на "Зберігання" на панелі інструментів
    6. Поруч із контролером натисніть на значок "Додати жорсткий диск"
    7. Виберіть "Вибрати існуючий диск"
    8. Перейдіть до пункту /path/to/file.vmdkпункту 3, який ви використовували, і виберіть його
    9. Тепер вам слід повернутись на вкладку "Зберігання" і побачити своє file.vmdkв списку.
  2. Запустіть VM
  3. Залежно від того, у вас GUI чи ні, SD-карта може або не може автоматично встановлюватися. Якщо вам потрібно встановити вручну, його просто виставляють як інший стандартний блок пристрою, тому на мого гостя це було викрито як / dev / sdb.

На випадок, якщо ви намагаєтеся отримати це cygwinза допомогою уважних символів втечі. Я не знайшов правильного cygwinрішення, але помітив, що команда, в якій cmdпрацює, не працює cygwin.
TheMeaningfulEngineer

Коли я запускаю VirtualBox як адміністратор, я не бачу своїх машин і тому не можу змінити їх налаштування. Причина, ймовірно, в тому, що я не користувач адміністратора, оскільки працюю з посиланнями у спільних папках, для цього потрібно. Після зміни типу мого облікового запису на адміністратора та додавання диска sdcard та запуску VirtualBox як адміністратора я не можу пройти повз екрана входу. Я не знайшов проблему в syslog. Тільки коли привід знов видалено, я також можу увійти під час запуску VirtualBox як адміністратора, але, звичайно, тоді я не бачу SD карти. Так що це не працює для мене. :(
Френк Брейтлінг

7

Ви, швидше за все, не вистачаєте розширень, якщо ваш зчитувач SD використовує ваш USB-контролер.

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

У розділі Файл> Налаштування дотримуйтесь малюнок. Додайте та вкажіть на завантажене розширення.

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

Перезавантажте свою віртуальну машину, і ви повинні мати доступ до USB-пристроїв.


Привіт, я спробував це рішення і встановив пакунок розширень virtualbox, але успіху все ще не було. Я роблю це в macbook, якщо це має значення. Крім того, у моєму програмному забезпеченні системи macbook, зчитувач sd-карт не вказаний під USB-пристроями, а як окрема категорія, яка називається "картридер". Крім того, я можу побачити пристрої, перелічені під USB у віртуальній скрипті.
Карайте Соні

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, виберіть Зберігання, натисніть на Контролер: Sata, натисніть на значок Додати жорсткий диск, виберіть .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, ви, можливо, побачите щось на зразок:

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 там!


Відмінне рішення. Я б програв без цього запису. Дуже дякую!
ggutenberg

1

Мені поки що не вдалося знайти спосіб зробити це безпосередньо, навіть із USB-зчитувачем карт (це поставило карту, /dev/dm-1а не очікувану /dev/mmcblk1).

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

Потім я вимкнув VM, перетворив його у файл 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 Extensions.


0

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


0

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

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

Ви також повинні додати вашу SD-карту до фільтрів пристроїв у нашій віртуальній скриньці, перейдіть у Налаштування -> USB -> Клацніть на опції Додати SD-карту, що додається.

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

Тепер ви зможете отримати вашу SD-карту у фільтрах.

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

Перейдіть до файлів і перегляньте папки папок SD-карт (я використовую дистрибутив Ubuntu Linux)

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


0

Для тих, хто використовує macos та дотримується попередніх відповідей, якщо ви все ще не можете отримати доступ до sd-картки через видачу дозволу,

запустити virtualbox з sudo це вирішить.

sudo VirtualBox

Зауважте, що шлях до файлів vm відрізняється, в моєму випадку це:

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

Якщо це все ще не працює, змініть власника та доступ диска sd-картки на свій обліковий запис користувача та 666 відповідно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.