USB 전원 차단 방지


92

쓰기 방지 된 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. 우분투 소프트웨어 센터의 여러 도구 로이 문제를 해결하려고했습니다.
  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

7
쓰기 방지로 인해 형식을 지정할 수 없습니다.
멍청한 놈

2
@micha-어떤 종류의 USB 장치인지-분명히 하드웨어 스위치가 있는지 확인 했습니까? 마운트하려고하면 오류가 있습니까? sudo mount /dev/sdb1 -v?
fossfreedom

1
충분히 공정하다. efsck를 실행 하거나 Ubuntu의 디스크 유틸리티 를 사용 하여 플래시 디스크의 상태를 확인 했습니까? 제대로 작동했다가 갑자기 작동을 멈 추면 하드웨어 고장 일 수 있습니다.
kingmilo

1
@kingmilo e2fsck:Bad magic number in super-block while trying to open /dev/sdb1 SuperBlock is not readable.
멍청한 놈

1
@micha-아주 잘, 여전히 불행히도 결함이 없다는 것을 의미하지는 않습니다. 실제로 다른 결함 단계에서 스토리지 디바이스가 결함이있는 경우 스토리지 디바이스가 정상적으로 작동하는 것처럼 보입니다. 나는이 질문에 대한 모든 활동으로 드라이브를 교체하기 위해 작은 기부를 요청해야한다고 생각합니다. 😜
kingmilo

답변:


81

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

sudo hdparm -r0 /dev/sdb

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

희망이 도움이됩니다.


너는 나의 영웅이야. 이 마술 마술 마술 명령 후에 무슨 일이 있었는지 어디서 알 수 있습니까?
Marcos Modenesi

3
당신은 여기에 명령을 입력하여 설명> 찾을 수 있습니다 explainshell.com을
bagustris

75
그것은 보여 readonly = 0 (off)주지만 여전히 쓰거나 포맷 할 수 없습니다.
shyammakwana.me

1
@ OP 나는 당신과 동일했다 : sdxc 카드는 컴퓨터가 무엇이든 읽기 전용으로 마운트; "0-off"로 hdparm -r잠금을 해제 한 후 "1-on"을 표시 r0하지만 어쨌든 읽기 전용으로 마운트하십시오. 그러나 SanDisk sd 카드를 다른 어댑터에 마운트하면 rw를 마운트해야합니다. 내 microSD-to-SD 어댑터 중 두 개가 두 커넥터 사이에 핀이 부러졌습니다. 그리고이 두 가지는 내가 무엇을 하든지 읽기 전용으로 마운트됩니다. @Angel_Genchev에게 Kuddos는 대답이 가장 많은 명령을 가지고 있습니다.
tuk0z

2
@lliseil 카드에 삽입 된 카드, 일반적으로 카드의 탭을 통해 판독기의 쓰기 방지 스위치를 눌렀을 가능성이 있지만 스위치 (탭이 아님)가 구부러지고 멈출 수 있습니다. 카드의 잠금 탭과 물리적으로 접촉하는 쓰기 방지 스위치 핀을 잘라서 SD 카드 판독기를 고정 할 수 있습니다. 판독기의 스위치가 열려 있으면 쓰기 방지 기능이 해제되어 있고, 카드의 탭을 눌러 닫으면 쓰기 방지 기능이 켜져 있습니다. 스위치 금속 암 중 하나 또는 둘 다를 제거하면 판독기의 쓰기 방지 기능이 영구적으로 비활성화됩니다.
Hydranix

31

귀하의 질문을 조사한 후에는 이것이 알려진 이유없이 본질적으로 "폐쇄"될 특정 브랜드의 USB 플래시 드라이브 (일부 삼성, Kingston 모델)에서는 드문 일이 아닙니다. 사람들은 그것들을 열고 두 번의 리드 (점 박한 스위치에서 나온 것일까?)를 아무 소용이 없었습니다. 여전히이 드라이브가 있고 보증 기간이 남아있는 경우, 반품하고 교체품을 받으십시오.

나는 당신에게 나쁜 소식을 나누는 것을 싫어한다. 그러나 나는 내가 읽은 모든 것이 하드웨어 고장을 지적하기 때문에이 상황에서 운이 좋지 않은 것처럼 보인다.

2016 년 5 월 27 일 편집 : 최근에 플래시 드라이브가 벗겨지는 문제가 개인적으로 발생했습니다. 필자의 경우 이것은 Corsair Flash Voyager 128GB였습니다. 여기에 언급 된 증상이 나타나지 않았지만 때때로 마운트되지 않아 "실리콘 파워"장치로 나타납니다. 드라이브가 불량 섹터를 많이 발생시켜 진단 / 프로그래밍 모드로 전환 한 결과입니다. 이것은 가장 인기있는 답변 중 하나이며 "플래시 드라이브 고장"범주에 속하므로 참조 용으로 여기에 포함시킬 것이라고 생각했습니다.


5
@admins : i이 유형의 답변이 허용되는지 여부를 알고 싶습니다 :)
Tachyons

7
@AboobackerMk 답이면 답입니다. :)
jrg

4
@Tachyons "이러한 유형의 답변이 허용되는지 여부" 다른 사람들의 질문이나 답변을 지속적으로 신뢰하지 않으려 고 노력하는 stackexchange 사람들은 무엇입니까? 이 답변은 분명히 유효한 답변입니다. jrg가 말한 이유 때문입니다.
GoProCameraByGoPro

3 년 전의 의견 인 @GoProCameraByGoPro, 내 관심사는 답변의 품질에 관한 것이 아닙니다. jrg는 이미 내 질문에 대답했습니다 :-)
Tachyons

@Tachyons 나는 문제가있는 stackexchange에서 pretension을 호출하기 위해 최선을 다하고 있습니다. 내가 데이터를 가지고 있다면 나는 그것을하는 사람들의 인구 통계 경향을 볼 것이다. 아마 그것을 무시할 수 있지만, 지금은 내가 볼 때 그들에게 질문을해야 할 것이다.
GoProCameraByGoPro

21

fdisk -l드라이브 를 찾는 것, 즉 / dev / sdc1

지금

umount /dev/sdc1

마지막으로 플래시 드라이브를 다시 포맷하십시오

sudo mkfs -t vfat /dev/sdc1

나는 이것을 빠르고 쉽게 발견했다. 포맷을 시도하기 전에 드라이브 마운트를 해제하십시오.


2
sudo mkfs -t vfat / dev / sdc1> 대부분의 블로그는 이것을 말하지만, 사람들은 작동하지 않는다고 말합니다.
One Zero

8
마운트 해제 ...하지만mkfs.vfat 3.0.9 (31 Jan 2010) mkfs.vfat: unable to open /dev/sdb1
멍청한 놈

그것은 나를 위해 일했습니다 .-I를 사용하여 하나의 큰 파티션으로 만들고 / dev / sdc1 대신 / dev / sdc를 사용해야했습니다.
mchid

나는 다른 모든 방법을 시도했지만 ( hdparm -r0, blockdev --setrw, remount,rw) 이것을 제외하고는 아무것도 문제를 해결하지 못했습니다!
Iman Mirzadeh

1
그것은 말한다mkfs.vfat: unable to open /dev/sdc: Read-only file system
Shayan

14

엔젤의 대답은 좋지만 실제 명령은 그렇게 쉽지 않았습니다. 작동 방식은 다음과 같습니다. 카드를 꽂습니다 (내 수동 쓰기 방지 스위치가있는 SD 카드이지만 스위치가 꺼져 있고 Windows 시스템에서 쓸 수 있음). 우분투는 자동으로 / 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

여전히 읽기 전용이라고 불평합니다. 마운트 후 AND 이전에이 플래그를 변경해야하는 이유를 모르겠지만 이것이 유일한 방법입니다. 다시 쓰기 가능하도록 설정하고 같은 위치에 다시 마운트하십시오.

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

이제 일반 사용자로 디스크에 쓸 수 있습니다. 실제로 실패하는 경우를 대비하여 매우주의를 기울이고 있지만 그 명령으로 내가하고있는 일을 마칠 수있었습니다.


참고 : 내 카드가 실제로 실패했습니다 (우분투는 읽기 전용으로 마운트하지만 카메라는 행복하게 기록합니다). 몇 달 후 파일이 손상되었으므로 이것이 작동하는 동안 조심하십시오!
Andrew lorien

stpes를 가져 오려고 시도했습니다 .... # sudo mount -o uid = 1000 / dev / sdc1 / mnt / 읽기 전용으로 '/ dev / sdc1'만 열 수 있습니다 디스크에 부정한 파일 시스템 (0, 0)이 있습니다. 파일 시스템이 Windows에서 안전하게 닫히지 않았습니다. 고정.
Ashish Karpe

1
그 ... 나를 위해 일하지 않으며, 위의 다른 어떤 것도
피에르

1
이것은 많은 솔루션을 시도한 후에 작동했습니다. 감사합니다 @andrewlorien
Abk

6

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

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

1) USB 장치를 연결하고 lsusb예를 들어 :

$ lsusb
Bus 002 Device 012: ID 0781:5583 SanDisk Corp. 

2) 콜론 사이의 두 코드 ( idVendoridProduct)를 기록해 두십시오 . USB 장치를 분리하십시오.

3) usb_storage커널 모듈을 제거하십시오 (모듈로 컴파일되었다고 가정)

$ sudo modprobe -r $(lsmod | sed -n 's:,: :g ; s,^usb_storage[ 0-9]*,,p') usb_storage

4) 이제 장치의 쓰기 전용 플래그 감지를 무시하기 위해 쿼크 모드 설정을 사용하여 모듈을 다시 넣습니다.

에서 소스 / 드라이버 / USB / 저장 / usb.c 번호 L572 v4.19에서 가져온 우리가 찾고있는 쿼크 모드 설정은 것을 볼 수 있습니다 w. 커널 모듈을 다시로드하는 방법은 다음과 같습니다.

$ sudo modprobe usb_storage quirks=0781:5583:w

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

5) USB 저장 장치를 다시 연결하십시오. 이제 dmesg를 통해 이것이 작동하는지 확인할 수 있습니다.

전에: 깨진 쓰기 만

그리고 후에 : 읽기 / 쓰기 작업

또한 mount 명령을 실행하면 다음을 볼 수 있습니다.

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

이제 디스크에서 즉시 물건을 꺼내십시오. 실패합니다.


이 답변에 감사드립니다. 쓰기 방지 된 것으로 보이는 USB 리더의 컴팩트 플래시 카드에 문제가 있었으며 이것이 해결 한 유일한 해결책입니다. 이상한 점은 다른 CF 카드가 제대로 작동한다는 것입니다.
njh

1

글쎄, 이것은 약간의 혼란입니다.

나는 여기에서 다른 곳에서 모든 것을 시도했지만 아무것도 효과가 없었습니다 .

친구의 Windows 랩톱에서 포맷하면 이제 제대로 작동합니다. FFS!

한숨 .... (지금 Mint 데스크톱의 Win 7 VM에서 문제를 해결할 수 있었을까요?).


-1

메모리 스틱을 삽입하고 gparted를 시작하십시오. 오른쪽 상단의 버튼을 통해 선택하십시오. 메모리 스틱을 검사하고 있다면 분명해야합니다 (크기는 좋은 실마리입니다). 파티션-> 마운트 해제를 선택하십시오.

상단의 'Device'를 선택한 다음 'Create Partition Table'을 선택하고 기본값 인 msdos를 사용하십시오.

이제 새 파티션을 만들고 f32로 포맷 할 수 있습니다. 당신이 할 수 없다면, 아마도 흉상 일 것입니다.

HTH


6
쓰기 방지로 인해 파티션을 편집 할 수 없습니다.
noob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.