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

카드 용량이 갑자기 0에 도달하면 이는 PC의 제어 범위를 벗어납니다. 즉, SD 카드 내의 컨트롤러가 작동을 멈춥니다.

이 컨트롤러에서 실행 중인 소프트웨어를 디버깅할 수 없고 하드웨어 내부를 볼 수도 없기 때문에:

귀하의 카드는 전자 폐기물입니다. 믿을 수 없는 데이터 저장 매체는 없는 것보다 더 나쁘기 때문에 "가짜인 것 같아요"라고 말하면 이는 기본적으로 분명합니다.

답변2

먼저 컴퓨터를 다시 시작하고 작동하는 SD 카드(SD 카드 2)와 SD 카드 리더(카드 리더 2)를 준비하세요. SD 카드 2를 두 개의 카드 리더기에 넣고 카드 리더기가 정상인지 확인하십시오. SD 카드 1(불량 카드)을 카드 리더 2에 넣고 제대로 작동하는지 확인하세요.

이제 SD 카드 1에 무슨 일이 일어나고 있는지 디버깅하기 위해 Wireshark를 사용할 수 있습니다. SD 카드 리더는 일반적으로 USB를 통해 연결됩니다. 마이크로 SD 카드 리더가 연결된 USB 플래시 드라이브가 있습니다. 노트북과 데스크톱 컴퓨터용 카드 리더는 일반적으로 USB를 통해 연결됩니다.

루트 사용자로 실행:

modprobe usbmon

그런 다음 Wireshark를 시작하십시오. 캡처할 usbmon* 인터페이스가 표시됩니다. 솔직히 올바른 것을 쉽게 식별하는 방법을 모르겠습니다. 하지만 열 수는 있습니다. SD 카드를 삽입하지 않으면 트래픽이 없어야 하며, 삽입하면 트래픽이 표시되어야 합니다. 어쩌면 여기 누군가가 올바른 인터페이스를 더 쉽게 식별하는 방법을 알고 있을 수도 있습니다.

이제 정확히 무슨 일이 일어나고 있는지, 왜 SD 카드가 크기를 0으로 보고하는지 확인할 수 있습니다.

또한 SD 카드와 통신할 때 다양한 프로토콜을 사용할 수 있습니다. 다양한 프로토콜을 시도해 볼 수 있습니다. 바라보다이 비디오.

관련 정보