Carte SD (efat) est en écriture seulement

Bonjour,
une carte microSD neuve (montée dans un support SD) est en lecture seule.
Elle est formatée efat.
Le curseur «lock» de la pseudo carte SD est en position «unlock»

ls -l /media/eric/ affiche les permissions suivantes:
drwxr-xr-x 2 eric eric 131072 4 nov. 16:39 0123-4567

# mount -o remount,rw /media/eric/0123-4567/
mount: /media/eric/0123-4567: impossible de remonter /dev/mmcblk0p1 en lecture/écriture, est protégé en écriture.

et, bien sur, toute opération en écriture est impossible.

Comment se sortir de cette impasse?

Bonjour,

Est-ce que la commande suivante permet de la passer en écriture?

hdparm -r0 /dev/mmcblk0p1

pl.

Merci pleiades,
hélas non

La réponse de hdparm est bien:

/dev/mmcblk0p1:
 setting readonly to 0 (off)
 readonly      =  0 (off)

Mais le message reste Système de fichiers accessible en lecture seulement

Il faut remonter le système de fichiers en lecture-écriture après avoir passé le support en lecture-écriture.

Mais si le blocage en lecture seule vient du matériel (lecteur de carte ou carte µSD), alors on aura l’impression de pouvoir écrire mais l’écriture effective échouera (à voir dans les logs du noyau ou au démontage du système de fichiers.

Est-il possible de faire des tests croisés avec une autre carte µSD, un autre adaptateur, un autre lecteur ?

PS: le sujet « écriture seulement » est erroné.

Merci PascalHambourg.

Qu’est-ce que cela signifie?
S’agit-il de:

ll /dev/mmcblk0*
brw-rw---- 1 root disk 179, 0 4 nov. 22:25 /dev/mmcblk0
brw-rw---- 1 root disk 179, 1 4 nov. 22:25 /dev/mmcblk0p1

à ce propos l’utilisateur devrait-il appartenir au groupe disk ?

Quelle commande utiliser?

J’ai lu ceci dans /usr/share/doc/base-passwd/users-and-groups.html, ici traduit par deepl:

disk

Accès brut aux disques. Équivaut en grande partie à l’accès à la racine.

AIDE : J’ai quelques unités de disque dans /dev appartenant au groupe, mais je n’en vois pas l’intérêt. Sur un autre système, j’ai remarqué que certains des fichiers que lilo place dans /boot appartiennent également à disk. Je peux imaginer des utilisations locales pour un tel groupe, par exemple si vous voulez donner à certains utilisateurs du groupe un accès direct à un disque dur. Mais les utilisations que j’ai trouvées sur mes systèmes semblent empêcher de le faire facilement ; si je mettais un utilisateur dans le groupe disk ici, il aurait un accès en écriture au système de fichiers racine.

et je ne suis pas plus avancé.

Ça :

Note : pas besoin de hdparm, on peut aussi le faire avec blockdev --setrw.

Non, rien à voir avec les permissions du fichier spécial de périphérique.

Sûrement pas !

J’ai fait

chmod u+w /dev/mmcblk0p1
mount -o remount,rw /media/eric/0123-4567/

et ça marche!

encore merci PascalHambourg

Mouais… Vérifie quand même que ça écrit vraiment : montage, écriture, démontage, extraction, insertion, montage, lecture.
Le chmod ne sert à rien, root a déjà la permission d’écriture.

Normal, c’est un charabia sans queue ni tête.

je viens de voir votre message précédent avec blockdev --setrw.

(la commande avec hdparm ne fonctionnait pas)

Pour l’instant je me suis contenté de faire touch test puis vim test et le fichier test est bien écrit avec son contenu.

Est-ce que ma méthode est criticable?

Ce n’est pas qu’elle ne fonctionnait pas mais qu’elle ne suffisait pas, il fallait ensuite remonter en lecture-écriture avec mount.

Oui car tant que la carte est montée c’est le cache qui est lu donc rien ne garantit que les données ont vraiment été écrites sur la carte.

J’ai donc fait:

blockdev --setrw /dev/mmcblk0p1 
mount -o remount,rw /media/eric/0123-4567/

et ça marche.

Est-il possible de faire en sorte que ces commandes se fassent automatiquement à l’insertion de la carte ?

Mon système est encore Bullseye et j’utilise Mate. La carte apparait automatiquement sur le bureau, mais avec cette restriction.

Ça devrait être faisable avec une règle udev qui passe la carte en lecture-écriture avant le montage. Ensuite le montage devrait se faire en lecture-écriture tout seul.

Mais il serait préférable de chercher pourquoi la carte est en lecture seule par défaut. Que disent les logs du noyau lors de l’insertion (lancer dmesg -W avant d’insérer la carte) ? Car pour écrire une règle udev adaptée il faudrait savori si cela vient du lecteur ou de la carte, par exemple en testant la carte avec un autre lecteur et le lecteur avec une autre carte.

dmesg -W
[60634.882045] mmc0: cannot verify signal voltage switch
[60634.996922] mmc0: new ultra high speed SDR104 SDXC card at address 0007
[60634.997735] mmcblk0: mmc0:0007 SD64G 57.9 GiB (ro)
[60635.014428]  mmcblk0: p1
[60635.179396] /dev/mmcblk0p1: Can't open blockdev

surprise, après une nouvelle réinsertion, sans avoir rien fait d’autre ça marche tout seul,

dmesg -W
[60847.553352] mmc0: cannot verify signal voltage switch
[60847.667431] mmc0: new ultra high speed SDR104 SDXC card at address 0007
[60847.667657] mmcblk0: mmc0:0007 SD64G 57.9 GiB
[60847.685903] mmcblk0: p1

Ça ne dit pas grand-chose à part que la carte est effectivement en lecture seule (ro). On ne voit même pas le nom du pilote du lecteur de carte.
Il me semble avoir lu que certains lecteurs pouvaient inverser le sens du signal de verrouillage, tu as essayé avec le verrou de l’adaptateur
dans l’autre sens ?

Je soupçonne le verrou qui bouge peut-être quand on insère la carte ou le switch détecteur du lecteur qui ne marche pas bien.

Encore merci, j’ai aussi appris blockdev et dmsg -w, et je vais surveiller le côté matériel (bien que je n’y ai pas touché depuis le début de cette discussion).