USB 쓰기 방지 끄기

USB 쓰기 방지 끄기

쓰기 금지된 USB가 있습니다.

dmesg | tail

[10098.126089] sd 7:0:0:0: [sdb] Write Protect is on
[10098.126098] sd 7:0:0:0: [sdb] Mode Sense: 23 00 80 00
[10098.126779] sd 7:0:0:0: [sdb] No Caching mode page present
[10098.126788] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[10098.131418] sd 7:0:0:0: [sdb] No Caching mode page present
[10098.131425] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[10098.133335]  sdb: sdb1
[10098.135509] sd 7:0:0:0: [sdb] No Caching mode page present
[10098.135515] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[10098.135521] sd 7:0:0:0: [sdb] Attached SCSI removable disk

쓰기 방지를 어떻게 끌 수 있나요?

내가 시도한 것

  1. 하드웨어 스위치가 있는지 확인했습니다. - 아니요
  2. Windows 및 Linux에서 포맷을 시도했습니다(터미널을 통해서도).
  3. 시도 fdisk|chmod
  4. Ubuntu 소프트웨어 센터의 여러 도구를 사용하여 이 문제를 해결하려고 했습니다.
  5. Google을 사용하여 이 문제에 대한 약 10,000개의 토론을 보았지만 결코 해결되지 않았습니다.

추가 정보

fsck -n /dev/sdb1

fsck from util-linux 2.19.1
dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
There are differences between boot sector and its backup.
Differences: (offset:original/backup)
  65:01/00
  Not automatically fixing this.
Free cluster summary wrong (968250 vs. really 911911)
  Auto-correcting.
Leaving file system unchanged.
/dev/sdb1: 50 files, 93653/1005564 clusters

fdisk -l

   Device  boot.   Start        End      Blocks   Id  System
/dev/sdb1            32     8060927     4030448    b  W95 FAT32

umount /dev/sdb1

mkfs -t vfat /dev/sdb1

mkfs.vfat 3.0.9 (31 Jan 2010)
mkfs.vfat: unable to open /dev/sdb1

답변1

디스크 장치의 쓰기 방지 기능을 끄려면 다음과 같이 낮은 수준의 시스템 유틸리티 hdparm을 사용합니다.

sudo apt-get install hdparm    
sudo hdparm -r0 /dev/sdb

여기서는 /dev/sdb우리가 작업 중인 물리적 디스크 장치라고 가정합니다. 장치에 읽기 전용으로 마운트된 파티션이 있는 경우 해당 파티션에 데이터를 쓰려면 읽기-쓰기로 다시 마운트해야 합니다.

도움이 되길 바랍니다.

답변2

귀하의 질문을 조사한 결과 이는 특정 브랜드의 USB 플래시 드라이브(일부 구형 Samsung, Kingston 모델)에서 발생하는 그다지 드문 문제가 아니며 알려진 이유 없이 본질적으로 "무작위"되는 것으로 나타났습니다. 사람들은 그것을 열고 두 개의 리드(아마 불안정한 스위치에서?)를 점프하려고 시도했지만 소용이 없었습니다. 이 드라이브가 아직 보증 기간 중이라면 반품하고 교체품을 받아보겠습니다.

나는 당신에게 나쁜 소식을 전하고 싶지 않습니다 =\ 그러나 내가 읽은 모든 내용은 하드웨어 오류를 지적하므로 이 상황에서는 당신에게 운이 없는 것 같습니다.

2016년 5월 27일 편집: 최근 플래시 드라이브가 벗겨지는 문제를 개인적으로 경험했습니다. 내 경우에는 Corsair Flash Voyager 128GB가 속도가 상당히 느려지기 시작했습니다. 여기에 언급된 증상은 표시되지 않았지만 가끔 마운트되지 않고 "실리콘 전원" 장치로 표시되는 경우가 있었습니다. 이는 드라이브에 대량의 불량 섹터가 발생하여 진단/프로그래밍 모드로 전환되었기 때문입니다. 이것은 내 가장 인기 있는 답변 중 하나이고 "실패한 플래시 드라이브" 범주에 속하므로 참조용으로 여기에 포함하겠다고 생각했습니다.

업데이트 2: Corsair Flash Voyager와 관련하여 RMA를 요청했지만 두 번째 제품도 같은 방식으로 실패했습니다. 문제는 실제로 기계적인 것으로 밝혀졌습니다. 슬라이딩 메커니즘은 PCB에 약간의 압력을 가하는 것으로 보입니다. 일반적으로 이로 인해 장치의 정상적인 수명에는 문제가 발생하지 않습니다. 그러나 이 특정 모델의 경우 납땜 접합이 약해 슬라이딩 동작으로 인한 압력이 악화되어 접합부에 산화가 발생하고 결국 고장이 발생한 것으로 보입니다. 또 다른 RMA를 수행하는 대신 직접 문제를 해결했습니다. 케이스를 열고 PCB에 약간의 흔들림 공간을 제공하기 위해 플라스틱 케이스 일부를 깎은 다음 NAND 칩을 리플로우하여 깨진 솔더 조인트를 수리했습니다. 현재까지 잘 작동하고 있습니다!

답변3

지금까지 제공된 답변 중 어느 것도 정확하지 않습니다.

실제로 작동하게 하려면 USB 문제 설정을 사용하여 읽기 전용임을 알리는 USB 디스크 감지를 무시할 수 있습니다. 작동 방식은 다음과 같습니다.

  1. USB 장치를 연결하고 다음 lsusb예를 수행하십시오.

    $ lsusb
    Bus 002 Device 012: ID 0781:5583 SanDisk Corp. 
    
  2. ID콜론 뒤와 사이에 있는 두 코드를 기록해 두세요 ( idVendor및 라고 함 idProduct). USB 장치를 분리하세요.

  3. 커널 모듈 제거 usb_storage(모듈로 컴파일되었다고 가정)

    $ sudo modprobe -r $(lsmod | sed -n 's:,: :g ; s,^usb_storage[ 0-9]*,,p') usb_storage
    
  4. 이제 장치의 쓰기 전용 플래그 감지를 무시하기 위해 쿼크 모드 설정을 사용하여 모듈을 다시 배치하겠습니다.

    에서소스/드라이버/usb/storage/usb.c#L572v4.19에서 가져온 것을 보면 우리가 찾고 있는 quirks 모드 설정이 이라는 것을 알 수 있습니다 w. 커널 모듈을 다시 로드하는 방법은 다음과 같습니다.

    $ sudo modprobe usb_storage quirks=0781:5583:w
    

    콜론 사이의 숫자를 위의 (1) 단계에서 본 숫자로 바꿉니다.

  5. dmesgUSB 저장 장치를 다시 연결합니다. 이제 이것이 작동했는지 확인할 수 있습니다 .

    전에: 깨진 쓰기 전용

    그리고 그 이후: 읽기/쓰기 작업 중

    또한 mount 명령을 실행하면 다음이 표시됩니다.

    /dev/sdb1 on /usb type ext4 (rw,relatime)
    

이제 즉시 디스크에서 물건을 꺼내세요. 작동하지 않습니다.

답변4

Angel의 대답은 좋지만 실제 명령은 나에게 그리 쉽지 않았습니다. 작동 방법은 다음과 같습니다. 카드를 연결합니다(내 카드는 수동 쓰기 방지 스위치가 있는 SD 카드이지만 스위치가 꺼져 있고 Windows 시스템에서 쓸 수 있습니다). Ubuntu는 /media/andrew/6AB0-1FD91에 자동으로 마운트했고 dmesg는 파티션이 /dev/sdb1임을 보여주었습니다.

마운트 해제하고 쓰기 가능하게 설정

sudo umount /dev/sdb1
sudo hdparm -r0 /dev/sdb

새 마운트 지점을 생성하고 거기에 마운트합니다(/etc/passwd의 사용자 ID는 1000입니다).

sudo mkdir /media/andrew/temp
sudo mount -o uid=1000 /dev/sdb1 /media/andrew/temp

여전히 읽기 전용이라고 불평할 것입니다. 마운트 전과 마운트 후에 이 플래그를 왜 변경해야 했는지는 모르겠지만 이것이 나에게 효과가 있었던 유일한 방법이었습니다. 다시 쓰기 가능으로 설정하고 같은 위치에 다시 마운트하세요.

sudo hdparm -r0 /dev/sdb1
sudo mount -o remount,rw /dev/sdb1

이제 일반 사용자로 디스크에 쓸 수 있습니다. 실제로 실패할 경우를 대비해 매우 조심하고 있지만 이러한 명령을 통해 내가 하던 작업을 완료할 수 있었습니다.

관련 정보