Bagaimana cara mengakses kartu SD dari mesin virtual?

64

Saya ingin memformat kartu SD dari mesin virtual Linux saya. Saya memiliki pembaca kartu SD bawaan di laptop saya. Saya mencoba menggunakan VirtualBox dan VMware Player dan menginstal Ubuntu 10.04 guest. Tidak satu pun dari mereka yang menunjukkan pembaca kartu SD sebagai perangkat. Saya dapat mengakses kartu SD dari host Windows.

Saya tidak tertarik dengan solusi menggunakan folder bersama karena saya ingin mengakses kartu SD sebagai perangkat keras (seharusnya muncul di /dev).

Saya pada dasarnya ingin mengatur kartu SD untuk BeagleBoard , tetapi saya tidak ingin menginstal Ubuntu fisik pada PC saya.

Punit Soni
sumber
1
Apakah Anda menginstal add-on virtualbox guest?
tumchaaditya
1
Saya memiliki masalah yang sama. Solusi di bawah ini memang berhasil bagi saya tetapi tidak fleksibel. Saya akhirnya berinvestasi dalam "USB Micro SD reader" yang muncul secara default di mesin virtual. Ini memungkinkan saya untuk memasang dan mencabut kartu tanpa tindakan tambahan. Perspektif lain tentang solusi
TheMeaningfulEngineer

Jawaban:

56

Pada MacBook Pro yang lebih baru, slot kartu SD tidak lagi terekspos sebagai perangkat USB. Karena ini, Anda harus melampirkan perangkat mentah ke VM untuk mendapatkan akses mentah ke seluruh kartu. Dokumentasi lengkap ada di bagian Konfigurasi Penyimpanan Tingkat Lanjut dari dokumentasi VirtualBox.

Sebagaimana dinyatakan dengan jelas dalam dokumen:

Peringatan - Akses hard disk mentah hanya untuk pengguna ahli. Penggunaan yang salah atau penggunaan konfigurasi yang sudah usang dapat menyebabkan hilangnya total data pada disk fisik . Yang paling penting, jangan mencoba untuk mem-boot partisi dengan sistem operasi host yang sedang berjalan di tamu. Ini akan menyebabkan kerusakan data yang parah.

Sebagai panduan singkat, ini adalah langkah-langkah untuk memasang perangkat ke VM linux:

  1. Identifikasi perangkat blok disk mentah pada sistem host Anda

    1. Masukkan kartu SD ke dalam slot
    2. Buka Terminal dan ketik "mount". Anda akan melihat keluaran mengidentifikasi volume yang terpasang dari kartu SD Anda. Di sistem saya, saya mendapatkan yang berikut ini

      $ 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. Dalam kasus saya, volume "NO NAME" adalah kartu SD, jadi saya perhatikan /dev/disk2s1bagian itu. Dalam kasus khusus ini, s1bagian tersebut merepresentasikan partisi (irisan) pada perangkat mentah, sehingga bagian yang akan kita gunakan nanti hanyalah /dev/disk2bagian tersebut.

  2. Buka Disk Utility dan "Lepas" volumenya. Jangan "Keluarkan" itu. Perhatikan bahwa Anda mungkin perlu meng-unmount volume sesekali selama langkah-langkah selanjutnya karena saya menemukan OSX akan secara otomatis mengount ulangnya secara acak.
  3. Sekarang kita mengatur VirtualBox untuk mengetahui perangkat mentah dengan perintah berikut di Terminal.

    1. Perhatikan bahwa /path/to/file.vmdkdapat diletakkan di mana saja, meskipun ide yang baik untuk menyimpan ini di folder VM tamu seperti~/VirtualBox VMs/guest-vm/sdcard.vmdk
    2. Perhatikan bahwa -rawdiskkami menggunakan tidak merujuk partisi (slice) tetapi hanya perangkat blok secara keseluruhan.

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. Selanjutnya kita lampirkan disk baku ke VM tamu dalam UI VirtualBox

    1. Pastikan VM tamu tidak berjalan.
    2. Buka area pengaturan untuk VM tamu
    3. Klik pada "Penyimpanan" di bilah alat
    4. Di sebelah controller klik pada ikon untuk "Add Hard Disk"
    5. Pilih "Pilih disk yang ada"
    6. Arahkan ke yang /path/to/file.vmdkAnda gunakan di langkah 3 dan pilih
    7. Anda sekarang harus dikembalikan ke tab Penyimpanan dan melihat Anda file.vmdkdalam daftar.
  5. Mulai VM
  6. Tergantung pada apakah Anda memiliki GUI atau tidak, kartu SD mungkin atau mungkin tidak dipasang secara otomatis. Jika Anda perlu me-mount secara manual itu hanya terkena sebagai perangkat blok standar lain, jadi pada tamu saya ini terkena sebagai / dev / sdb.

Memperbarui

Tampaknya beberapa orang mungkin mengalami masalah dalam mengakses perangkat mentah pada langkah 3.2 atau 4.6. Upaya untuk menjalankan beberapa perintah dengan sudo tidak akan membantu karena VirtualBox akan berjalan sebagai pengguna yang masuk dan masih tidak dapat mengakses perangkat mentah dengan benar atau file vmdk yang dihasilkan.

Langkah-langkah berikut akan membantu, meskipun saya belum mengujinya.

  1. Periksa akun yang Anda gunakan di OSX memiliki hak Admin di bagian System Preferences / Users. Ada peluang bagus bahwa itu juga harus menjadi akun utama pada sistem untuk akses perangkat mentah ke kantor.
  2. Periksa izin disk mentah

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

    Izin ini harus sesuai dengan akun pengguna yang Anda masuk saat ini:

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

    Izin pada perangkat juga harus memungkinkan akun pengguna yang biasa Anda baca (r) dan tulis (w) ke perangkat ini. JANGAN MENGUBAH IZIN PADA PERANGKAT KECUALI JIKA ANDA TIDAK TAHU APA YANG ANDA LAKUKAN.


Perbarui # 2

Ternyata OSX Mountain Lion menciptakan perangkat dengan hak istimewa "root: operator" dan izin 0640. Sayangnya untuk saat ini satu-satunya cara untuk mendapatkan akses ke perangkat ini adalah dengan "sudo chown $ USER" ke pengguna Anda saat ini setiap kali Anda memasukkan perangkat, namun ini tidak disarankan kecuali Anda benar-benar mengerti apa yang Anda lakukan. Semoga Apple atau VirtualBox akan menemukan solusi yang lebih cocok.

JinnKo
sumber
2
Di Mountain Lion, dapatkan partisi pemasangan diskarbitrationd dari sdcard, untuk menghentikan ini:$ 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
21ɾu
1
Terima kasih @kenji, itu tip bagus tambahan untuk pengguna Mtn Lion (saya berjuang sedikit dengan masalah automount sendiri). Instruksi terperinci saya di forum VirtualBox akan mendapat manfaat dari tip ini; Saya akan menambahkan tautan ke komentar Anda di sana dan di bawah. Terima kasih lagi.
likethesky
1
Saya mengikuti panduan ini tetapi memiliki masalah izin, saya kemudian membentuk chmod 777 pada perangkat dan berfungsi dengan baik. Lebih detail di sini: balage.blogs.balabit.com/2010/10/...
Samantha Catania
2
Saya mendapat RESOURCE_BUSY ketika mencoba menambahkan gambar sebagai Hard Disk ke Virtual Box. Saya perhatikan bahwa OSX telah me-remount partisi kartu SD. Paksa mereka unmount dengan mengetik berikut ini di Terminal (Di host)sudo diskutil unmountDisk /dev/<disk path>
Rob
1
Saya dapat mengkonfirmasi satu kebutuhan untuk 1) unmount 2) chown 3) buat virtual disk 4) unmount lagi 5) tambahkan ke VM 6) unmount LAGI 7) mulai VM. - @JinnKo: dapatkah Anda menambahkan itu ke jawabannya? atau bisakah aku?
Erik Allik
42

Jawab untuk pengguna Windows

  1. Dapatkan DeviceID dari pembaca kartu SD Anda.

    Anda akan memerlukan kartu di drive, dipasang oleh windows.

    Masukkan perintah ini

    wmic diskdrive list brief
    

    Seharusnya terlihat seperti ini:

    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
    

    Perangkat terakhir adalah pembaca kartu SD, demikian juga DeviceID \\.\PHYSICALDRIVE1

  2. Buat file tautan ke kartu SD

    Buka jendela perintah sebagai Administrator

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

    Ini mengasumsikan jalur instalasi default - ubahlah jika perlu. (Pastikan kutipan ada di sekitar argumen rawdisk.)

    File .vmdk adalah tautan ke kartu SD, Anda dapat meletakkannya di mana saja di sistem host Anda, tetapi perintah ini hanya meletakkannya di desktop Anda untuk kenyamanan.

  3. Ikuti langkah 4-6 dalam jawaban JinnKo, satu-satunya perubahan kecil adalah Anda harus memulai VirtualBox sebagai Administrator

  1. Selanjutnya kita lampirkan disk baku ke VM tamu dalam UI VirtualBox
    1. Pastikan VM tamu dimatikan.
    2. Pastikan VirtualBox tidak berjalan
    3. Mulai VirtualBox dengan mengklik kanan dan pilih "Run as administrator"
    4. Buka area pengaturan untuk VM tamu
    5. Klik pada "Penyimpanan" di bilah alat
    6. Di sebelah controller klik pada ikon untuk "Add Hard Disk"
    7. Pilih "Pilih disk yang ada"
    8. Arahkan ke yang /path/to/file.vmdkAnda gunakan di langkah 3 dan pilih
    9. Anda sekarang harus dikembalikan ke tab Penyimpanan dan melihat Anda file.vmdkdalam daftar.
  2. Mulai VM
  3. Tergantung pada apakah Anda memiliki GUI atau tidak, kartu SD mungkin atau mungkin tidak dipasang secara otomatis. Jika Anda perlu me-mount secara manual itu hanya terkena sebagai perangkat blok standar lain, jadi pada tamu saya ini terkena sebagai / dev / sdb.
sandyscott
sumber
Jika Anda mencoba mendapatkan ini dengan cygwinmenonton untuk karakter melarikan diri. Saya tidak mendapatkan cygwinsolusi yang benar tetapi memperhatikan bahwa perintah yang berfungsi cmdtidak berfungsi cygwin.
TheMeaningfulEngineer
Ketika saya memulai VirtualBox sebagai administrator saya tidak melihat mesin saya dan karenanya tidak dapat mengubah pengaturannya. Alasannya mungkin karena saya bukan pengguna admin karena saya bekerja dengan tautan di folder bersama yang memerlukan ini. Setelah mengubah jenis akun saya ke administrator dan menambahkan drive sdcard dan menjalankan VirtualBox sebagai admin, saya tidak bisa melewati layar login. Saya tidak menemukan masalah di syslog. Hanya ketika drive sdcard dihapus lagi saya juga bisa masuk ketika menjalankan VirtualBox sebagai admin, tetapi tentu saja saya tidak melihat kartu sd. Jadi itu tidak berhasil untuk saya. :(
Frank Breitling
7

Kemungkinan besar Anda kehilangan ekstensi jika pembaca SD Anda menggunakan pengontrol USB Anda.

masukkan deskripsi gambar di sini

Di bawah File> Preferences, ikuti gambarnya. Tambahkan dan arahkan ke ekstensi yang diunduh.

masukkan deskripsi gambar di sini

Mulai ulang Mesin Virtual Anda dan Anda harus memiliki akses ke perangkat USB.

kobaltz
sumber
Hai, saya mencoba solusi ini dan menginstal paket ekstensi virtualbox tetapi masih belum berhasil. Saya melakukan ini di macbook jika itu membuat perbedaan. Juga, di profiler sistem macbook saya, pembaca kartu sd tidak terdaftar di bawah perangkat USB tetapi sebagai kategori terpisah yang disebut "pembaca kartu". Juga, saya dapat melihat perangkat yang terdaftar di bawah USB di virtualbox.
Punit Soni
4

Pada MacBook Pro yang lebih baru, slot kartu SD tidak lagi terekspos sebagai perangkat USB

Untuk mengatasi masalah ini, Anda cukup menggunakan Pembaca Kartu Memori Usb eksternal (yaitu kartu sd ke adaptor usb) alih-alih pembaca kartu bawaan. Ini akan mengekspos kartu sd Anda sebagai perangkat USB sehingga Anda dapat memasang dengan mudah seperti perangkat usb lainnya. Mereka perangkat murah dan akan menjadi solusi yang dapat diterima mengingat semua kerumitan dengan cara lain.

Ahmet
sumber
Ini adalah ide paling cerdas yang pernah ada, terima kasih! Saya bahkan punya pembaca kartu USB tergeletak di sekitar tetapi tidak menyadari saya bisa menggunakannya.
marco.m
4

Saya menggunakan Kubuntu 15.04, VirtualBox 4.3.26

Ini mengasumsikan bahwa perangkat kartu sd adalah /dev/mmcbl0, dan output .vdk akan menjadi sd-card.vmk:

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

Tidak yakin ini adalah cara terbaik untuk memperbaiki izin, tetapi berhasil:

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

Sekarang pergi ke Pengaturan VM, pilih Storage, klik Controller: Sata, klik pada ikon untuk Tambah Hard Disk, pilih .vdk Anda (sd-card.vmdk dalam hal ini)

Bogdan
sumber
3

Saya memiliki banyak masalah dalam mendapatkan solusi oleh JinnKo untuk bekerja, sebagian besar karena keberadaan saya di Mountain Lion (OS X 10.8) ... Tetapi dengan bantuannya, saya telah memecahkan masalah.

Solusi lengkapnya dirinci di sini .

Namun, inti dari solusi saya - untuk pengguna Mountain Lion - adalah sebagai berikut (gunakan langkah-langkah JinnKo di atas, tetapi masukkan langkah saya di sini sebelum menjalankan perintah 'Perintah internal VBoxManage createrawvmdk [...]' (yaitu, di antaranya langkah 2 & 3):

** Khusus untuk Mtn Lion ** Pastikan Anda adalah pemilik perangkat ini. Pada 10,8 Mtn Lion, Anda mungkin akan menemukan bahwa Anda tidak. Periksa dengan melakukan:

ls -l /dev/disk*

Dengan '*' Anda akan melihat SEMUA perangkat disk Anda, Anda juga dapat melakukan: ls -l / dev / diskX untuk hanya melihat 'X', misalnya, saya lakukan:

ls -l /dev/disk5

Pada Mtn Lion (10.8.x) Anda akan melihat sesuatu seperti:

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

Di mana 'X' adalah nomor perangkat Anda, seperti '5' di / dev / disk5 ...

Pada Lion (10.7.x), Snow Leopard (10.6.x), atau mungkin versi OS X sebelumnya, Anda akan - jika nama pengguna Anda 'brad' - kemungkinan akan melihat sesuatu seperti:

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

Di mana 'X' adalah nomor perangkat Anda, seperti '5' di / dev / disk5 ... Jika Anda adalah pemiliknya, maka semuanya baik-baik saja, tidak ada hubungannya di sini, lanjutkan ke langkah berikutnya, yaitu, langkah createrawvmdk ( dalam instruksi besar @JinnKo di atas).

Jika Anda bukan pemilik (tetapi 'root' atau beberapa pengguna lain), maka (a) login sebagai pengguna admin atau (b) lakukan hal berikut (sekali lagi, pastikan Anda menggunakan nomor / huruf perangkat yang benar sini!):

* PERHATIAN * Di bawah ini hanya untuk mereka yang ingin mengambil risiko menghancurkan data secara permanen pada hard drive atau drive penyimpanan flash. JANGAN TIDAK LAKUKAN INI jika Anda tidak yakin Anda tahu apa yang Anda lakukan:

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

* PERHATIAN * JANGAN TIDAK LAKUKAN INI jika Anda tidak yakin Anda tahu apa yang Anda lakukan. Di atas hanya untuk mereka yang ingin RISIKO secara permanen menghancurkan data pada hard drive atau drive penyimpanan flash.

Anda harus melakukannya untuk SEMUA irisan Anda (s1, s2, s3, ... namun ada banyak). Misalnya, nama pengguna saya adalah 'brad', jadi saya lakukan:, sudo chown brad /dev/disk5lalu sudo chown brad /dev/disk5s1, lalu untuk s2, dan s3(karena saya sudah memiliki 3 partisi atau irisan).

Jika Anda belum mempartisi kartu SD, maka Anda hanya perlu melakukan satu sudo chown <your username> /dev/diskXkali (tanpa melakukan irisan / partisi)

Semoga ini bisa membantu beberapa pengguna Mtn Lion miskin lainnya di luar sana!

likethesky
sumber
Solusi yang sangat baik. Saya akan tersesat tanpa tulisan ini. Terima kasih banyak!
ggutenberg
1

Sejauh ini saya telah gagal menemukan cara untuk melakukan ini secara langsung, bahkan dengan pembaca kartu USB (itu meletakkan kartu /dev/dm-1daripada yang diharapkan /dev/mmcblk1).

Lingkungan kerja saya adalah membuat drive virtual 4 GB di VirtualBox. Ini kemudian dapat (sebagai /dev/sdb) mengambil instalasi BeagleBoard Ubuntu sebagai didokumentasikan.

Saya kemudian mematikan VM, mengubahnya menjadi file RAW DD dan menggunakan DD untuk meletakkannya di kartu: (pada host host):

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

( /dev/disk2dalam kasus saya, tapi periksa triplecheck kalau salah bisa merusak drive hard disk Anda).

The ddperintah waktu sekitar 1 jam 20 menit!

Saya harap ini membantu. Saya masih berusaha menuju cara yang lebih mudah dan lebih cepat - kita tidak perlu mentransfer 4 GB data untuk 600 MB OS.

Kaya
sumber
0

Bagi saya solusinya adalah menyalakan perangkat USB dengan kartu SD, menggunakan
Devices -> USB devices ->My card reader,
dan setelah beberapa detik disk baru muncul di VM saya.

Saya telah menginstal VirtualBox Extensions Pack sebelum itu.

Zdzisiek
sumber
0

Saya memasang file "Virtual Box Guest Additons CD", tetapi pembaca kartu SD saya tidak muncul di Mesin Virtual Windows XP. Saya dapat menjalankan tugas saya dengan mengaktifkan perangkat USB di Virtual Box dan kemudian memulai kembali Mesin Virtual.

skibulk
sumber
0

Seperti yang disebutkan kobaltz. Untuk mendukung versi USB 2.0 dan 3.0 Anda perlu menginstal Virtual Extension Pack, saya menginstal 5.2.22 Oracle VM VirtualBox Extension Pack, dan Anda dapat mengunduhnya dari halaman pengunduhan Kotak Virtual. Setelah Anda mengunduh file, Anda dapat langsung melanjutkan dan menginstalnya, hal yang sama akan ditambahkan ke ekstensi Kotak Virtual Anda.

masukkan deskripsi gambar di sini

Anda juga harus menambahkan kartu SD Anda ke filter perangkat di Kotak Virtual kami, silakan pergi ke Pengaturan -> USB -> Klik pada opsi Tambahkan kartu SD Terlampir.

masukkan deskripsi gambar di sini

Sekarang Anda dapat menggunakan kartu SD di Filter.

masukkan deskripsi gambar di sini

Pergi ke File dan lihat folder melihat kartu SD (saya menggunakan Distribusi Linux Ubuntu)

masukkan deskripsi gambar di sini

Sibeesh Venu
sumber
0

Bagi siapa saja yang menggunakan makro dan mengikuti jawaban sebelumnya, jika Anda masih tidak dapat mengakses kartu sd karena masalah izin,

menjalankan virtualbox dengan sudo akan menyelesaikannya.

sudo VirtualBox

Perhatikan bahwa path ke file vm berbeda, dalam kasus saya, itu adalah:

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

Jika itu masih tidak berhasil, ubah pemilik dan akses disk kartu sd, masing-masing ke akun pengguna Anda dan 666.

Pengyuan Zhou
sumber