SDカードを見つけるかマウントできません

SDカードを見つけるかマウントできません

私のSDカードに問題が発生しました。ここでいくつかの指示に従いました。https://forums.linuxmint.com/viewtopic.php?t=368230そしてコマンドを使う

sudo dd if=/dev/zero of=/dev/sdb bs=1M count=1

(これは危険であることを知っています。カードが非常に安価で偽物であると疑ったので、これを実行しました。)エラーなしで実行されますが、システムはもはやカードを認識しません。 Gpartedとlsblkはそれを見つけることができません(sdbを返しません)。 「sudo dmesg -w」を実行すると、以下が表示されます。

[ 6333.845914] sd 2:0:0:0: [sdb] 1048780800 512-byte logical blocks: (537 GB/500 GiB)
[ 6333.846242] sd 2:0:0:0: [sdb] Write Protect is off
[ 6333.846249] sd 2:0:0:0: [sdb] Mode Sense: 2f 00 00 00
[ 6333.846572] sd 2:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 6333.851162] sd 2:0:0:0: [sdb] Attached SCSI removable disk
[ 6334.376852] exFAT-fs (sdb): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 6334.916786] exFAT-fs (sdb): error, invalid access to FAT (entry 0x00000007) bogus content (0x3eac7bca)                                                                 
[ 6334.916798] exFAT-fs (sdb): Filesystem has been set read-only
[ 6334.916802] exFAT-fs (sdb): failed to initialize root inode
[ 6342.202999] exFAT-fs (sdb): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 6342.767908] exFAT-fs (sdb): error, invalid access to FAT (entry 0x00000007) bogus content (0x3eac7bca)                                                                 
[ 6342.767925] exFAT-fs (sdb): Filesystem has been set read-only
[ 6342.767930] exFAT-fs (sdb): failed to initialize root inode
[ 6365.545658] sdb: detected capacity change from 1048780800 to 0

だから、まだ保存が可能かどうか疑問に思います。率直に言って、カードを失うよりも修正できない方が面倒です。たまにこんな感じを受ける方もいらっしゃると思います:)

Debian/Bookworm でテスト中です。

よろしくお願いします!

編集:zomegaの提案に従ってmodprobe usbmon +wiresharkを試しました。私はほとんどの内容をよく理解していません。

Frame 22971: 71 bytes on wire (568 bits), 71 bytes captured (568 bits) on interface usbmon0, id 0
Section number: 1
Interface id: 0 (usbmon0)
    Interface name: usbmon0
Encapsulation type: USB packets with Linux header and padding (115)
Arrival Time: Jan 24, 2023 08:28:54.570098000 -03
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1674559734.570098000 seconds
[Time delta from previous captured frame: 0.099905000 seconds]
[Time delta from previous displayed frame: 0.099905000 seconds]
[Time since reference or first frame: 233.430201000 seconds]
Frame Number: 22971
Frame Length: 71 bytes (568 bits)
Capture Length: 71 bytes (568 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: usb]
USB URB
[Source: 1.2.1]
[Destination: host]
URB id: 0xffff9197d7386480
URB type: URB_COMPLETE ('C')
URB transfer type: URB_INTERRUPT (0x01)
Endpoint: 0x81, Direction: IN
    1... .... = Direction: IN (1)
    .... 0001 = Endpoint number: 1
Device: 2
URB bus id: 1
Device setup request: not relevant ('-')
Data: present ('\0')
URB sec: 1674559734
URB usec: 570098
URB status: Success (0)
URB length [bytes]: 7
Data length [bytes]: 7
[Request in: 22970]
[Time from request: 0.099905000 seconds]
[bInterfaceClass: Unknown (0xffff)]
Unused Setup Header
Interval: 1
Start frame: 0
Copy of Transfer Flags: 0x00000204, No transfer DMA map, Dir IN
    .... .... .... .... .... .... .... ...0 = Short not OK: False
    .... .... .... .... .... .... .... ..0. = ISO ASAP: False
    .... .... .... .... .... .... .... .1.. = No transfer DMA map: True
    .... .... .... .... .... .... ..0. .... = No FSBR: False
    .... .... .... .... .... .... .0.. .... = Zero Packet: False
    .... .... .... .... .... .... 0... .... = No Interrupt: False
    .... .... .... .... .... ...0 .... .... = Free Buffer: False
    .... .... .... .... .... ..1. .... .... = Dir IN: True
    .... .... .... ...0 .... .... .... .... = DMA Map Single: False
    .... .... .... ..0. .... .... .... .... = DMA Map Page: False
    .... .... .... .0.. .... .... .... .... = DMA Map SG: False
    .... .... .... 0... .... .... .... .... = Map Local: False
    .... .... ...0 .... .... .... .... .... = Setup Map Single: False
    .... .... ..0. .... .... .... .... .... = Setup Map Local: False
    .... .... .0.. .... .... .... .... .... = DMA S-G Combined: False
    .... .... 0... .... .... .... .... .... = Aligned Temp Buffer: False
Number of ISO descriptors: 0
Leftover Capture Data: 0200ff0f000000

答え1

カード容量が突然ゼロに達すると、これはPCの制御範囲外です。つまり、SDカード内のコントローラが動作を停止します。

このコントローラで実行されているソフトウェアをデバッグできず、ハードウェアの内部を見ることもできないため:

あなたのカードは電子廃棄物です。信じられないほどのデータ記憶媒体はないよりも悪いので、「偽物だと思います」と言うと、これは基本的に明らかです。

答え2

まず、コンピュータを再起動して動作するSDカード(SDカード2)とSDカードリーダー(カードリーダー2)を準備します。 SD カード 2 を 2 つのカードリーダーに挿入し、カードリーダーが正常であることを確認します。 SDカード1(不良カード)をカードリーダー2に挿入し、正しく機能していることを確認してください。

これで、SDカード1で何が起こっているのかをデバッグするためにWiresharkを使用できます。 SDカードリーダーは通常USB経由で接続されます。マイクロSDカードリーダーが接続されているUSBフラッシュドライブがあります。ノートパソコンとデスクトップコンピュータ用のカードリーダーは通常USB経由で接続されています。

rootユーザーとして実行:

modprobe usbmon

その後、Wiresharkを起動します。キャプチャする usbmon* インターフェイスが表示されます。正直なところ、正しいことを簡単に識別する方法がわかりません。しかし、開くことはできます。 SDカードを挿入しない場合はトラフィックがあってはならず、挿入するとトラフィックが表示されるはずです。たぶん、ここで誰かが正しいインターフェイスをより簡単に識別する方法を知っているかもしれません。

これで、正確に何が起こっているのか、なぜSDカードがサイズをゼロとして報告するのかを確認できます。

SDカードとの通信にはさまざまなプロトコルを使用できます。さまざまなプロトコルを試すことができます。バラよりこの動画

関連情報