Salut à tous!

Un ami m’a confié une clef USB d’une contenance appréciable (64 GiO) formatée en FAT 32. Suite à une erreur de manipulation physique – c’est-à-dire qu’il a déconnecté la clef de son téléviseur sans faire attention qu’une écriture était en cours –, elle est désormais bloqué en lecture seule. Je lui ai dit d’arrêter de regarder la télévision, c’est mauvais pour la santé mentale, mais je voudrais tout de même voir si j’arrive à déverrouiller la protection en écriture. J’ai bien tenté la commande suivante :
# hdparm -r0 /dev/sdi

/dev/sdj:
 setting readonly to 0 (off)
 readonly      =  0 (off)
# hdparm -r0 /dev/sdi1

/dev/sdj1:
 setting readonly to 0 (off)
 readonly      =  0 (off)
Cependant, la protection en écriture persiste :
$ touch test.txt
touch: impossible de faire un touch « test.txt »: Système de fichiers accessible en lecture seulement
En fait, je ne peux même pas formater la clef – dans la mesure du possible, je préfèrerais conserver les données, mais il m’a donné l’autorisation de les supprimer au besoin :
# umount /dev/sdi1
# mkfs.vfat -F 32 -n 3067-292F /dev/sdi1 
mkfs.fat 3.0.28 (2015-05-16)
mkfs.vfat: unable to open /dev/sdi1: Read-only file system
Même en tentant de forcer le montage avec les droits d’écriture, le périphérique reste en lecture seule :
# mount -t vfat /dev/sdi1 /run/media/yoann/3067-292F -o uid=1000,gid=1000,utf8,dmask=027,fmask=137
mount: /dev/sdi1 est protégé en écriture, sera monté en lecture seule
J’ai cherché des informations avec Hdparm, voici ce que j’obtiens :
# hdparm -I /dev/sdi

/dev/sdi:
SG_IO: bad/missing sense data, sb[]:  f0 00 05 00 00 00 00 14 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Unknown device type:
	bits 15&14 of general configuration word 0 both set to 1.
Bon, j’ai bien un message d’erreur, mais je ne sais pas quoi en faire. Je le reconnais, je n’ai plus d’idée. Donc, si quelqu’un voit comment régler le problème, qu’il n’hésite pas.

À bientôt.

Le Farfadet Spatial
Tu as essayé de réparer avec testdisk?
Autrement en dernier recours avec perte des données, réécrire le mbr:
Démonter la partition puis,
dd if=/dev/zero of=/dev/sdx bs=446 count=1
Création d'une table de partition msdos, création d'une partition et formatage.
Tu peux donc récupérer les données si elle se monte en lecture seule ?

Essaye de forcer le démontage aussi, j'ai déjà eu un problème similaire mais moi elle ne voulait plus se monter à la base.
Avant toute opération risquée, je testerais un chkdsk à partir d'un windows. J'ai eu un incident sur une partition FAT32 une fois et ça l'a guérie.
Salut à tous!

Merci de vos réponses, ça m’a permis d’avancer.

En tout cas, je ne possède pas d’exemplaire de Microsoft Windows, ni de MacOS X, je ne peux donc rien faire nécessitant l’usage de ces systèmes. Néanmoins, mon ami m’a signifié avoir déjà confié la clef à un ingénieur informaticien qui a tenté de la réparer en utilisant Microsoft Windows et MacOS X, il a dû utiliser les utilitaires mentionnés pour ces systèmes.

J’ai donc lancé Testdisk, voici ce que donne son journal d’exécution (j’ai supprimé ce qui concernait les unités de mon ordinateur pour ne prendre que ce qui concerne la clef USB) :
Partition table type (auto): Intel
Media is opened in read-only.
Disk /dev/sdi - 62 GB / 58 GiB (RO) - SanDisk Cruzer Blade
Partition table type: Intel

Analyse Disk /dev/sdi - 62 GB / 58 GiB - CHS 59866 64 32 (RO)
Geometry from i386 MBR: head=255 sector=63
FAT32 at 0/1/1
Info: size boot_sector 122606816, partition 122606816
FAT1 : 34-29952
FAT2 : 29953-59871
start_rootdir : 59872 root cluster : 2
Data : 59872-122606815
sectors : 122606816
cluster_size : 32
no_of_cluster : 3829592 (2 - 3829593)
fat_length 29919 calculated 29919
heads/cylinder 255 (FAT) != 64 (HD)
sect/track 63 (FAT) != 32 (HD)
set_FAT_info: name from BS used
get_geometry_from_list_part_aux head=64 nbr=1
get_geometry_from_list_part_aux head=8 nbr=2
get_geometry_from_list_part_aux head=16 nbr=1
get_geometry_from_list_part_aux head=32 nbr=1
get_geometry_from_list_part_aux head=64 nbr=1
get_geometry_from_list_part_aux head=128 nbr=1
get_geometry_from_list_part_aux head=240 nbr=1
get_geometry_from_list_part_aux head=255 nbr=1
Current partition structure:
Warning: number of heads/cylinder mismatches 255 (FAT) != 64 (HD)
Warning: number of sectors per track mismatches 63 (FAT) != 32 (HD)
 1 P FAT32 LBA                0   1  1 59866  39 32  122606816 [NO NAME]

Warning: Bad starting sector (CHS and LBA don't match)
No partition is bootable

search_part()
Disk /dev/sdi - 62 GB / 58 GiB - CHS 59866 64 32 (RO)
FAT32 at 0/1/1
FAT1 : 34-29952
FAT2 : 29953-59871
start_rootdir : 59872 root cluster : 2
Data : 59872-122606815
sectors : 122606816
cluster_size : 32
no_of_cluster : 3829592 (2 - 3829593)
fat_length 29919 calculated 29919
heads/cylinder 255 (FAT) != 64 (HD)
sect/track 63 (FAT) != 32 (HD)
set_FAT_info: name from BS used

FAT32 at 0/1/1
     FAT32 LBA                0   1  1 59866  39 32  122606816 [NO NAME]
     FAT32, blocksize=16384, 62 GB / 58 GiB
get_geometry_from_list_part_aux head=64 nbr=1
get_geometry_from_list_part_aux head=8 nbr=2
get_geometry_from_list_part_aux head=16 nbr=1
get_geometry_from_list_part_aux head=32 nbr=1
get_geometry_from_list_part_aux head=64 nbr=1
get_geometry_from_list_part_aux head=128 nbr=1
get_geometry_from_list_part_aux head=240 nbr=1
get_geometry_from_list_part_aux head=255 nbr=1
Warning: the current number of heads per cylinder is 64 but the correct value may be 8.

Results
   * FAT32 LBA                0   1  1 59866  63 32  122607584 [NO NAME]
     FAT32, blocksize=16384, 62 GB / 58 GiB

Hint for advanced users. dmsetup may be used if you prefer to avoid to rewrite the partition table for the moment:
echo "0 122607584 linear /dev/sdi 32" | dmsetup create test0

interface_write()
 1 P FAT32 LBA                0   1  1 59866  63 32  122607584 [NO NAME]

search_part()
Disk /dev/sdi - 62 GB / 58 GiB - CHS 59866 64 32 (RO)
FAT32 at 0/1/1
FAT1 : 34-29952
FAT2 : 29953-59871
start_rootdir : 59872 root cluster : 2
Data : 59872-122606815
sectors : 122606816
cluster_size : 32
no_of_cluster : 3829592 (2 - 3829593)
fat_length 29919 calculated 29919
heads/cylinder 255 (FAT) != 64 (HD)
sect/track 63 (FAT) != 32 (HD)
set_FAT_info: name from BS used

FAT32 at 0/1/1
     FAT32 LBA                0   1  1 59866  39 32  122606816 [NO NAME]
     FAT32, blocksize=16384, 62 GB / 58 GiB
FAT32 at 0/1/7
FAT1 : 34-29952
FAT2 : 29953-59871
start_rootdir : 59872 root cluster : 2
Data : 59872-122606815
sectors : 122606816
cluster_size : 32
no_of_cluster : 3829592 (2 - 3829593)
fat_length 29919 calculated 29919
heads/cylinder 255 (FAT) != 64 (HD)
sect/track 63 (FAT) != 32 (HD)
set_FAT_info: name from BS used

FAT32 at 0/1/7
     FAT32 LBA                0   1  1 59866  39 32  122606816 [NO NAME]
     FAT32, blocksize=16384, 62 GB / 58 GiB
BAD_RS LBA=1389382345 122302
check_FAT: can't read FAT boot sector
check_part_i386 failed for partition type 01
     FAT12                678409  22 10 889367  48 12  432042819
This partition ends after the disk limits. (start=1389382345, size=432042819, end=1821425163, disk end=122606848)
Disk /dev/sdi - 62 GB / 58 GiB - CHS 59866 64 32 (RO)
Check the harddisk size: HD jumpers settings, BIOS detection...
The harddisk (62 GB / 58 GiB) seems too small! (< 932 GB / 868 GiB)
The following partition can't be recovered:
     FAT12                678409  22 10 889367  48 12  432042819
get_geometry_from_list_part_aux head=64 nbr=1
get_geometry_from_list_part_aux head=8 nbr=2
get_geometry_from_list_part_aux head=16 nbr=1
get_geometry_from_list_part_aux head=32 nbr=1
get_geometry_from_list_part_aux head=64 nbr=1
get_geometry_from_list_part_aux head=128 nbr=1
get_geometry_from_list_part_aux head=240 nbr=1
get_geometry_from_list_part_aux head=255 nbr=1
Warning: the current number of heads per cylinder is 64 but the correct value may be 8.

Results
   * FAT32 LBA                0   1  1 59866  63 32  122607584 [NO NAME]
     FAT32, blocksize=16384, 62 GB / 58 GiB

Hint for advanced users. dmsetup may be used if you prefer to avoid to rewrite the partition table for the moment:
echo "0 122607584 linear /dev/sdi 32" | dmsetup create test0

interface_write()
 1 P FAT32 LBA                0   1  1 59866  63 32  122607584 [NO NAME]
write!

write_mbr_i386: starting...
file_nopwrite(7,1,buffer,0(0/0/1)) write refused
write_all_log_i386: starting...
No extended partition

Partition: Write error

Interface Advanced
Geometry from i386 MBR: head=255 sector=63
FAT32 at 0/1/1
Info: size boot_sector 122606816, partition 122606816
FAT1 : 34-29952
FAT2 : 29953-59871
start_rootdir : 59872 root cluster : 2
Data : 59872-122606815
sectors : 122606816
cluster_size : 32
no_of_cluster : 3829592 (2 - 3829593)
fat_length 29919 calculated 29919
heads/cylinder 255 (FAT) != 64 (HD)
sect/track 63 (FAT) != 32 (HD)
set_FAT_info: name from BS used
get_geometry_from_list_part_aux head=64 nbr=1
get_geometry_from_list_part_aux head=8 nbr=2
get_geometry_from_list_part_aux head=16 nbr=1
get_geometry_from_list_part_aux head=32 nbr=1
get_geometry_from_list_part_aux head=64 nbr=1
get_geometry_from_list_part_aux head=128 nbr=1
get_geometry_from_list_part_aux head=240 nbr=1
get_geometry_from_list_part_aux head=255 nbr=1
 1 P FAT32 LBA                0   1  1 59866  39 32  122606816 [NO NAME]
     FAT32, blocksize=16384, 62 GB / 58 GiB

TestDisk exited normally.
Il semble bien que le secteur initial soit défectueux et que ce soit ça qui pose problème. J’ai demandé à Testdisk de ré-écrire ce secteur, sans succès. Je vais sans doute opter pour la solution de Hechmi50, mais je voulais savoir si vous étiez d’accord avec mon diagnostic.

À bientôt.

Le Farfadet Spatial
cela paraît logique d'écraser le mbr puis avec tesdisk de récupérer sur la clé les fichiers et qui réécrira l'arborescence
Salut à tous!
antbel wrote: cela paraît logique d'écraser le mbr puis avec tesdisk de récupérer sur la clé les fichiers et qui réécrira l'arborescence
J’ai déjà essayé, mais Testdisk ne parviens pas à réécrire le MBR.

À bientôt.

Le Farfadet Spatial
en dernier recours :
dd if=/dev/zero of=/dev/sdi
Salut à tous!

Bon, décidément, il y a un problème :
$ umount /run/media/yoann/3067-292F

# dd if=/dev/zero of=/dev/sdi bs=446 count=1
dd: impossible d'ouvrir « /dev/sdi »: Système de fichiers accessible en lecture seulement
Je ne vois pas trop d’autre solution…

À bientôt.

Le Farfadet Spatial
Requiem æternam dona eis, Domine, et lux perpetua luceat eis.
Te decet hymnus Deus, in Sion, et tibi reddetur votum in Jerusalem.
Exaudi orationem meam; ad te omnis caro veniet.
Requiem æternam dona eis, Domine, et lux perpetua luceat eis.
Salut à tous!

Bon, très bien, il faut savoir arrêter l’acharnement thérapeutique et laisser partir. Je débranche le patient.

[video]youtube.com/watch?v=wawSCvuGj4o[/video]

Merci de votre aide, je passe le sujet en résolu.

À bientôt.

Le Farfadet Spatial
J'adore la traduction de Google traduc : il ne pense qu'au pognon ;

Requiem æternam dona eis

Donne-leur le repos éternel, Seigneur au lieu de : Eternal subvention de repos pour eux,

Ceci pour marquer [Résolu] il y a un onglet spécial que: seul, toi, tu peux activer
Salut à tous!
antbel wrote: Ceci pour marquer [Résolu] il y a un onglet spécial que: seul, toi, tu peux activer
Oui, je sais bien, ça fait un petit bout de temps que je viens par ici (et plus encore sur des forums). C’est juste un oubli de ma part. J’appuie immédiatement sur le bouton.

À bientôt.

Le Farfadet Spatial
As-tu essayé un low-level format de cette clé pour au moins la récupérer ?
J'en ai récupérées de cette manière à mon boulot. Évidement oublies ce qu'il y a dessus.
CS wrote:As-tu essayé un low-level format de cette clé pour au moins la récupérer ?
J'en ai récupérées de cette manière à mon boulot. Évidement oublies ce qu'il y a dessus.
As-tu essayé de lire les posts précédents ? Ou tu as fait un low-level format de ton écran ?
Tu devrais en faire un de ton caractère tranchant :hammer: