我有一张 Micro SD 卡 (/dev/sdb),处于“锁定”状态,处于“只读”状态。当我尝试使用 Gparted 或其他图形软件对其进行格式化时,它会报告“不能有重叠分区”。通过互联网和此网站,我找到了使用以下命令的可能解决方案:
sudo fdisk -l -u /dev/sdb
sudo sfdisk -d /dev/sdb > sdb-backup.txt
然后将 .txt 文件更改为有效的文件以修复重叠分区并应用以下命令:
sudo sfdisk /dev/sdb < sdb-backup.txt
尝试此方法后,我仍无法修复我的 Micro SD 卡。结果如下:第一次尝试修复 Micro SD 卡:
sudo fdisk -l -u /dev/sdb
Disk /dev/sdb: 7,4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sdb1 16 13546943 13546928 6,5G 83 Linux
/dev/sdb3 24897 24897 0 0B 0 Empty
sudo sfdisk /dev/sdb < sdb-backup.txt
Checking that no-one is using this disk right now ... OK
Disk /dev/sdb: 7,4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Old situation:
Device Boot Start End Sectors Size Id Type
/dev/sdb1 16 13546943 13546928 6,5G 83 Linux
/dev/sdb3 24897 24897 0 0B 0 Empty
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0x00000000.
Created a new partition 1 of type 'Linux' and of size 12,2 MiB.
/dev/sdb2: Created a new partition 3 of type 'Empty' and of size 512 B.
/dev/sdb4:
New situation:
Device Boot Start End Sectors Size Id Type
/dev/sdb1 16 24896 24881 12,2M 83 Linux
/dev/sdb3 24897 24897 1 512B 0 Empty
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
Syncing disks.
=> 由于我没有成功修复 Micro SD 卡,所以我尝试了第二次尝试。第二次尝试修复 Micro SD 卡:
sudo fdisk -l -u /dev/sdb
Disk /dev/sdb: 7,4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sdb1 16 13546943 13546928 6,5G 83 Linux
/dev/sdb3 24897 24897 0 0B 0 Empty
sudo sfdisk /dev/sdb < sdb-backup.txt
Checking that no-one is using this disk right now ... OK
Disk /dev/sdb: 7,4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Old situation:
Device Boot Start End Sectors Size Id Type
/dev/sdb1 16 13546943 13546928 6,5G 83 Linux
/dev/sdb3 24897 24897 0 0B 0 Empty
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0x00000000.
Created a new partition 1 of type 'Linux' and of size 6,5 GiB.
/dev/sdb2: Created a new partition 3 of type 'Linux' and of size 965,3 MiB.
/dev/sdb4:
New situation:
Device Boot Start End Sectors Size Id Type
/dev/sdb1 16 13546943 13546928 6,5G 83 Linux
/dev/sdb3 13546945 15523839 1976895 965,3M 83 Linux
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
=> 我再次没有成功。
问题:我想知道:还有什么可以使用 FDISK 或其他工具(图形或命令行)来尝试恢复我的 SD 卡吗,或者我必须认为它已被损坏并购买另一个?
PS1:也许我设置了一些错误的命令,所以如果你能找到它并能帮助我,我非常感谢你。感谢您花时间阅读和回答我的问题。
PS2:我不知道这里是否是正确的空间,但为了回应建议该帖子的用户如果我的 USB 闪存驱动器被写保护或只读,我该怎么办?解决我的情况,尽管这篇文章很好地解释了类似的只读情况,但它没有包含解决我的 MicroSDCard 问题的方法。我想解释一下我的 SD 卡是 MicroSD,不包含外部引脚来阻止其写入状态。我不懂计算技术,无法证明它不包含我的情况的答案,但在阅读上述帖子后,我还没有找到任何方法或解决方案来继续解决我的问题。如果你想帮助我,只需询问你需要有关我的 MicroSDcard 的更多信息或我为那些有兴趣提供帮助的人发布的命令行信息。
===================== PS3:解决我的问题 ======================
到目前为止(2017 年 1 月 4 日),还没有解决方案可以修复我的 MicroSD 卡。我尝试使用 bwDraco 和 AFH 发布的建议,但无法恢复我的 MicroSD 功能。
我的 MicroSD 卡问题和解决方案怎么样?好吧,我会再等一会儿,看看是否有其他人在这里提出不同的解决方案。如果其他人有更多建议作为其功能的恢复选项,我仍然可以进行恢复。
无论如何,我会考虑再买一张 SD 卡。正如 bwDraco 所说,[可能],“卡坏了。存储卡经常出现这种令人担忧的故障,但至少更换并不昂贵。”“东西时不时就会出故障,这不一定是你的错。”
幸运的是,在这次损坏之前,我的 MicroSD 上没有重要数据,所以我没有丢失任何重要的东西。无论如何,丢失存储设备是一件坏事,我不喜欢这样,但至少这只是一个 MicroSD 的损失,并不代表巨大的损失。
除此之外,我还要感谢所有帮助过我的人!
================================================================
答案1
从你的一条评论(已编辑格式):
应用
sudo dd if=/dev/zero of=/sdb bs=64M
您建议的代码并且终端工作了一段时间后,它向我显示了响应:dd: error writing '/sdb': No space left on device 453+0 records in 452+0 records out 30384529408 bytes (30 GB, 28 GiB) copied, 278,123 s, 109 MB/s
我现在应该怎么做?
应该是of=/dev/sdb
,而不是of=/sdb
。此命令会填满系统磁盘,可能会导致机器崩溃。运行sudo rm /sdb
以删除多余的文件。如果此操作失败,您可能需要启动到实时 CD 以从系统驱动器中删除该文件。请参阅这个 Ask Ubuntu 问题有关如何处理完整根文件系统的更多信息。
删除多余的文件后,重新启动到原来的 Linux 系统并尝试运行以下命令:
sudo dd if=/dev/zero of=/dev/sdb bs=64M count=16
如果此操作失败并显示类似 的内容Input/output error
,则表示卡已损坏,需要更换。否则,您应该能够重新格式化卡并正常使用它。