web-dev-qa-db-ja.com

マイクロSDカードにパーティションテーブルを作成できません

以前はRaspberryPiにあった(そして動作を停止した)マイクロSDカードを再フォーマットしようとしています。しかし、メインコンピューター(Arch)に接続してパーティションを作成しようとすると、gpartedがパーティションテーブルがないと言っているため、パーティションを作成できません。パーティションテーブル(GPT)を追加して修正しようとすると、以下のエラーが発生します。 uSDカードを修正するにはどうすればよいですか?

それが助けになるなら、プラグインしたときのdmesgの出力も含めました。他のOSにアクセスできないので、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
ZuluDeltaNiner

Linux Kernel 4.4-rc4以降には既知のバグがあります(現在も存続しています)。このバグと考えられる回避策については、 kernel.org で読むことができます。

これは基本的に故障して、オプションの機能クエリを無効にします。これにより、カードリーダーハードウェアが効果的にハングします。


一時的な回避策

  1. でsdhcモジュールをアンロードします

rmmod sdhci sdhci_pci sdhci_acpi

  1. オプションを使用してモジュールをリロードし、オプション機能を無効にします。

modprobe sdhci debug_quirks2="0x10000"

  1. modprobe sdhci_pciを使用してsdhci_pciモジュールを再度ロードします

SDカードで再試行してください。ただし、初期化には数秒かかる場合があります(クエリはまだタイムアウトしているためですが、現在は無視しています)。

これで問題が解決する場合は、永続的な回避策を続行してください


恒久的な回避策

これはまだ回避策であり、将来失敗する可能性があることに注意してください。バグが修正されているかどうかを確認するには、将来のカーネルバージョンで回避策を無効にする必要があります。

  1. /etc/modprobe.d(またはディストリビューションが設定ファイルを保存する場所)にmodprobe設定ファイルを作成し、そこにモジュールオプションを書き込みます。 。confで終わる限り、名前は関係ありません。

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

オプションは、将来の起動時にロードされます。そうでない場合は、非常に汚いが可能性のある解決策として、一時的な修正を起動スクリプトにハックしようとすることがあります。

1
SiLeX