Làm cách nào để truy cập thẻ SD từ máy ảo?


64

Tôi muốn định dạng thẻ SD từ máy ảo Linux của mình. Tôi có một đầu đọc thẻ SD tích hợp trong máy tính xách tay của mình. Tôi đã thử sử dụng VirtualBoxVMware Player và cài đặt Ubuntu 10.04 khách. Không ai trong số họ đang hiển thị đầu đọc thẻ SD như một thiết bị. Tôi có thể truy cập thẻ SD từ máy chủ Windows.

Tôi không quan tâm đến các giải pháp sử dụng các thư mục được chia sẻ vì tôi muốn truy cập thẻ SD dưới dạng phần cứng (nó sẽ hiển thị trong /dev).

Về cơ bản tôi muốn thiết lập thẻ SD cho BeagleBoard , nhưng tôi không muốn cài đặt Ubuntu vật lý trên PC.


1
Bạn đã cài đặt addons virtualbox khách?
tumchaaditya

1
Tôi gặp vấn đề tương tự. Các giải pháp dưới đây đã làm việc cho tôi nhưng không linh hoạt. Cuối cùng tôi đã đầu tư vào một "đầu đọc USB Micro SD" hiển thị theo mặc định trong máy ảo. Điều này cho phép tôi cắm và rút thẻ mà không cần thêm hành động. Chỉ là một góc nhìn khác về giải pháp
TheMeaningfulEngineer

Câu trả lời:


56

Trên MacBook Pro mới hơn, khe cắm thẻ SD không còn được hiển thị dưới dạng thiết bị USB. Do đó, bạn sẽ cần phải gắn thiết bị thô vào VM để có quyền truy cập thô vào toàn bộ thẻ. Tài liệu đầy đủ nằm trong phần Cấu hình lưu trữ nâng cao của tài liệu VirtualBox.

Như đã nêu rõ trong các tài liệu:

Cảnh báo - Truy cập đĩa cứng thô chỉ dành cho người dùng chuyên gia. Việc sử dụng không đúng hoặc sử dụng cấu hình lỗi thời có thể dẫn đến mất hoàn toàn dữ liệu trên đĩa vật lý . Quan trọng nhất, không cố gắng khởi động phân vùng với hệ điều hành máy chủ hiện đang chạy trong một khách. Điều này sẽ dẫn đến tham nhũng dữ liệu nghiêm trọng.

Hướng dẫn nhanh, đây là các bước để gắn thiết bị vào máy ảo linux:

  1. Xác định thiết bị chặn đĩa thô trên hệ thống máy chủ của bạn

    1. Lắp thẻ SD vào khe
    2. Mở Terminal và gõ "mount". Bạn sẽ thấy đầu ra xác định âm lượng được gắn từ thẻ SD của bạn. Trên hệ thống của tôi, tôi nhận được như sau

      $ 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. Trong trường hợp của tôi, âm lượng "KHÔNG TÊN" là thẻ SD, vì vậy tôi lưu ý /dev/disk2s1phần này. Trong trường hợp cụ thể này, s1phần đại diện cho một phân vùng (lát) trên thiết bị thô, vì vậy phần chúng ta sẽ sử dụng sau này chỉ là /dev/disk2một phần.

  2. Mở Disk Utility và "Unmount" âm lượng. Đừng "Đẩy" nó. Lưu ý rằng thỉnh thoảng bạn có thể cần ngắt âm lượng trong các bước tiếp theo vì tôi thấy OSX sẽ tự động phát lại nó một cách ngẫu nhiên.
  3. Bây giờ chúng tôi thiết lập VirtualBox để nhận biết thiết bị thô bằng lệnh sau trong Terminal.

    1. Lưu ý rằng /path/to/file.vmdkcó thể đặt bất cứ nơi nào, mặc dù vậy nên lưu trữ thư mục này trong thư mục VM khách như~/VirtualBox VMs/guest-vm/sdcard.vmdk
    2. Lưu ý rằng -rawdiskchúng tôi sử dụng không tham chiếu phân vùng (lát) mà chỉ toàn bộ thiết bị khối.

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. Tiếp theo, chúng tôi đính kèm đĩa thô vào máy ảo khách trong VirtualBox UI

    1. Đảm bảo VM khách không chạy.
    2. Mở vùng cài đặt cho VM khách
    3. Nhấp vào "Storage" trên thanh công cụ
    4. Bên cạnh bộ điều khiển, nhấp vào biểu tượng để "Thêm đĩa cứng"
    5. Chọn "Chọn đĩa hiện có"
    6. Điều hướng đến /path/to/file.vmdkbạn đã sử dụng trong bước 3 và chọn nó
    7. Bây giờ bạn sẽ được đưa trở lại tab Storage và xem bạn file.vmdktrong danh sách.
  5. Khởi động VM
  6. Tùy thuộc vào việc bạn có GUI hay không, thẻ SD có thể tự động gắn kết. Nếu bạn cần gắn kết thủ công, nó chỉ đơn giản là được hiển thị dưới dạng một thiết bị khối tiêu chuẩn khác, vì vậy đối với khách của tôi, điều này đã được hiển thị dưới dạng / dev / sdb.

Cập nhật

Có vẻ như một số người có thể gặp rắc rối với việc truy cập thiết bị thô ở bước 3.2 hoặc 4.6. Cố gắng chạy một số lệnh với sudo sẽ không giúp ích vì VirtualBox sẽ chạy khi người dùng đã đăng nhập của bạn và vẫn không thể truy cập đúng thiết bị thô hoặc tệp vmdk được tạo.

Các bước sau đây sẽ giúp ích, mặc dù tôi chưa thử nghiệm chúng.

  1. Kiểm tra tài khoản bạn đang sử dụng trên OSX có đặc quyền Quản trị viên trong phần Tùy chọn hệ thống / Người dùng. Có một cơ hội tốt nó cũng nên là tài khoản chính trên hệ thống để truy cập thiết bị thô hoạt động.
  2. Kiểm tra quyền truy cập đĩa thô

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

    Các quyền này phải phù hợp với tài khoản người dùng đã đăng nhập hiện tại của bạn:

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

    Các quyền trên thiết bị cũng phải cho phép tài khoản người dùng thông thường của bạn đọc cả (r) và ghi (w) cho thiết bị này. KHÔNG THAY ĐỔI GIẤY PHÉP TRÊN THIẾT BỊ KHÔNG GIỚI HẠN BẠN TUYỆT ĐỐI BIẾT NHỮNG GÌ BẠN ĐANG LÀM.


Cập nhật số 2

Hóa ra OSX Mountain Lion đã tạo ra thiết bị với các đặc quyền "root: toán tử" và 0640 quyền. Thật không may, bây giờ cách duy nhất để có quyền truy cập vào thiết bị này là "sudo chown $ USER" cho người dùng hiện tại của bạn mỗi khi bạn lắp thiết bị, tuy nhiên điều này không được khuyến khích trừ khi bạn thực sự hiểu những gì bạn đang làm. Hy vọng rằng Apple hoặc VirtualBox sẽ tìm thấy một giải pháp phù hợp hơn.


2
Trong Mountain Lion, có phân vùng gắn đĩa Discarbitrationd từ sdcard, để ngăn chặn điều này:$ 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
ɾɾɾǝʞ

1
Cảm ơn @kenji, đó là một mẹo tuyệt vời bổ sung cho người dùng Mtn Lion (Tôi đã đấu tranh một chút với vấn đề tự động hóa). Hướng dẫn chi tiết của tôi trên các diễn đàn VirtualBox sẽ được hưởng lợi từ mẹo này; Tôi sẽ thêm một liên kết đến bình luận của bạn ở đó và bên dưới. Cảm ơn một lần nữa.
likeethesky

1
Tôi đã làm theo hướng dẫn này nhưng có vấn đề về sự cho phép, sau đó tôi đã tạo ra một chiếc chmod 777 trên thiết bị và nó hoạt động tốt. Thêm chi tiết tại đây: balage.bloss.balabit.com/2010/10/ trên
Samantha Catania

2
Tôi đã nhận được RESOURCE_BUSY khi cố gắng thêm hình ảnh dưới dạng Đĩa cứng vào Hộp ảo. Tôi nhận thấy rằng OSX đã vượt qua các phân vùng thẻ SD. Buộc họ ngắt kết nối bằng cách nhập nội dung sau vào Terminal (Trên máy chủ)sudo diskutil unmountDisk /dev/<disk path>
Rob

1
Tôi có thể xác nhận một người cần 1) unmount 2) chown 3) tạo đĩa ảo 4) unmount lại 5) thêm vào VM 6) unmount AGAIN 7) khởi động VM. - @JinnKo: bạn có thể thêm câu đó vào câu trả lời không? hoặc tôi có thể
Erik Allik

42

Trả lời cho người dùng Windows

  1. Lấy DeviceID của đầu đọc thẻ SD của bạn.

    Bạn sẽ cần một thẻ trong ổ đĩa, được gắn bởi các cửa sổ.

    Nhập lệnh này

    wmic diskdrive list brief
    

    Nó sẽ trông giống như thế này:

    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
    

    Thiết bị cuối cùng là đầu đọc thẻ SD, vì vậy DeviceID là \\.\PHYSICALDRIVE1

  2. Tạo tập tin liên kết đến thẻ SD

    Mở một cửa sổ lệnh với tư cách Quản trị viên

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

    Điều này giả định đường dẫn cài đặt mặc định - thay đổi nó nếu bạn cần. (Đảm bảo trích dẫn xung quanh đối số rawdisk.)

    Tệp .vmdk là một liên kết đến thẻ SD, bạn có thể đặt nó ở bất cứ đâu trên hệ thống máy chủ của mình, nhưng lệnh này chỉ cần đặt nó trên máy tính để bàn của bạn để thuận tiện.

  3. Thực hiện theo các bước 4-6 trong câu trả lời của JinnKo, điều chỉnh nhỏ duy nhất là bạn cần khởi động VirtualBox với tư cách Quản trị viên

  1. Tiếp theo, chúng tôi đính kèm đĩa thô vào máy ảo khách trong VirtualBox UI
    1. Đảm bảo VM khách được tắt.
    2. Đảm bảo VirtualBox không chạy
    3. Bắt đầu VirtualBox bằng cách nhấp chuột phải vào nó và chọn "Chạy với tư cách quản trị viên"
    4. Mở vùng cài đặt cho VM khách
    5. Nhấp vào "Storage" trên thanh công cụ
    6. Bên cạnh bộ điều khiển, nhấp vào biểu tượng để "Thêm đĩa cứng"
    7. Chọn "Chọn đĩa hiện có"
    8. Điều hướng đến /path/to/file.vmdkbạn đã sử dụng trong bước 3 và chọn nó
    9. Bây giờ bạn sẽ được đưa trở lại tab Storage và xem bạn file.vmdktrong danh sách.
  2. Khởi động VM
  3. Tùy thuộc vào việc bạn có GUI hay không, thẻ SD có thể tự động gắn kết. Nếu bạn cần gắn kết thủ công, nó chỉ đơn giản là được hiển thị dưới dạng một thiết bị khối tiêu chuẩn khác, vì vậy đối với khách của tôi, điều này đã được hiển thị dưới dạng / dev / sdb.

Trong trường hợp bạn đang cố gắng để có được điều này với cygwinđồng hồ cho các nhân vật thoát. Tôi đã không nhận được cygwingiải pháp chính xác nhưng nhận thấy rằng lệnh hoạt động cmdkhông hoạt động cygwin.
TheMeaningfulEngineer

Khi tôi khởi động VirtualBox với tư cách quản trị viên, tôi không thấy máy của mình và vì vậy không thể thay đổi cài đặt của chúng. Lý do có lẽ là tôi không phải là người dùng quản trị vì tôi đang làm việc với các liên kết trong các thư mục dùng chung yêu cầu điều này. Sau khi thay đổi loại tài khoản của tôi thành quản trị viên và thêm ổ đĩa sdcard và chạy VirtualBox với tư cách quản trị viên, tôi không thể vượt qua màn hình đăng nhập. Tôi đã không tìm thấy vấn đề trong syslog. Chỉ khi ổ đĩa sdcard bị xóa lần nữa, tôi cũng có thể đăng nhập khi chạy VirtualBox với tư cách quản trị viên, nhưng tất nhiên sau đó tôi không thấy thẻ sd. Vì vậy, nó không làm việc cho tôi. :(
Frank Breitling

7

Bạn rất có thể thiếu các tiện ích mở rộng nếu đầu đọc SD của bạn đang sử dụng bộ điều khiển USB.

nhập mô tả hình ảnh ở đây

Trong Tệp> Tùy chọn, hãy theo dõi pic. Thêm và trỏ đến phần mở rộng đã tải xuống.

nhập mô tả hình ảnh ở đây

Khởi động lại máy ảo của bạn và bạn sẽ có quyền truy cập vào thiết bị USB.


Xin chào, tôi đã thử giải pháp này và cài đặt gói mở rộng hộp ảo nhưng vẫn không thành công. Tôi đang làm điều này trong macbook nếu điều đó làm cho bất kỳ sự khác biệt. Ngoài ra, trong trình cấu hình hệ thống macbook của tôi, đầu đọc thẻ sd không được liệt kê trong các thiết bị USB mà là một danh mục riêng gọi là "đầu đọc thẻ". Ngoài ra, tôi có thể thấy các thiết bị được liệt kê dưới USB trong hộp ảo.
Trừng phạt Soni

4

Trên MacBook Pro mới hơn, khe cắm thẻ SD không còn được hiển thị dưới dạng thiết bị USB

Để khắc phục vấn đề này, bạn chỉ cần sử dụng Đầu đọc thẻ nhớ ngoài USB (tức là thẻ sd sang bộ chuyển đổi USB) thay vì đầu đọc thẻ tích hợp. Nó sẽ hiển thị thẻ sd của bạn dưới dạng thiết bị USB để bạn có thể gắn nó dễ dàng giống như bất kỳ thiết bị usb nào. Chúng là những thiết bị giá rẻ và sẽ là một giải pháp chấp nhận được khi xem xét tất cả những rắc rối theo cách khác.


Đây là ý tưởng thông minh nhất, cảm ơn! Tôi thậm chí còn có một đầu đọc thẻ USB nằm xung quanh nhưng không nhận ra mình có thể sử dụng nó.
marco.m

4

Tôi đang sử dụng Kubfox 15.04, VirtualBox 4.3.26

Điều này giả định rằng thiết bị thẻ sd là /dev/mmcbl0và đầu ra .vdk sẽ là sd-card.vmk:

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

Không chắc chắn đây là cách tốt nhất để sửa quyền, nhưng nó đã hoạt động:

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

Bây giờ, hãy vào Cài đặt VM, chọn Lưu trữ, nhấp vào Trình điều khiển: Sata, nhấp vào biểu tượng cho Thêm Đĩa cứng, chọn .vdk của bạn (sd-card.vmdk trong trường hợp này)


3

Tôi đã gặp rất nhiều rắc rối khi JinnKo giải quyết công việc, chủ yếu là do tôi ở trên Mountain Lion (OS X 10.8) ... Nhưng với sự giúp đỡ của anh ấy, tôi đã giải quyết được vấn đề.

Các giải pháp đầy đủ được chi tiết ở đây .

Tuy nhiên, bản chất của giải pháp của tôi - đối với người dùng Mountain Lion - là như sau (sử dụng các bước của JinnKo ở trên, nhưng chèn bước của tôi vào đây trước khi chạy lệnh 'VBoxManage Internalcommands cTHERawvmdk [...]' (nghĩa là ở giữa bước 2 & 3):

** Riêng với Mtn Lion ** Hãy chắc chắn rằng bạn là chủ sở hữu của thiết bị này. Vào ngày 10.8 Mtn Lion, bạn có thể sẽ thấy rằng mình không. Kiểm tra nó bằng cách làm:

ls -l /dev/disk*

Với '*', bạn sẽ thấy TẤT CẢ các thiết bị đĩa của mình, bạn cũng có thể thực hiện: ls -l / dev / đĩaX để chỉ xem 'X', ví dụ, tôi đã làm:

ls -l /dev/disk5

Trên Mtn Lion (10.8.x) bạn sẽ thấy một cái gì đó như:

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

Trong đó 'X' là số thiết bị của bạn, như '5' trong / dev / đĩa5 ...

Trên Lion (10.7.x), Snow Leopard (10.6.x) hoặc có lẽ các phiên bản trước đó của OS X, bạn sẽ - nếu tên người dùng của bạn là 'brad' - có thể sẽ thấy một cái gì đó như:

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

Trong đó 'X' là số thiết bị của bạn, như '5' trong / dev / đĩa5 ... Nếu bạn là chủ sở hữu, thì tất cả đều tốt, không có gì để làm ở đây, đi đến bước tiếp theo, đó là bước cTHERawvmdk ( trong hướng dẫn tuyệt vời của @JinnKo ở trên).

Nếu bạn không phải là chủ sở hữu (nhưng 'root' hoặc một số người dùng khác), thì (a) đăng nhập với tư cách là người dùng quản trị viên đó hoặc (b) làm như sau (một lần nữa, hãy chắc chắn rằng bạn đang sử dụng đúng số / chữ cái thiết bị đây!):

* THẬN TRỌNG * Dưới đây chỉ dành cho những người muốn mạo hiểm phá hủy vĩnh viễn dữ liệu trên ổ cứng hoặc ổ lưu trữ flash. DO KHÔNG LÀM THẾ nếu bạn không chắc chắn bạn biết những gì bạn đang thực hiện:

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

* CHÚ Ý * DO KHÔNG LÀM THẾ nếu bạn không chắc chắn bạn biết những gì bạn đang làm. Ở trên chỉ dành cho những người muốn RỦI RO phá hủy vĩnh viễn dữ liệu trên ổ cứng hoặc ổ lưu trữ flash của họ.

Bạn sẽ cần phải làm điều đó cho TẤT CẢ các lát của bạn (s1, s2, s3, ... tuy nhiên có rất nhiều). Ví dụ: tên người dùng của tôi là 'brad', vì vậy tôi đã làm : sudo chown brad /dev/disk5, sau đó sudo chown brad /dev/disk5s1, sau đó s2s3(vì tôi đã có 3 phân vùng hoặc lát cắt hiện có).

Nếu bạn chưa phân vùng thẻ SD, thì bạn chỉ cần thực hiện sudo chown <your username> /dev/diskXmột lần (không thực hiện bất kỳ lát / phân vùng nào)

Hy vọng điều này sẽ giúp một số người dùng Mtn Lion nghèo khác ngoài kia!


Giải pháp tuyệt vời. Tôi đã bị mất nếu không viết điều này. Cảm ơn rât nhiều!
ggutenberg

1

Cho đến nay tôi đã thất bại trong việc tìm cách làm điều này trực tiếp, ngay cả với đầu đọc thẻ USB (nó đặt thẻ vào /dev/dm-1chứ không phải như mong đợi /dev/mmcblk1).

Công việc của tôi là tạo một ổ đĩa ảo 4 GB trong VirtualBox. Điều này sau đó có thể (như /dev/sdb) thực hiện cài đặt BeagleBoard Ubuntu như tài liệu.

Sau đó tôi tắt VM, chuyển đổi nó thành tệp RAW DD và sử dụng DD để đặt nó vào thẻ: (trên máy chủ Mac):

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

( /dev/disk2trong trường hợp của tôi, nhưng việc xử lý sai khi xử lý sai có thể làm hỏng ổ đĩa cứng của bạn).

Các ddlệnh mất khoảng 1 giờ 20 phút!

Tôi hi vọng cái này giúp được. Tôi vẫn đang làm việc theo hướng dễ dàng và nhanh chóng hơn - chúng ta không cần chuyển 4 GB dữ liệu cho 600 MB HĐH.


0

Đối với tôi, giải pháp là để turn-on thiết bị USB với thẻ SD, sử dụng
Devices -> USB devices ->My card reader,
và sau vài giây đĩa mới xuất hiện trong VM của tôi.

Tôi đã cài đặt Gói mở rộng VirtualBox trước đó.


0

Tôi đã cài đặt các tệp "Virtual Box Guest Additons CD", nhưng đầu đọc thẻ SD của tôi không hiển thị trong Máy ảo Windows XP của tôi. Tôi đã có thể làm cho tôi hoạt động bằng cách kích hoạt thiết bị USB trong Hộp ảo và sau đó khởi động lại Máy ảo.


0

Như kobaltz đã đề cập. Để hỗ trợ các phiên bản USB 2.0 và 3.0 bạn cần cài đặt Gói mở rộng ảo, tôi đã cài đặt Gói mở rộng Virtual VM 5.222 của Oracle VM và bạn có thể tải xuống từ trang tải xuống Virtual Box. Khi bạn tải xuống tệp, bạn có thể trực tiếp tiếp tục và cài đặt nó, tương tự sẽ được thêm vào các tiện ích mở rộng Hộp ảo của bạn.

nhập mô tả hình ảnh ở đây

Bạn cũng nên thêm thẻ SD của mình vào các bộ lọc thiết bị trong Hộp ảo của chúng tôi, vui lòng truy cập Cài đặt -> USB -> Nhấp vào tùy chọn Thêm thẻ SD đính kèm.

nhập mô tả hình ảnh ở đây

Bây giờ bạn sẽ có thể thẻ SD của bạn trong Bộ lọc.

nhập mô tả hình ảnh ở đây

Đi đến Tệp và xem phần xem các thư mục thẻ SD (Tôi sử dụng Phân phối Ubuntu Linux)

nhập mô tả hình ảnh ở đây


0

Đối với bất kỳ ai sử dụng macos và làm theo các câu trả lời trước đó, nếu bạn vẫn không thể truy cập thẻ sd do vấn đề cấp phép,

chạy virtualbox với sudo sẽ giải quyết nó.

sudo VirtualBox

Lưu ý rằng đường dẫn đến các tệp vm là khác nhau, trong trường hợp của tôi, đó là:

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

Nếu điều đó vẫn không hoạt động, hãy thay đổi chủ sở hữu và quyền của đĩa sd, thành tài khoản người dùng của bạn và 666, tương ứng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.