2012-01-01 03:00:56 +0000 2012-01-01 03:00:56 +0000
66
66
Advertisement

如何从虚拟机访问SD卡?

Advertisement

我想从我的Linux虚拟机中格式化一张SD卡。我的笔记本上有一个内置的SD卡阅读器。我试着使用VirtualBoxVMware Player并安装了Ubuntu 10.04 guest。它们都没有将SD卡阅读器显示为一个设备。我可以从Windows主机访问SD卡。

我对使用共享文件夹的解决方案不感兴趣,因为我想把SD卡作为硬件访问(它应该显示在/dev中)。

我基本上是想为BeagleBoard设置SD卡,但我不想在我的PC上安装一个物理Ubuntu。

Advertisement

答案 (11)

56
56
56
2012-08-06 09:15:30 +0000

在较新的MacBook Pro上,SD卡插槽不再作为USB设备暴露。正因为如此,您需要将原始设备连接到虚拟机,以便获得对整个卡的原始访问。完整的文档在VirtualBox文档的 Advanced Storage Configuration 部分。

正如文档中明确说明的那样。

警告 - 原始硬盘访问仅适用于专家用户。不正确的使用或使用过时的配置会导致物理磁盘上的数据完全丢失。最重要的是,不要试图在客人中用当前运行的主机操作系统启动分区。这将导致严重的数据损坏。

作为一个快速指南,以下是将设备连接到linux虚拟机的步骤:

1.识别主机系统上的原始磁盘块设备

  1. 打开磁盘实用程序并 “卸载 "该卷。不要 "弹出 "它。请注意,在接下来的步骤中,您可能需要偶尔卸载卷轴,因为我发现OSX会随机自动重新挂载它。
  2. 现在我们在终端中使用以下命令设置VirtualBox意识到原始设备。

  3. 接下来我们在VirtualBox用户界面内将原始磁盘附加到一个客人虚拟机上

  4. 启动虚拟机

  5. 根据你是否有GUI,SD卡可能会也可能不会自动挂载。


更新

似乎有些人在访问步骤 3.2 或 4.6 中的原始设备时可能会遇到麻烦。尝试用sudo运行一些命令不会有任何帮助,因为VirtualBox将以你的登录用户身份运行,仍然无法正确访问原始设备或生成的vmdk文件。

下面的步骤应该会有帮助,虽然我还没有测试过。

1.检查你在OSX上使用的账户是否在系统首选项/用户部分有管理权限。很有可能它也应该是系统上的主要账户,以便原始设备访问工作。 2. 检查原始磁盘权限

  • *

更新#2

原来OSX Mountain Lion以 "root:operator "权限和0640权限创建了设备。不幸的是,现在唯一能获得这个设备访问权限的方法是每次插入设备时,将其 "sudo chown $USER "给你的当前用户,然而这并不推荐,除非你真的了解你在做什么。希望苹果或VirtualBox能找到更合适的解决方案。

42
42
42
2013-08-14 15:35:08 +0000

Windows用户的回答

1.获取你的SD卡阅读器的设备ID。

  1. 创建SD卡的链接文件

  2. 按照JinnKo答案中的4-6步进行操作,唯一的小调整是你需要以管理员身份启动VirtualBox

  1. 接下来我们在VirtualBox用户界面内将原始磁盘连接到客人虚拟机上 1。确保客体虚拟机已关闭电源。
  2. 确保 VirtualBox 没有运行
  3. 通过右键单击 VirtualBox 并选择 “以管理员身份运行 "来启动 VirtualBox
  4. 打开客户虚拟机的设置区域
  5. 单击工具栏中的 "存储 ”
  6. 在控制器旁边点击 “添加硬盘 "图标 7.选择 "选择现有磁盘”
  7. 導覽到您在步驟 3 中使用的 /path/to/file.vmdk,並選擇它
  8. 现在您应该回到 “存储 "选项卡,并在列表中看到您的 file.vmdk
  9. 启动虚拟机
  10. 根据您是否有 GUI,SD 卡可能会也可能不会自动挂载。如果你需要手动挂载,它只是作为另一个标准块设备暴露出来,所以在我的客人上,它被暴露为/dev/sdb。
7
Advertisement
7
7
2012-01-01 04:16:47 +0000

如果你的SD读卡器使用的是USB控制器,那么你很可能缺少扩展名。

在File > Preferences下,按图索骥。添加并指向下载的扩展。

重新启动你的虚拟机,你应该可以访问USB设备。

4
4
4
2015-05-01 18:49:41 +0000

我使用的是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

现在进入虚拟机设置,选择 “存储",点击 "控制器:Sata",点击 "添加硬盘 "图标,选择你的.vdk(本例中为sd-card.vmdk)。

4
Advertisement
4
4
2014-02-13 12:41:45 +0000

在新的MacBook Pro上,SD卡插槽不再作为USB设备暴露

要克服这个问题,你可以简单地使用外部USB内存卡阅读器(即SD卡到USB适配器),而不是内置读卡器。它将使你的SD卡成为一个USB设备,这样你就可以像任何USB设备一样轻松地安装它。它们是便宜的设备,考虑到其他方式的所有麻烦,将是一个可以接受的解决方案。

3
3
3
2012-08-15 02:43:13 +0000

我有很多麻烦,让JinnKo的解决方案工作,主要是由于我在山狮(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 "是你的设备号,比如/dev/disk5中的 "5”…

在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 "是你的设备号,比如/dev/disk5中的 "5”……。如果你是设备的所有者,那么一切都很好,这里什么都不用做,进入下一步,也就是createrawvmdk步骤(在@JinnKo上面的伟大说明中)。 如果你不确定自己在做什么,请不要这样做。 以上只针对那些想冒着风险永久破坏硬盘或闪存驱动器上的数据的人。

你需要为你所有的片子(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
Advertisement
1
1
2012-04-25 06:24:35 +0000

到目前为止,我还没有找到直接做这件事的方法,即使是用USB读卡器也失败了(它把卡放在/dev/dm-1而不是预期的/dev/mmcblk1上)。

我的工作方法是在VirtualBox中创建一个4 GB的虚拟驱动器。然后,这可以(作为/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分钟!

我希望这能帮助你。我还在努力寻找一种更简单快捷的方法–我们不应该为了600 MB的OS而需要传输4 GB的数据。

0
0
0
2018-11-27 09:48:54 +0000

正如kobaltz提到的。要支持USB2.0和3.0版本,你需要安装虚拟扩展包,我安装的是5.2.22 Oracle虚拟机VirtualBox扩展包,你可以从Virtual Box下载页面下载。下载好文件后,可以直接进行安装,同样会添加到你的Virtual Box扩展包中。

您还应该将您的SD卡添加到我们虚拟盒的设备过滤器中,请进入设置-/> USB-/> 点击添加SD卡附件选项。

现在您将可以在过滤器中找到您的SD卡。

转到文件,看到SD卡文件夹(我使用Ubuntu Linux发行版)

0
Advertisement
0
0
2016-02-16 19:55:43 +0000

我安装了 “Virtual Box Guest Additons CD "文件,但我的SD卡阅读器在我的Windows XP虚拟机中没有显示。我可以通过在虚拟盒中启用USB设备,然后重新启动虚拟机来让我的工作。

0
0
0
2014-06-14 15:40:36 +0000

我的解决办法是用SD卡打开USB设备,使用 Devices -> USB devices ->My card reader, ,几秒钟后我的虚拟机中出现了新的磁盘。

之前我已经安装了VirtualBox Extensions Pack。

0
Advertisement
0
0
2019-04-03 14:15:22 +0000

用macos的朋友,按照前面的回答,如果还是因为权限问题无法访问sd卡,

用sudo运行virtualbox就可以解决。

sudo VirtualBox

注意到vm文件的路径不一样,我的情况是这样的。

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

如果还是不行的话 把SD卡的所有者和访问权限分别改成你的用户账号和666账号

Advertisement
Advertisement