我想从 Linux 虚拟机格式化 SD 卡。我有一个内置SD卡阅读器。我尝试使用虚拟盒和VMware 播放器并安装了 Ubuntu 10.04 客户机。它们都没有将 SD 卡读卡器显示为设备。我可以从 Windows 主机访问 SD 卡。
我对使用共享文件夹的解决方案不感兴趣,因为我想以硬件形式访问 SD 卡(它应该显示在/dev
)。
我基本上想设置 SD 卡比格犬板,但我不想在我的 PC 上安装物理 Ubuntu。
答案1
在较新的 MacBook Pro 上,SD 卡插槽不再显示为 USB 设备。因此,您需要将原始设备连接到 VM,才能获得对整个卡的原始访问权限。完整文档位于高级存储配置VirtualBox 文档的部分。
正如文档中明确指出的那样:
警告- 原始硬盘访问仅供专家用户使用。不正确使用或使用过时的配置可能导致物理磁盘上的数据完全丢失。最重要的是,不要尝试在客户机中用当前正在运行的主机操作系统启动分区。这将导致严重的数据损坏。
作为快速指南,这些是将设备连接到 Linux VM 的步骤:
识别主机系统上的原始磁盘块设备
- 将 SD 卡插入插槽
打开终端并输入“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)`
在我的例子中,“无名称”卷是 SD 卡,因此我记下了该
/dev/disk2s1
部分。在这个特定例子中,该s1
部分代表原始设备上的一个分区(切片),因此我们稍后要使用的部分就是该/dev/disk2
部分。
- 打开磁盘实用程序并“卸载”该卷。不要“弹出”它。请注意,在接下来的步骤中,您可能需要偶尔卸载该卷,因为我发现 OSX 会随机自动重新安装它。
现在我们在终端中使用以下命令设置 VirtualBox 来识别原始设备。
- 请注意,可以将其
/path/to/file.vmdk
放在任何地方,但最好将其存储在客户虚拟机文件夹中,例如~/VirtualBox VMs/guest-vm/sdcard.vmdk
请注意,
-rawdisk
我们使用的不是引用分区(切片),而是仅仅引用整个块设备。$ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
- 请注意,可以将其
接下来,我们将原始磁盘附加到 VirtualBox UI 中的客户虚拟机
- 确保客户虚拟机未运行。
- 打开来宾虚拟机的设置区域
- 点击工具栏中的“存储”
- 单击控制器旁边的图标“添加硬盘”
- 选择“选择现有磁盘”
- 导航到
/path/to/file.vmdk
您在步骤 3 中使用的并选择它 - 现在您应该返回到“存储”选项卡并
file.vmdk
在列表中看到您的内容。
- 启动虚拟机
- 根据您是否有 GUI,SD 卡可能会自动安装,也可能不会。如果您需要手动安装,它只会显示为另一个标准块设备,因此在我的客户机上,它显示为 /dev/sdb。
更新
似乎有些人在步骤 3.2 或 4.6 中无法访问原始设备。尝试使用 sudo 运行某些命令不会有帮助,因为 VirtualBox 将以您的登录用户身份运行,并且仍然无法正确访问原始设备或生成的 vmdk 文件。
尽管我还没有测试过,但以下步骤应该会有所帮助。
- 在“系统偏好设置/用户”部分中检查您在 OSX 上使用的帐户是否具有管理员权限。它很可能也是系统上用于原始设备访问的主要帐户。
检查原始磁盘权限
$ 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
针对 Windows 用户的解答
获取您的 SD 卡读卡器的 DeviceID。
您需要驱动器中的一张卡,由 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
创建 SD 卡的链接文件
打开命令窗口作为管理员
"C:\Program Files\Oracle\VirtualBox\VBoxManage" internalcommands createrawvmdk -filename "%USERPROFILE%/Desktop/sdcard.vmdk" -rawdisk "\\.\PHYSICALDRIVE1"
这假定了默认安装路径 - 如果需要,请更改它。(确保 rawdisk 参数周围有引号。)
.vmdk 文件是 SD 卡的链接,您可以将其放在主机系统上的任何位置,但为了方便起见,此命令只是将其放在桌面上。
按照 JinnKo 的回答中的步骤 4-6 进行操作,唯一的小调整是您需要以管理员身份启动 VirtualBox
- 接下来,我们将原始磁盘附加到 VirtualBox UI 中的客户虚拟机
- 确保客户虚拟机已关闭。
- 确保 VirtualBox 没有运行
- 右键单击并选择“以管理员身份运行”来启动 VirtualBox
- 打开来宾虚拟机的设置区域
- 点击工具栏中的“存储”
- 单击控制器旁边的图标“添加硬盘”
- 选择“选择现有磁盘”
- 导航到
/path/to/file.vmdk
您在步骤 3 中使用的并选择它- 现在您应该返回到“存储”选项卡并
file.vmdk
在列表中看到您的内容。- 启动虚拟机
- 根据您是否有 GUI,SD 卡可能会自动安装,也可能不会。如果您需要手动安装,它只会显示为另一个标准块设备,因此在我的客户机上,它显示为 /dev/sdb。
答案3
在较新的 MacBook Pro 上,SD 卡插槽不再显示为 USB 设备
为了解决这个问题,你可以简单地使用外部USB 存储卡读卡器(即 SD 卡转 USB 适配器)而不是内置读卡器。它将把您的 SD 卡显示为 USB 设备,这样您就可以像安装任何 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 设置,选择存储,单击控制器:Sata,单击添加硬盘图标,选择您的 .vdk(在本例中为 sd-card.vmdk)