Ne pas cliquer
Parrain-Linux
a de la chance
Écrire un nouveau message
Page : 1
Udev / Udisks : Précisions ?
Avatar
loufy
utilisateur
Mixte
Inscrit le : 05/11/2012
Messages : 81
Point(s) : 496
Localisation :
Quimper, Finistère, France
Posté le 22/12/2012 à 18:50:01
Citer

loubrix Sourire
Je reprend un de tes messages pour ne pas polluer le sujet concerné :

Citation:

(⋅⋅⋅) si tu connais pas, on peut développer un peu...
historiquement, l'utilitaire qui permet de "monter" un périphérique de stockage (y compris en réseau) était Mount (et Umount pour le démontage), et donc, il y a encore pas si longtemps que ça, pour brancher une clé ou un disque usb sous Linux, il fallait être Root et utiliser le terminal: ça convenait aux barbus, mais pour les débutants c'était un casse-tête (il fallait identifier l'inode avant de lancer Mount, l'écriture sur le périphérique n'était possible que pour root,...etc).
comme c'était pas pratique, ont commencé à apparaître des utilitaires pour détecter et monter ces périphériques automatiquement et en simple utilisateur (Ivman, Pmount,...etc); finalement c'est Udev et Udisks qu'on a gardé.

en gros, sans (trop) entrer dans le détail, le noyau détecte ce qu'on branche, et Udev écoute ce que dit le noyau; comme Udev a des règles pré-établies pour un grand nombre de périphérique, il peut décider et éxécuter un certain nombre d'action en fonction de ce qu'on a branché; et pour les périphériques de stockage (clés, disques durs, CDs...), Udev passe la main à Udisks (qui est un "udev-helper", comme Upower qui s'occupe de la gestion d'énergie), qui s'occupe du montage (avec les bons droits) automatiquement ou pas (suivant comment on l'a réglé); et pour le démontage, c'est encore Udisks qui s'en charge, souvent en sous-couche d'un environnement de bureau ou d'un explorateur de fichier (quand on clique sur "éjecter" ou "démonter" ).

donc, si on "espionne" Udisks grâce à son moniteur, on devrait savoir ce qui ne va pas; on aurait pu aussi lancer "Udevadm info", mais sa syntaxe est plus compliquée, et les infos fournies sont trop touffues pour ce qu'on veut en faire...


Voudrais-tu détailler un poil plus stp ? :)
Comment se déroule la phase détection de volume inséré, montage automatique (selon préférences utilisateurs)… ?
Est-ce un tiers qui déclenche udev lorsqu'un média externe est détecté, ou bien c'est précisément son job et il passe la main à udisks ?

Upower a un man franchement léger :)
Est-ce qu'il est un composant indirectement utilisé ? cad qu'il faut passer par udisks --detach pour couper le jus par exemple ?

Tu m'a fait découvrir udisks --umount / mount
Super ça aussi.

Bref on est je pense, en tout cas moi, vachement preneur d'infos :)
Si t'as quelques liens (francophones) qui creusent tout ça fais tourner stp ^_^

Remonter Descendre Permalien du message
Avatar
loubrix
utilisateur
Parrain
Inscrit le : 01/06/2012
Messages : 86
Point(s) : 448
Distribution : Manjaro
Localisation :
Lablachère, Ardèche, France
Posté le 24/12/2012 à 18:33:03
Citer

difficile de détailler plus sans rentrer dans le très technique...
tu peux lire la doc Ubuntu sur Udev (mais ça explique surtout comment le faire fonctionner).

la phase détection est simple: tout périphérique que tu branches s'identifie par un numéro, du genre:
Code:
01:05.1 0403: 1002:970f

la première partie (01:05.1 0403Sourireest le bus concerné (en gros correspond au branchement sur la carte-mère) et le type de périphérique (audio, video...); la deuxième partie est ce qui nous intéresse, un identifiant de matériel: 1002:970f
comme le noyau a un fichier où tout est répertorié (pci.ids, puisqu'ici c'est sur le bus pci), il peut savoir de quoi il s'agit comme périphérique; en l'occurence ici 1002:970f = Advanced Micro Devices [AMD] nee ATI RS880 HDMI Audio [Radeon HD 4200 Series]

ici c'est une carte son, donc le système n'aura rien de plus à faire que de charger le module correspondant; au passage, notons qu'il y a aussi un fichier où la correspondance périphérique --> module est répertoriée, et même dans le cas d'un périphérique non-répertorié dans ce fichier, les modules ont aussi la liste des périphériques supportés dans leur entête: on pourra donc charger le module manuellement.

suivant le périphérique, Udev peut aussi avoir d'autres actions à effectuer en plus de charger le module: créer le node dans /dev s'il n'existe pas (avec les bonnes permissions), appeler un des Udev-helpers (comme Udisks) ou lancer certains utilitaires; pour toutes ces actions, Udev a des règles pré-établies, mais pour un périphérique nouveau et inconnu on peut toujours créer de nouvelles règles, parce que même un périphérique inconnu des bases de données a un identifiant, qui peut servir à Udev pour charger un module (module qu'on aura trouvé et compilé si le périphérique n'est pas connu par le système).

tout cela peut devenir assez compliqué, donc si on y touche, il faut respecter des règles, la première étant de ne jamais modifier les fichiers système; si on veut modifier la façon dont se comporte Udev, il faut créer de nouvelles règles et s'arranger pour qu'elles soient prises en compte AVANT les règles pré-établies...

Remonter Descendre Permalien du message
Avatar
loufy
utilisateur
Mixte
Inscrit le : 05/11/2012
Messages : 81
Point(s) : 496
Localisation :
Quimper, Finistère, France
Posté le 26/12/2012 à 14:29:44
Citer

Je vois SourireMerci pour ces précisions :)
Effectivement y'a de quoi s'amuser avec.

J'imagine que les permissions accordées à certains udev-helpers, comme udisks sont gérées par policykit ?
À ce propos, passé un temps il y avait sur Ubuntu (sûrement d'autres distrib) une interface permettant de régler ces demandes d'autorisations.
C'était bien pratique mais ça semble avoir disparu (en tout cas, je ne sais pas quel est ce soft et où il se cache). Si quelqu'un connaît son nom ça me branche bien :)




Remonter Descendre Permalien du message
Écrire un nouveau message
Page : 1
Page générée en 0.0672 seconde(s).