105 votes

L'USB désactive la protection en écriture

J'ai une clé USB qui est protégée en écriture :

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

Comment puis-je désactiver la protection contre l'écriture ?

Ce que j'ai essayé

  1. Vérifié s'il y a un interrupteur matériel - non
  2. J'ai essayé de le formater sous Windows et sous Linux (via un terminal également).
  3. Essayé fdisk | chmod
  4. J'ai essayé de réparer ce problème avec plusieurs outils du centre logiciel Ubuntu.
  5. J'ai utilisé Google et j'ai vu environ 10 000 discussions sur ce problème, mais elles n'ont jamais été résolues.

Informations complémentaires

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

96voto

PhotogenicDonkey Points 1

Pour désactiver la protection en écriture d'un disque, nous utilisons l'utilitaire système de bas niveau hdparm comme ceci :

sudo hdparm -r0 /dev/sdb

où nous supposons que /dev/sdb est le périphérique de disque physique sur lequel nous travaillons. Si le périphérique possède des partitions qui sont montées en lecture seule, vous devez les remonter en lecture-écriture pour pouvoir y écrire des données.

J'espère que cela vous aidera.

37voto

Chuck R Points 4758

Après avoir fait des recherches sur votre question, il apparaît que ce problème n'est pas si rare avec certaines marques de clés USB (certaines anciennes Samsung, un modèle Kingston) qui se " cassent la figure " sans raison connue. Les gens ont essayé de les ouvrir et de sauter deux fils (peut-être à partir d'un interrupteur défectueux ?), sans succès. Si vous avez toujours ce disque et qu'il est encore sous garantie, je le renverrais et obtiendrais un remplacement.

Je déteste vous annoncer la mauvaise nouvelle =\ mais il semble que vous n'ayez pas de chance dans cette situation car tout ce que j'ai lu indique une défaillance matérielle.

Edition du 27/05/2016 : J'ai rencontré un problème personnellement avec une clé USB s'écaillant sur moi récemment. Dans mon cas, il s'agissait d'une Corsair Flash Voyager 128GB qui a commencé à ralentir assez drastiquement sur moi. Bien qu'elle ne présentait pas les symptômes mentionnés ici, elle ne se montait pas toujours et apparaissait comme un périphérique "Silicon Power". Cela était dû au fait que le disque avait accumulé un grand nombre de secteurs défectueux et qu'il était passé en mode diagnostic/programmation. Comme il s'agit de l'une de mes réponses les plus populaires et qu'elle entre également dans la catégorie des "lecteurs flash défaillants", je me suis dit que je devais l'inclure ici à titre de référence.

Mise à jour 2 : En ce qui concerne le Corsair Flash Voyager, j'ai envoyé le mien pour un RMA, seulement pour avoir mon deuxième échec sur moi de la même manière. Le problème s'est avéré être mécanique. Le mécanisme de glissement semble exercer une petite pression sur le PCB. Normalement, cela n'aurait pas causé de problème dans la durée de vie normale de l'appareil. Mais pour ce modèle particulier, il semble que les joints de soudure étaient faibles et que la pression exercée par le mécanisme de glissement les a exacerbés, entraînant une oxydation dans le joint fissuré et une défaillance éventuelle. Plutôt que de faire un autre RMA, j'ai pris les choses en main. J'ai ouvert le boîtier, j'ai rasé une partie de la coque en plastique pour donner un peu d'espace au PCB et j'ai refondu la puce NAND pour réparer les joints de soudure cassés. Il fonctionne parfaitement à ce jour !

27voto

Ringtail Points 15655

En utilisant fdisk -l localisez le lecteur, c'est-à-dire : /dev/sdc1

maintenant

umount /dev/sdc1

Enfin, reformatez la clé USB

sudo mkfs -t vfat /dev/sdc1

J'ai trouvé cela rapide et facile. Veillez à démonter le disque avant d'essayer de le formater.

24voto

arrietty7 Points 21

La réponse d'Angel est bonne, mais les commandes réelles n'étaient pas si faciles pour moi. Voici ce qui a fonctionné : Branchez la carte (la mienne est une carte SD avec un interrupteur de protection en écriture manuelle, mais l'interrupteur est désactivé et il est possible d'écrire sur une machine Windows). Ubuntu la monte automatiquement sur /media/andrew/6AB0-1FD91, et dmesg montre que la partition est /dev/sdb1.

Démontez-le, et rendez-le accessible en écriture.

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

Créez un nouveau point de montage et montez-le là (mon userID de /etc/passwd est 1000)

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

il se plaindra toujours que c'est en lecture seule. Je ne sais pas pourquoi j'ai dû changer ce drapeau avant ET après le montage, mais c'est la seule façon dont cela a fonctionné pour moi. Remettez-le en écriture, et remontez-le au même endroit.

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

Maintenant je peux écrire sur le disque comme mon utilisateur normal. Je fais très attention avec ça au cas où ça échouerait vraiment, mais ces commandes m'ont permis de finir ce que je faisais.

21voto

Teddy Points 6068

Aucune des réponses fournies jusqu'à présent n'est correcte.

Pour que cela fonctionne réellement, vous pouvez ignorer la détection du disque USB annonçant qu'il est en lecture seule avec un paramètre USB quirks. Voici comment cela fonctionne.

1) Branchez le périphérique USB et faites une lsusb par exemple :

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

2) Prenez note de ces deux codes entre les deux-points (appelés les idVendor y idProduct ). Débranchez le périphérique USB.

3) Retirer le usb_storage module du noyau (en supposant qu'il soit compilé comme un module)

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

4) Maintenant, nous allons remettre le module en place en utilisant un paramètre du mode quirks pour passer outre la détection de l'indicateur d'écriture seule du périphérique.

から source/pilotes/usb/storage/usb.c#L572 extrait de la v4.19, vous pouvez voir que le paramètre du mode bizarrerie que nous recherchons est w . Voici comment nous allons recharger le module du noyau :

$ sudo modprobe usb_storage quirks=0781:5583:w

Remplacez les chiffres entre les deux points par ceux que vous avez vus à l'étape (1) ci-dessus.

5) rebranchez le périphérique de stockage usb. Nous pouvons maintenant confirmer avec dmesg que cela a fonctionné :

Avant : broken write only

Et après : working read/write

Aussi, après avoir lancé une commande mount, vous verrez :

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

Maintenant, allez chercher vos affaires sur ce disque immédiatement, il est défaillant.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X