[RESOLU]Encodage noms de fichier sur périphériques amovibles

Bonsoir,

Je viens de réaliser une migration de Ubuntu Gutsy Gibbon (7.10) pour une Debian Lenny :

debian:~# uname -a Linux debian 2.6.24-1-686 #1 SMP Sat Apr 19 00:37:55 UTC 2008 i686 GNU/Linux

et je constate que les noms avec lettres accentuées des fichiers sur ma clé USB (/dev/sda) et mon disque dur externe (/dev/sdb) – tous deux formatés en FAT32 – sont “tronqués”. Voici le résultat d’un fdisk :

debian:~# fdisk -l

[...]

Disk /dev/sda: 2024 MB, 2024275968 bytes
255 heads, 63 sectors/track, 246 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0006754e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         246     1975963+   b  W95 FAT32

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xd04e76a2

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       60801   488384001    b  W95 FAT32
debian:~# 

Dans le cas de ma clé, il faut que je la monte en utf8 ce que j’ai ainsi fait à la main :

debian:~# mount -v -t vfat -o iocharset=utf8 /dev/sda1 /home/bbrice/CLE/ /dev/sda1 on /home/bbrice/CLE type vfat (rw,iocharset=utf8)
Le problème c’est que je vois mal monter constamment mes périphériques à la main. Comment se fait-il que la détection du charset ne soit pas automatique ?
Et je ne pense pas que dans ce cas-là, il soit utile de modifier le /etc/fstab à moins que je ne me trompe bien sûr.

Merci pour votre aide. A bientôt.

Alors, après une réinstallation rapide (pour cause de / trop petit :confused: ), même problème (évidemment) et je viens de me souvenir de la commande pmount qui permet de monter des périphérique comme simple user :

qui permet de retrouver des caractères accentués.

Mais je ne comprends toujours pas d’où cela vient ; est-ce lié à gnome-volume-manager ou quelque chose dans le genre ?

Merci, à+

Pour des périphériques amovibles c’est udev qui gère le montage, et s’il n’y a pas de règle spécifique (dans /etc/udev/rules.d) les paramètres appliqués diffèrent d’une distribution à une autre, et d’une version de udev à l’autre (comme le nom des points de montages automatiques et l’encodage par défaut en fonction du format).

Pour réussir à changer ça il faut écrire une règle spécifique pour chaque type de media amovible, et ajouter une ligne de montage (en noauto) dans le fstab pour y préciser les options de montage (et donc l’encodage). Je n’ai jamais réussi à trouver où ces correspondances (type de media/filesystem/encodage) sont faites dans udev lui-même, ce n’est qu’en passant par cette astuce que j’ai pu changer le comportement de la bête.

Il y a un tuto sur cette page au sujet de udev, c’est un peu ardu…

Pour simplifier il faut d’abord déterminer les “types” possibles pour udev avec un périphérique donné, on branche le périphérique et on le monte (par exemple un clé usb identifiée en /dev/sdd1) et on va lire les paramètres utilisés par udev avec :

Il y a plusieurs combinaisons subsystème/identfiant valide, il faut en choisir une.

Ensuite on crée un fichier de règle avec un numéro faible pour qu’il soit lu avant les règles génériques par défaut : /etc/udev/rules.d/00-usbperso.rules est un exemple.

Dedans on met la règle à proprement parler :

SUBSYSTEMS==“usb”, ATTRS{product}==“USB Flash Memory”, NAME=“MYSTICK”

Une autre règle absolument équivalente à la précédente :

SUBSYSTEMS==“scsi”, ATTRS{model}==“USB Flash Memory”, NAME=“USBDISK”

Deux mêmes règles mais identifiées en fonction d’un subsystème diffèrent. À ce niveau il y a un tas de raffinements possibles, notamment pour discriminer les périphériques entre eux (deux clés usb branchées en même temps par exemple…), mais c’est trop long pour un dimanche soir…

Enfin on crée dans /media le répertoire de montage qui correspondent au nom attribué dans la règle, par exemple /media/MYSTICK pour le premier exemple.

Et pour terminer on se fait une petite ligne fstab avec les options qui nous conviennent pour le type de périphérique :

/dev/MYSTICK /media/MYSTICK auto rw,noauto,users,umask=0002,nls=utf-8 0 0

par exemple.

C’est à ce prix qu’on peut s’affranchir de la dictature udev tout en gardant le montage automatique (mais pmount c’est plus simple…). Le défaut de cette manip c’est que la règle s’applique à tous les périphériques du même type, ça peut être gênant si on une seule clé usb qui utilise du iso-8859-15 par exemple.

Évidemment si quelqu’un a plus simple je suis preneur !

Merci mais en effet, c’est plutôt ardu et pmount fait très bien l’affaire.
D’ailleurs, je viens de lire cela dans le man de pmount :

device is not in /etc/fstab (if it is, pmount executes mount device as the calling user to handle this transparently). See below for more details.
Donc, si j’ai bien compris, si le périphérique est renseigné dans le fstab, il le chargera avec les options présentées dans le fstab.
Or un périphérique externe change de dénomination /dev/sdX mais pas d’UUID logiquement. Il me suffit donc de modifier le fstab avec l’UUID de mes supports amovibles.

[code]debian:/home/bbrice# blkid
[…]

/dev/sda1: LABEL=“CLE2” UUID=“B8AD-374F” TYPE=“vfat”
[/code]
Mais est-ce vraiment utile ? Et dans le cas du rajout d’une entrée dans le fstab quelle peuvent être les options de montage, mis à part le charset (utf8) parce que le fat ne gère pas les permissions il me semble (donc options gid, uid, umask à ne pas prendre en compte – enfin ces options sont plutôt floues pour moi :confused: ).
Il faudrait sans doute utiliser les option utf8,noauto,user afin de pouvoir monter les périphériques avec la commande mount -a. Ou j’oublie quelque chose ?

Merci pour votre aide, à bientôt.

Perso j’utilise effectivement la solution des labels dans le fstab, j’ai le montage automatique désactivé (je déteste, en plus ça fait parfois planter les utilitaires de partionnement à des moments inopportuns). Pour ce qui est du fat et du ntfs aussi d’ailleurs les permissions sont effectivement inutiles, les préciser n’aboutira qu’à un message d’erreur du genre “unable to change permission” à chaque copie de fichier… pas utile.

Dans le cas du montage par label tu n’as pas besoin de l’uid ou uuid, tu mets juste LABEL=mon_label en lieu et place de /dev/sdxy. Tu peux “labelliser” une partition très facilement avec “e2label” ou “tune2fs -L”, qu’elle soit montée ou non. L’avantage que je trouve au système c’est qu’en mettant le même label à deux périphériques tu conserves les mêmes options, il faut juste ne pas les brancher en même temps !

La version de Gparted embarquée sur SysRescueCD gère les labels également.

Ok merci pour ces informations, mais j’utilise fréquemment plusieurs périphériques externes simultanément donc bon je pense que je vais plutôt passer par les UUID.
Sinon, lorsqu’un volume possède un label, faut-il préciser le point de montage dans le fstab parce que quand on précise le point de montage le label n’est pas utilisé il me semble ?
Donc en gros, dans le /etc/fstab, un truc dans le genre suffit :

UUID /mnt/Musique vfat utf8,noauto,user 0 2 ou quelque chose m’échappe ?

Merci encore, à bientôt.

Il n’y a pas deproblème à utiliser les labels avec plusieurs périphériques, il faut juste veiller à ne pas donner le même label deux fois aux périphériques qu’on va brancher ensemble…

Là je ne saisi pas bien, le label n’est pas concurrent de la notation udev (/dev/sdxy) ou de l’identification par uuid, pour mount ou pmount les trois sont valides de la même façon. Seul pmount permet de ne pas indiquer de point de montage, mais s’il est utilisé avec une ligne fstab il agit comme un wrapper de mount qui lui a besoin d’un point de montage. Comme en plus le but est d’ordonner le bazar de udev il vaut mieux que ce soit monté où on veut. Ça peut être un peu fastidieux si on a des dizaines de périphériques à labelliser et pour lesquels il faut créer un répertoire de montage, mais on ne le fait qu’une fois et ensuite avoir un point de montage identique au label évite bien des confusions et des erreurs de fatigue…

Donc pour résumer : pmount UUID=“xyxyxyxyx” ou pmount LABEL=mon_label pas besoin de point de montage, avec mount besoin du point de montage, dans le fstab :

UUID=“xyxyxyxyx” /media/stroumph [options] ou LABEL=mon_label /media/stroumph [options] avec /media/stroumph créé auparavant.

Ok, mais je dois pas avoir tout saisi :confused:

Voici mon /etc/fstab :

[code]# /etc/fstab: static file system information.

proc /proc proc defaults 0 0
/dev/hda1 / ext3 errors=remount-ro 0 1
/dev/hda2 /home ext3 defaults 0 2
/dev/hda3 none swap sw 0 0
/dev/hda4 /Musique ext3 defaults 0 0
/dev/hdb /media/cdrom0 udf,iso9660 user,noauto 0 0
LABEL=DSAUV /media/DSauv vfat utf8,user,noauto 0 0
LABEL=CLE2 /media/CLE2 vfat utf8,user,noauto 0 0
[/code]
Alors bon maintenant, je peux monter mes périphériques directement avec la commande [code]pmount LABEL=CLE2[code]J’ai préféré passer par les labels dans la mesure où si l’on renseigne le /etc/fstab avec les UUID, la commande précédente ne fonctionne pas, ce qui après coup me semble plutôt logique.
La commande mount fonctionne également en tant que simple utilisateur (option user dans le fstab si j’ai bien tout compris).
Le truc intéressant (enfin pour moi) c’est que gnome-volume-manager doit également regarder dans le fstab avant de monter les périphériques parce que je peux monter mes périphériques depuis Nautilus directement sans avoir de problème d’encodage désormais

Par contre, dans Nautilus, dans la colonne “Raccourcis” j’ai ça :
J’ai constamment les répertoires renseignés dans /etc/fstab ainsi que le périphérique ; y a-t-il un moyen pour empêcher cela ?

Merci encore.

Là je ne suis pas compétent, je n’utilise pas Gnome (KDE ou console) et encore moins Nautilus. Je suppose qu’il y une option quelque part pour changer ça ? (avec Gnome ce n’est même pas certain…) Peut-être ouvrir un nouveau sujet pour attirer des Gnomistes ?

Ok, je vais faire ça. D’ailleurs ça me rappelle un post sur le forum ubuntu-fr, je vais essayer de retrouver ça.

Encore merci pour ton aide et un sujet résolu de plus à ton actif :slightly_smiling:

A bientôt.

Ah, désolé de revenir te hanter, mais je viens de fouiller dans gconf-editor pour cette histoire d’icones et je viens de trouver une entrée intéressante :
/system/storage/vfat qui permet de rajouter des options de montage. Y rajouter utf8 aurait sans doute permis de résoudre mon problème.
Seulement, cela implique que si j’écris sur la clé d’un ami windowsien par exemple en utf8, il aura du mal à lire les noms accentués ou présentant autres particularités, c’est bien ça ?

Merci, à+

Option intéressante, je mets ça dans mes notes pour mon futur passage à Gnome (pour éviter kde4-vista-beurk :wink: )

Effectivement pour une clé partagée avec windows c’est la galère, dans des environnements mixtes on finit même par baisser les bras et configurer toutes les machine en iso-8859-15 (sauf si quelques Mac traînent par là…). Vivement une norme générale genre utf-1024 qui couvre tout du chinois au finlandais.

Alors idiotein ressort ton calepin parce que j’ai découvert cette nuit, purement par hasard, le “blog” Artisan Numérique et notamment un article qui aborde le problème d’encodage de caractères sous Gnome ; ça ne te rappelle rien ? xD
Voici l’article en question : artisan.karma-lab.net/node/1523

Donc sur ton calepin, tu peux noter : gnome-mount est vraiment la solution. Ainsi, plutôt que de passer par des règles udev, des modifications du /etc/fstab ou encore par une modification des options de montage dans gconf-editor /system/storage/vfat qui concernerait tous les périphériques en vfat, gnome-mount permet de donner des options à chacun des périphériques.

Voilà, bonne découverte et à bientôt.

C’est bien sur le principe, mais il y a un os dans la deuxième partie, c’est que /dev/sdf2 ne correspond pas une clé usb en particulier, mais à n’importe quelle clé identifiée comme telle par udev… Donc rebelote label et compagnie…

En déléguant la gestion de ces options à l’environnement de bureau on met un coup de pied de plus à l’inter-opérabilité entre les environnements, et ça ne marche pas en console. Sinon c’est sympa d’avoir cette possibilité sous Gnome.

Alors justement j’avais un peu peur… Mais non : en effet, les paramètres de montage sont inscrits dans gconf dans la section /system/storage/volumes/ et plus précisément en reprenant les spécifications de freedesktop.org et donc en utilisant les UUID (plus de problème de entre hd et sd dans les /dev/ notamment). Voici par exemple une des clés que j’ai désormais chez moi :

avec les options suivantes :

Nom Valeur fstype_override vfat mount_options [iocharset=utf8]
Et voilà, qu’importe l’ordre d’insertion des périphériques amovibles puisqu’ils sont identifiés avec leur UUID.

Alors là du coup, pas de problème d’interopérabilité je pense. Sinon, comme tu le fais justement remarquer, ça ne fonctionnera pas en console à moins de lancer HAL (intérêt ?) mais disons que je passe l’essentiel de mon temps sous Gnome sauf lors de mes rares déplacements en train mais dans ce cas-là j’ai pas besoin de clé USB. Mais bon si en console je dois passer par pmount ça ne me gêne pas trop.

Merci, à bientôt.