我有一张 16 GB 的 Transcend SD 卡,并在我的智能手机中使用它。有一天,我发现智能手机只能识别 6 GB。我试图找到解决方案来设置 SD 卡的正确大小,却意外运行了此命令:
dd if=/dev/zero of=/dev/sdc
/dev/sdc
我的 SD 卡是通过手机安装的。之后,我的卡根本无法识别(手机、相机和 Linux 机器都无法识别)。我知道我弄坏了某种膜生物反应器上面有一些初始记录,显示了 SD 卡的必要参数)。
我使用的是 Linux,根本没有 Windows。我找到了一些适用于 Windows 的解决方案(例如,SDFix 应用程序),但有没有 Linux 替代方案?可以修复吗?
我希望找到一个与 SD 协会相当的 Linux 组织SD 存储卡格式化程序(这是一个仅适用于专有操作系统的二进制程序)。
答案1
您已覆盖卡的分区表。
大多数消费类嵌入式设备都需要 BIOS(PC)分区表,我猜你的手机就是这样的设备。我的经验是使用相机;我猜手机可能也类似。我还假设,与我的相机不同,手机的菜单中没有隐藏“重新格式化存储卡”操作。
# cfdisk /dev/sdc
应该可以让你重新分区介质(以交互方式,除非你明确同意,否则不会写入)。你可能想创建一个分区,使用所有空间。
完成这些后,您应该会发现/dev/sdc1
出现了(hdparm -z
如果没有,那可能是您的朋友),是时候在其上创建一个文件系统了。再次猜测,我认为您可能需要一个 VFAT 文件系统,除非您的设备手册另有说明:
# mkfs -t vfat /dev/sdc1
现在剩下的就是从您开始干预之前所做的备份中恢复数据。;-)
答案2
您的卡无法工作,因为它没有任何文件系统。您可以使用 GParted 创建一个。
在 GParted 窗口中选择/dev/sdc
。使用适当的菜单选项创建新的 MS-DOS 分区表(GParted 可能会自动提示您执行此操作)。然后使用整个可用空间创建新分区。单击申请并等待该过程完成。此后您的卡应该可以正常工作。
答案3
您可以尝试低级重新格式化。从以下位置下载格式化程序http://sdcard.org/downloads/formatter_4. 设置“格式大小调整”选项on
。这将重新刷新卡,而不管卡上的文件系统(或缺少文件系统)。
答案4
采取已知的良好图像...例如 raspbian 图像文件,然后再次执行相同的操作.... dd if=~/Downloads/raspbian.img of=/dev/sdc bs=16M status=progress
这应该会将完整的良好映像写入卡中,包括分区表