无法在 micro SD 卡上创建分区表

无法在 micro SD 卡上创建分区表

我正在尝试重新格式化之前放在 Raspberry Pi 中的微型 SD 卡(已停止工作)。但是,当我将其插入主计算机 (arch) 并尝试对其进行分区时,我无法进行分区,因为 gparted 说它没有分区表。当我尝试通过添加分区表 (GPT) 来修复该问题时,我收到以下错误。我该如何修复我的 uSD 卡?

如果有帮助的话,我还添加了插入时的 dmesg 输出。我无法访问任何其他操作系统,因此无法在 Windows 上尝试某些操作。

当我尝试在卡上放置分区表时,gparted 的输出:

/dev/mmcblk0: unrecognised disk label
Input/output error during write on /dev/mmcblk0
Error fsyncing/closing /dev/mmcblk0: Input/output error

卡插入时dmesg输出:

[99702.919024] sdhci: Timeout waiting for Buffer Read Ready interrupt during tuning procedure, falling back to fixed sampling clock
[99702.919048] mmc0: new ultra high speed SDR104 SDHC card at address 59b4
[99702.920575] mmcblk0: mmc0:59b4 00000 7.35 GiB 
[99702.930961] mmc0: Controller never released inhibit bit(s).
[99712.952421] mmc0: Timeout waiting for hardware interrupt.
[99712.952498] mmcblk0: error -110 sending status command, retrying
[99712.954084] mmcblk0: unknown error -5 sending read/write command, card status 0x900
[99714.412427] sdhci: Timeout waiting for Buffer Read Ready interrupt during tuning procedure, falling back to fixed sampling clock
[99714.412447] mmc0: tried to reset card
[99714.422507] mmc0: Controller never released inhibit bit(s).
[99724.445769] mmc0: Timeout waiting for hardware interrupt.
[99724.445834] mmcblk0: error -110 sending status command, retrying
[99724.448129] mmcblk0: unknown error -5 sending read/write command, card status 0x900
[99724.448136] blk_update_request: I/O error, dev mmcblk0, sector 0
[99724.448140] Buffer I/O error on dev mmcblk0, logical block 0, async page read
[99724.448668] ldm_validate_partition_table(): Disk read failed.
[99724.448673]  mmcblk0: unable to read partition table

答案1

Linux 内核 4.4-rc4 及更高版本中存在一个已知错误(至今仍然存在)。您可以在此阅读有关此错误及其可能的解决方法的信息内核网站

它本质上会禁用可选功能查询,从而有效地挂起读卡器硬件:


临时解决办法

  1. 使用以下方法卸载 sdhc 模块

rmmod sdhci sdhci_pci sdhci_acpi

  1. 使用选项重新加载模块以禁用可选功能

modprobe sdhci debug_quirks2="0x10000"

  1. 再次加载 sdhci_pci 模块modprobe sdhci_pci

使用 SD 卡重试。不过初始化可能需要几秒钟(因为查询仍然超时,但我们现在忽略了这一点)。

如果此方法有效,请继续使用永久解决方法


永久的解决方法

请注意,这仍然是一种解决方法,将来可能会失败。您应该在未来的内核版本中禁用该解决方法,以查看错误是否已修复。

  1. 在 /etc/modprobe.d(或您的发行版存储配置文件的任何位置)中创建一个 modprobe 配置文件,并将模块选项写入其中。名称无关紧要,只要以配置文件

echo 'options sdhci debug_quirks2="0x10000"' > /etc/modprobe.d/dell_sdhci.conf

这些选项将在以后启动时加载。如果没有,您可以尝试将临时修复程序破解到启动脚本中,这是一个非常肮脏但可行的解决方案。

答案2

此 SD 卡有缺陷或损坏,或者电气引脚损坏。清洁后重试。如果仍然失败,则需要更换新 SD 卡。

相关内容