글쎄, 여기서 무슨 일이 일어나고 있는지 전혀 모르겠습니다. 처음에는 vfat 파티션이 완전히 삭제되지 않았다는 것을 나타내는 일부 플래그가 설정되어 있어서 마운트할 수 없었던 문제라고 생각했습니다. 이 문제를 해결할 수 있는 방법이 있었던 것으로 기억하는데 지금은 찾을 수 없습니다. 어쨌든, 나는 이것이 여기서 문제가 아니라고 생각합니다. 나는 운이 없어서 며칠 동안 검색해 왔습니다.
이것은 내 카메라 중 하나에 사용하는 SDHC 카드(32GB)입니다(동일한 USB 어댑터를 사용하는 다른 카메라용 32GB 카드가 하나 더 있고 Linux에서는 잘 작동합니다). 문제 없이 카메라에서 가져올 수 있습니다. Linux에서 어댑터+카드를 연결하면 Konqueror에 장치가 나타나지 않습니다. 그래서 나는 이것을 시도했습니다 :
# mount /dev/sdd /d/try/2
mount: you must specify the filesystem type
# mount -t vfat /dev/sdd /media/sdcard
mount: wrong fs type, bad option, bad superblock on /dev/sdd,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
fdisk
설명하다
fdisk -l /dev/sdd
Disk /dev/sdd: 31.9 GB, 31914983424 bytes
255 heads, 63 sectors/track, 3880 cylinders, total 62333952 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
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdd1 8192 62333951 31162880 c W95 FAT32 (LBA)
하지만
# ls /dev/sdd*
/dev/sdd
따라서 /dev/sddX 장치가 fdisk
존재한다고 하더라도 목록에 표시되지 않습니다!
gparted
/dev/sdd1 파티션은 문제 없이 표시됩니다(그러나 이전에는 4MB의 여유 공간이 있었습니다). 그래서 나는 여기서 뭔가 다른 일이 일어나고 있다고 의심합니다. 이 여유 공간이 문제의 원인일 가능성이 있습니까? 왜 이런 일이 발생합니까? 4MB를 모두 사용하도록 파티션 크기를 조정하면(도대체 어떻게 이런 일이 발생했습니까?) 이러한 모든 문제를 해결할 수 있습니까? 이로 인해 이제 카메라에서 데이터를 읽을 수 없게 됩니까? 아니면 더 나쁜 것은 복구할 수 없을 정도로 손상된 것입니까? 나는 이전에 Linux 내에서 이 카드에 액세스할 수 있었다고 확신합니다. 왜냐하면 일부 파일을 이동한 것 같기 때문입니다(다른 카메라의 일부 사진이 포함되어 있음). 그래서 이상하게 지금은 접속이 안되네요.
기본적으로 이 문제를 해결하는 방법(가능한 한 비파괴적으로)과 문제의 원인이 무엇인지(향후에 이를 방지하기 위해) 알고 싶습니다. 참고로 dmesg
출력물을 포함시켰습니다 .
# dmesg|tail -30
[3783978.490032] usb 1-5: new high-speed USB device number 44 using ehci_hcd
[3783978.608523] usb 1-5: New USB device found, idVendor=05e3, idProduct=0727
[3783978.608528] usb 1-5: New USB device strings: Mfr=3, Product=4, SerialNumber=2
[3783978.608530] usb 1-5: Product: USB Storage
[3783978.608531] usb 1-5: Manufacturer: Generic
[3783978.608533] usb 1-5: SerialNumber: 000000000207
[3783978.609406] scsi29 : usb-storage 1-5:1.0
[3783979.610445] scsi 29:0:0:0: Direct-Access Generic STORAGE DEVICE 0207 PQ: 0 ANSI: 0
[3783979.613096] sd 29:0:0:0: Attached scsi generic sg3 type 0
[3783979.773160] sd 29:0:0:0: [sdd] 62333952 512-byte logical blocks: (31.9 GB/29.7 GiB)
[3783979.774295] sd 29:0:0:0: [sdd] Write Protect is off
[3783979.774300] sd 29:0:0:0: [sdd] Mode Sense: 0b 00 00 08
[3783979.775406] sd 29:0:0:0: [sdd] No Caching mode page present
[3783979.775410] sd 29:0:0:0: [sdd] Assuming drive cache: write through
[3783979.779038] sd 29:0:0:0: [sdd] No Caching mode page present
[3783979.779048] sd 29:0:0:0: [sdd] Assuming drive cache: write through
[3783981.471143] sd 29:0:0:0: [sdd] Unhandled sense code
[3783981.471147] sd 29:0:0:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[3783981.471150] sd 29:0:0:0: [sdd] Sense Key : Medium Error [current]
[3783981.471153] sd 29:0:0:0: [sdd] Add. Sense: Data phase CRC error detected
[3783981.471157] sd 29:0:0:0: [sdd] CDB: Read(10): 28 00 00 00 00 00 00 00 08 00
[3783981.471162] end_request: I/O error, dev sdd, sector 0
[3783981.471166] Buffer I/O error on device sdd, logical block 0
[3783981.482542] Dev sdd: unable to read RDB block 0
[3783981.482548] sdd: unable to read partition table
[3783981.486264] sd 29:0:0:0: [sdd] No Caching mode page present
[3783981.486267] sd 29:0:0:0: [sdd] Assuming drive cache: write through
[3783981.486269] sd 29:0:0:0: [sdd] Attached SCSI removable disk
답변1
약간의 진전이 있습니다(적절한 최종 솔루션을 찾으면 이 답변을 편집하겠습니다). @INDIVIDUAL-IT의 명령을 사용하여 장치의 전체 백업을 수행한 후 dd
(bs=1M을 사용하면 전송 속도가 매우 느려질 것 같습니다). 백업파일을 설치할 수 없지만
# dd if=backup.img of=backup-skip.img bs=1M skip=4
설치 가능한 파일을 생성합니다(백업 건너뛰기.img), 내가 아는 한 모든 파일이 거기에 있고 액세스할 수 있습니다. (업데이트: 이 제거된 이미지를 SD 카드에 다시 쓰면 Linux가 자동으로 이를 감지하고 마운트하지만 카메라에서는 작동하지 않습니다.)
다시 로드 gparted
하고 파티션 앞의 4MB의 빈 공간을 삭제하려고 시도했지만 불가능했고 파티션이 모든 공간을 사용하도록 허용하지 않았으며 최소 1MB는 삭제할 수 없었습니다(모든 옵션을 시도했습니다)조정, 그러나 주사위는 없습니다).
호기심에 lba
sdd1 파티션을 선택 취소했습니다. 이 변경 사항을 확인하라는 메시지가 표시되지 않았고 장치에 변경 사항을 적용하기 위해 아무 곳이나 클릭하지도 않았지만 어댑터의 LED가 깜박이는 것을 보고 갑자기 내 SD 카드 항목이 Konqueror에 나타났습니다. USB 장치를 마운트 해제하고 플러그를 뽑았다가 다시 연결했지만 SD 카드가 자동으로 감지되지 않아 1단계로 돌아갔습니다. 이제 장치에서 활성화되지 않았다고 gparted
표시됩니다 . lba
이상한.
파티션이 감지되었습니다!
이상한 간격 효과로 인해 안개가 기억에서 조금 사라져서 다음을 실행했습니다.
# partprobe
갑자기 /dev/sdd1이 생성되고 장치가 Konqueror에 나타납니다! 따라서 아직 최종 해결책은 아니지만(매번 루트로 partprobe를 실행해야 하기 때문에) 적어도 내 파일에 액세스할 수는 있습니다. 영구적인 해결책을 찾을 때 이것이 누군가에게 도움이 되기를 바랍니다.
답변2
귀하의 파티션 테이블은 나에게 약간 혼란스러운 것 같습니다.
- dd:를 사용하면 카드 전체를 백업할 수 있습니다
dd if=/dev/sdd of=backup.img bs=1M
. dd가 SD 카드를 복사할 수 없으면 하드웨어가 손상되었을 가능성이 있습니다. 아직 행운을 시험해 볼 수 있어요구조하다 - 사용테스트 디스크파티션 테이블을 복원해 보십시오. backup.img 파일을 복원하고 백업 파일도 백업하세요. 상황을 악화시키지 않도록 하기 위해서입니다.
- 처음 사용된 4MB를 제거하세요.
dd if=backup.img of=backup_striped bs=1M skip=4
- 복구를 통해 모든 파일이 포함된 설치 가능한 파일이 제공되고 fsck에서 테스트 시 오류가 발생하지 않으면 복구된 파일을 SD 카드에 다시 쓸 수 있습니다.
dd if=backup_striped of=/dev/sdd bs=1M
올바른 드라이브에 쓰고 있는지 확인하세요. - 파티션 복구가 실패하면 TestDisk를 사용하여 파일을 하나씩 복구할 수 있습니다.파라마운트 또는 메스
TestDisk를 사용하여 다음을 수행할 수 있습니다.
답변3
로그에 따르면 커널이 카드를 감지한 후 즉시 파티션 테이블을 읽으려고 하면 하드웨어에서 오류가 발생합니다. 그러나 partprobe
나중에 호출하면 커널은 파티션 테이블을 잘 읽을 수 있습니다. 하드웨어 오류나 드라이버 오류로 인해 초기 읽기가 실패할 수 있는 것 같습니다. SD 카드 또는 카드 리더 펌웨어가 초기화를 완료하는 데 시간이 걸리고 드라이버가 조기에 읽으려고 시도하는 것일 수 있습니다. 하드웨어를 변경하지 않고 해결 방법은 드라이버에 지연을 도입하는 것입니다.
해결 방법으로 다음을 수행할 수 있습니다.udev 규칙 추가장치를 일치시키고 스크립트를 실행하십시오
#!/bin/sh
sleep 1
partprobe "$DEVNAME"