# [HOWTO] udev, DBUS, HAL, gnome-volume-manager, c'est quoi ?

## zdra

Bonjour,

Voilà je fais ici un petit essais de HOWTO sur ces "nouvelles" technologies issues du kernel 2.6.x. Je ne suis pas sur d'avoir moi-même complètement compris tous les principes, donc corrigez-moi sans pitié !

Quel est le BUT de tout ça ?

  Au final la combinaison de  toutes ces technologies (udev,DBUS, HAL) est de permettre une gestion dynamique des périphériques sous linux et d'en avertir 

l'utilisateur. Donc au final l'utilisateur peut par exemple brancher une clef usb et avoir un nautilus qui s'ouvre pour explorer les fichiers, tout ça automatiquement. De même lors de l'insertion d'un CDROM on peut avoir un programme qui se lance directement (totem si c'est un DVD vidéo par exemple, ou même un script autorun mis sur le cd). Les possibilités sont infinies et ne sont limitées pour l'instant uniquement par un manque d'interface utilisateur et d'intégration dans les desktop (gnome, kde, ...) mais fondamentalement tout est déjà en place et marche même plutôt bien grâce à gnome-volume-manager qui est (à ce que je sache) pour l'instant la seule interface finale pour que l'utilisateur puisse configurer et personaliser toutes ces fonctionnalités.

Que se passe-t-il entre le moment où je branche ma clef usb et le moment où je vois les fichiers dans nautilus ?

 1) Tout commence au niveau du kernel. C'est lui qui détecte le 1er l'ajout d'un nouveau périphérique. Il charge les drivers (modules) nécessaires au bon fonctionnement du nouveau matériel qu'il auto-détecte tout seul. Toutes les caractéristiques technique que le kernel obtient en interrogeant le matériel sont disponibles dans /sys. Tous les fichiers y sont générés en direct par le kernel et n'ont donc aucune réalité sur le disque dur, et c'est totalement dynamique en fonction des périphériques qu'on ajoute/supprime à chaud.

 2) Pour que les programmes extérieurs au kernel puissent accéder au périphérique, il faut nommer ce périphérique en mettant un fichier dans /dev. Sous linux TOUT est fichier, y compris le matériel. On arrive donc à l'entrée en fonction de udev. La "révolution" de cette technique est de laisser à l'utilisateur le soin de nommer le périphérique ! C'est donc udev, un programme utilisateur, qui va etre informé par le kernel qu'un nouveau matériel est connecté et qu'il faut lui donner un nom (fichier) dans /dev. udev va donc, à travers de règles définies dans /etc/udev/, composer ce nom de fichier à utiliser. Pour plus de détails sur cette étape, et sur le contrôle que vous avez dessus: http://www.reactivated.net/udevrules.php

 3) Nous avons donc un périphérique utilisable par les utilisateurs à travers un fichier. Il reste juste à avertir les utilisateurs que ce matériel est disponible. C'est HAL qui va s'en charger en lisant dans le /sys qui a été populé par le kernel (via libsysfs). HAL est alors au courant des changements dans le matériel et il a acces à toutes les informations publiées par le kernel. Ces informations sont directement tirées du matériel, et donc pas très compréhensible. Donc Au lieu de dire "le périphérique /dev/sda1" HAL va être plus gentil et  dire "clef usb du nom de USB_BAR" (USB_BAR étant le nom de la partition fat se trouvant sur la clef usb par exemple). c'est tout de suite plus user-friendly ! HAL va donc même proposer une internationalisation des noms, donc au lieu de "floppy disk" vous verrez même "lecteur de disquette" !!! HAL va aussi regrouper toutes les informations techniques du périphérique et les rendre plus compréhensibles, de cette façon en consultant HAL on pourra facilement savoir si un CDROM est un data, audio, ou même un DVD data, DVD vidéo, etc....

4) Ensuite il faut faire parvenir les informations collectées par HAL à l'utilisateur. HAL va donc poster un message sur le DBUS. On peut résumer son utilité en un service de messagerie. HAL poste un petit message à travers DBUS qui dit "voilà une nouvelle clef usb" et les programmes utilisateurs qui écoutent de l'autre côté du DBUS reçoivent donc ce message et peuvent agir.

 4) Finalement des logiciels de votre environement graphique comme gnome-volume-manager vont être capable grâce à DBUS de savoir quand un CDROM est introduit. Et si il voit que c'est un audio il va alors lancer automatiquement un lecteur de cd audio et jouer la musique. Si c'est un data il va alors pouvoir monter le périphérique et ouvrir nautilus pour montrer les fichiers. Il existe aussi ivman qui fait le même genre de boulo que gvm.

Mais je croyais qu'il fallait une entrée dans fstab pour monter un cdrom/clef USB

  Tout juste, mais encore une fois HAL a pensé à tout ! En effet lorsqu'il remarque qu'un nouveau périphérique "block" est connecté (cad périf montable) il lance un composant de HAL: fstab-sync. fstab-sync va donc alors regarder /etc/fstab et voir si il y a une entrée pour le nouveau périf. Si il n'en voit pas alors il va l'ajouter à la fin du fichier automatiquement ! Par défaut il met les points de montage dans /media. Évidemment il garde en mémoire les modifications qu'il a fait, et donc si le périphérique est débranché hop il enlève l'entrée ! On a donc un fstab dynamique.

Évidemment fstab-sync a les droits de modification sur /etc/fstab puisque HAL est un deamon lancé au boot de l'ordinateur en tant que root.

Note: j'ai récement vu que ubuntu n'ajoute aucune entrée dans fstab et que fstab-sync n'existe pas ! Il utilise plutot pmount qui est une version modifiée de mount qui permet de faire directement le montage sans passer par fstab.

Et donc tout ce mécanisme compliqué remplace avantageusement supermount,... ?

  Exactement. On vient de voir comment tout est monté automatiquement. Mais le démontage est également prévu. Pour le cas d'une clef USB par exemple, fstab-sync va mettre l'option de montage "sync" ce qui veut dire que les écritures seront directement faites sur le périphérique sans buffer. Donc théoriquement vous pouvez retirer à chaud la clef sans la démonter et tout sera dessus. De plus en la retirant HAL en sera informé et fera le ménage dans fstab. Même nautilus en sera informé et va donc retirer l'icone du bureau. Pour les CDROM et DVD il y a une manipulation supplémentaire si on veut avoir un effet windowsien complet: enlever le lock du CDROM lorsqu'il est monté. ça se fait tout simplement en mettant l'option dev.cdrom.lock = 0 dans le fichier /etc/sysctl.conf.

Et pourquoi ma disquette ne marche pas de la même manière ?

  Et bien pour les lecteurs de disquettes il y a une difficulté supplémentaire. En effet en hardware aucun mécanisme n'est prévu pour prévenir le système qu'une disquette est inserée. La seule manière est de demander explicitement au lecteur si il y a une disquette. Et évidemment c'est pas très propre de demander constamment au lecteur de vérifier si une disquette est présente... Mais néamoins fstab-sync sait quand il y a un lecteur de disquette de branché et ajoute donc déjà une ligne dans le fstab pour monter la disquette si on demande explicitement de la monter (en cliquant sur l'icône dans le poste de travail dans gnome par exemple). Et comme pour les clefs USB, l'option SYNC sera mise, et donc théoriquement on peut enlever la disquette à tout moment. Mais encore une fois aucun mécanisme hardware n'est prévu pour signaler au système qu'une disquette est enlevée. Donc le système croira toujours que la disquette est montée... ce qui pose problème... En résumé donc pour les disquettes il n'y a pas de miracle, il faut les démonter manuellement pour rester propre.

Comment installer toutes ces merveilles ?

udev: http://www.gentoo.org/doc/fr/udev-guide.xml

HAL et DUB:

```

On install les logiciels

# emerge -a hal    (--> DBUS en sera une dépendence)

On démarre les services

# /etc/init.d/hald start  (--> le service DBUS est une dépendence)

Pour que HAL soit démarré à tout les boot:

# rc-update add hald default

```

Quelques outils intéressant:

 - Pensez à l'USEFLAG "hal" qui donne le support HAL dans plusieurs paquets gnome (et certainement KDE dans le future).

Une fois le flag ajouté dans /etc/make.conf, recompilez tout les paquets qui sont influencé par ce flag:

```

# emerge -av --newuse world

```

 - Installez le fameux gnome-volume-manager:

```
# emerge -a gnome-volume-manager
```

Si vous utilisez gnome, il faut démarer gnome-volume-manager à chaque login. Pour se faire allez dans Applications -> préférences du bureau -> préférences avancées -> sessions -> Programmes au démarrage -> ajouter -> "gnome-volume-manager".

 - Pour voir toutes les informations disponible à travers HAL sur tout les matériels de votre ordinateur:

```
# emerge -a hal-device-manager
```

Voilà qui est dit. Je suis ouvert à tous les commentaires. Je ne suis absolument pas un expert en la question mais j'ai voulu vous proposer ce que j'ai cru comprendre en lisant un peu partout sur le net. Bref NO WARRANTY !!!

Ce document est publié sous la licence Creative Commons, merci d'en respecter les rêgles. 

[EDIT] merci à fb99 et kernel_sensei pour l'orthographe  :Smile: 

[EDIT2] Merci à ikke pour avoir signalé une lourde erreur dans le howto, et à dJu` pour m'avoir rappellé qu'il faut corriger.Last edited by zdra on Sun Jun 19, 2005 10:04 pm; edited 8 times in total

----------

## kernelsensei

Merci, Super HOWTO, juste 2 - 3 choses :

 *zdra wrote:*   

> Bonjour,
> 
> Voilà je fais ici un petit essais de HOWTO sur ces "nouvelles" technologies issues du kernel 2.6.x. Je ne suis pas sur d'avoir moi meme completement compris tout les principes, donc corrigez moi sans pitié !
> 
> Quel est le BUT de tout ça ?
> ...

 

Ca parle bizarre en belgique ... la periferique, la file (fichier), ...  :Laughing: 

J'ai pu oubleir 2 - 3 choses .. mais bon ..

----------

## anigel

Bien sympatique, cet effort de vulgarisation.

Merci zdra. Je t'envoie en PM une version orthographiquement et syntaxiquement corrigée (à valider par tes soins, les différences minimes entre nos langues peuvent très bien m'avoir enduit d'erreur  :Laughing: ).

----------

## dyurne

excellente vulgarisation, je pense que ça rend le système plus clair pour tout le monde.

si je peux me permettre une suggestion : quelques approfondissements sur le coté configuration de la chose serait le bien venu.

----------

## zdra

Voilà, une rapide mise à jours pour dire comment installer tout ça... la théorie c'est bien beau mais la pratique c'est mieux  :Wink: 

----------

## Gaug

Merci Zdra pour ce Howto .

----------

## TGL

 *zdra wrote:*   

> [...]gnome-volume-manager qui est (à ce que je sache) pour l'insant la seul interface final pour que l'utilisateur puisse configurer et personaliser toutes ces fonctionnalitées.[...]

 

On peut citer aussi Ivman qui occupe une place assez similaire. Rapide comparaison, même si j'ai pas vraiment d'expérience ni avec l'un ni avec l'autre. Enfin je les ai juste essayé un peu comme ça, donc c'est plus une première impression qu'une analyse :

 - les deux système sont concurrent, il sont vraiment au même bout de la chaine vis à vis de HAL, et ont des objectifs assez similaire (montage automatique, lancement d'applications, etc.). Ça n'est probablement pas terrible de les utiliser en même temps.

 - GVM est lancé uniquement par un utilisateur, genre avec sa session Gnome, alors que Ivman peut être soit un service global configuré par le root (pratique pour les tâches utiles à tous les utilisateurs ou utiles aussi en console comme le montage automatique), soit un lancé par l'utilisateur.  J'ai bien l'impression qu'avec Ivman en fait, on peut faire les deux à la fois, genre avoir d'une part le service système qui s'occupe des trucs simple comme le montage de cdroms, et à côté une instance pour l'utilisateur sous X pour les tâches du style lancement du player de DVD. Mais j'ai pas testé cette double utilisation encore, à vérifier donc. 

 - GVM est très facile à configurer, mais ne traite que les 4 ou 5 besoins les plus courants, alors que Ivman est plutôt galère à configurer (faut dire que je deteste les fichiers de conf en xml, ce qui n'arrange rien) mais extrêment souple (plus d'évennement HAL traités, des possibilité de filtrage pour des devices particuliers et pas seulement des types de devices, etc.)

En fait, mon impression est que Ivman est une meilleures solution (plus générique), mais qui manque cruellement d'une interface graphique pour les utilisateurs non-geek. On pourrait parfaitement imaginer une GUI du type de celle du GVM, mais qui se contenterait d'affecter la config d'Ivman, et on aurait le meilleurs des 2 mondes je pense.

----------

## TGL

Tiens, je connaissais pas, mais je viens de tomber sur ce paquet : gnome-extra/hal-device-manager. Il donne une vue exhaustive de ce que HAL sait de vos périphériques (cf. ce screenshot). C'est instructif pour mieux comprendre le système, et je pense ça doit pouvoir être très utile par exemple pour configurer Ivman, bref c'est un bon truc à avoir sous le coude.

----------

## ikke

HAL n'ecoute pas a DBUS. HAL utilise libsysfs, voit des changements en /sys, et envoie des messages aux logiciels en utilisant DBUS quand quelque chose change.

(Je ne suis pas francophone... Et a ce moment-ci j' utilisie un clavier qwerty, donc pas d'accents  :Sad: )

----------

## zdra

ah ? c'est pas ce que j'avais lu sur un blog... je vais me renseigner et corriger ça  :Smile: 

Merci  :Wink: 

----------

## DidgeriDude

Salut et merci beaucoup pour ces infos.

J'ai par contre une petite question : Qu'en est-il alors de l'utilisation de hotplug ? Peut-on le supprimer ? Idem pour coldplug ?

Ce serait cool car ça éviterait les scripts de ouf de montage automatique, avec analyse de partitions et tout et tout...

----------

## zdra

à mon avis:

 - coldplug sert à détecter le matériel à froid. c'est à dire le matériel branché lors du démarage de l'ordinateur. Le but étant d'informer le kernel quels modules charger pour avoir le support de ce matériel. J'avoue que je comprends pas pourquoi c'est un programme extérieur au kernel, il me semble que celui-ci devrait savoir le faire tout seul...

 - hotplug est un deamon qui fait le meme travaille mais pour les matos connecté à chaud. cad les matos que tu connecte apres que l'ordinateur soit déjà démarré, comme de l'USB, ou meme certaines cartes PCI.

----------

## spider312

Tu ne réponds pas vraiment à la question, mais non on ne peut pas se passer de hot/coldplug (enfin pas plus avec udev que sans, tu peux toujours t'en passer avec un noyau monolithique ou une bonne maitrise du chrgement es modules)

En effet, cet (excelent) howto/vulgarisation est ambigu sur ce point *Quote:*   

>  1) Tout commence au niveau du kernel. C'est lui qui détecte le 1er l'ajout d'un nouveau périphérique. Il charge les drivers (modules) nécessaires au bon fonctionnement du nouveau matériel qu'il auto-détecte tout seul.

 en fait, c'est faux, là tu parles de ta vision idylique du kernel, mais pas de ce qu'il en est actuellement

Sinon, je suis dégouté par les dépendances de hal-device-manager , tout gnome y est, c'est quand même abusé pour juste afficher des périphériques  :Crying or Very sad:  y'aurait pas une application 'alternative' ?

Ah une petite question, quand je branche ma clef USB, j'ai pleins de messages d'erreurs dans la console depuis laquelle j'ai lancé gnome-volume-manager (et bien sur, rien ne se monte), mais bon tout se mélange avec les commandes que je tape, et puis ces messages ne sont pas humainement compréhensibles, y-a-t-il un log ou un moyen quelconque de suivre ce qui se passe lorsque je branche un périphérique ?

----------

## DidgeriDude

Vi en fait, il répondait po trop à ma question mais c'est po grave...  :Laughing: 

Donc, si je comprends bien, il est nécessaire de garder cold/hotplug (pour manager udev ?) mais ma question reste : Ai-je encore besoin de mon super beau (gros, en fait) script à moi  :Cool:  qui me montait automatiquement mes partitions ? Sachant que je suis sous FVWM, je ne suis pas super chaud pour installer GVM...

----------

## ikke

 *spider312 wrote:*   

> Sinon, je suis dégouté par les dépendances de hal-device-manager , tout gnome y est, c'est quand même abusé pour juste afficher des périphériques  y'aurait pas une application 'alternative' ?

 

```
lshal | less
```

----------

## ikke

 *DidgeriDude wrote:*   

> Sachant que je suis sous FVWM, je ne suis pas super chaud pour installer GVM...

 

```
emerge -v ivman
```

----------

## spider312

 *ikke wrote:*   

>  *spider312 wrote:*   Sinon, je suis dégouté par les dépendances de hal-device-manager , tout gnome y est, c'est quand même abusé pour juste afficher des périphériques  y'aurait pas une application 'alternative' ? 
> 
> ```
> lshal | less
> ```
> ...

 hmmm, ok merci  :Wink: 

Mais en fait je parlais d'une alternative, pas au même titre que vi est une alternative à OpenOffice

----------

## spider312

Je suis en train de me documenter sur ivman, mais le wiki fr de gentoo est un peu light à ce sujet (je cherche surtout des infos sur la config) donc si quelqu'un a une doc potable, qu'il fasse tourner le lien  :Wink: 

Par contre, on ne peut pas l'utiliser en root+user comme ça a été dit, enfin chez moi il affiche une erreur comme quoi il ne peut pas chopper les infos de dbus, ce qui parait logique, et c'est très dommage, un système client-serveur aurait-été meilleur je pense, que chaque user puisse avoir ses action et qu'il y ait des actions pour tout le monde

Enfin ça viendra bien un jour, on en est à peine au balbutiements de cette technologie ...

----------

## titix

Voilà un howto très intéressant, mais si je puis me permettre, je trouve que celà manque encore un peu de clareté. Ce serai bien de développer un plus  :Wink: 

Anyway bravo zdra  :Very Happy: 

----------

## zdra

J'y ai expliqué ce que je sais, pour le reste je ne suis pas un professionnel du domaine. Donc si tu vois des choses à ajouter ou modifier je suis évidement ouvert aux propositions  :Wink: 

----------

## spider312

ce serait bien de glisser un petit mot sur ivman, pour ceux qui n'ont pas envie d'installer la moitié de gnome

et puis parler un peu de résolution de problèmes aussi (par exemple je branche une lef USB, ça ne fais rien, qu'est-ce que je peux faire :-\)

----------

## lithium

Il m'a toujours sembler que la chaine prennait cette forme : noyau -> udev/hotplug -> hal -> d-bus > gvm

j'explique :

- je branche ma clé

- le noyau detecte l'ajout d'un nouveau materiel

- udev qui scrute le evenenements voit ça et informe hotplug qui charge le pilote correspondant en fonction des informations dans /sys

- udev/hotplug informe hal qu'une clé USB a été branchée qui à son tour fait tourner l'info dans d-bus

- gvm recois le paquet et monte le bordel

ça me parrait plus logique non ?

----------

## Stanislas

Je crois que c'est plutot :

- je branche ma clé

- hotplug détecte l'ajout d'un nouveau materiel (en s'appuiant sur le noyau ... a détailler comment je sais pas trop) et charge les bon modules.

- udev qui scrute le evenenements de hotplug consulte sysfs pour créer/supprimer une entrée dans /dev

... La suite ... j'en suis pas encore là. J'essaie de me dépatouiller à comprendre tout ça ! Arrètez moi si je me trompes !

 Je vais essayer de complèter un peu ce petit tuto (fait pas être pressé j'ai pas beaucoup de temps !)

----------

## Ti momo

Bah parfait rien à dire sur ce ptit HowTo

----------

## dju`

la correction d'ikke (le dev de ivman) n'a pas été apportée au tuto (très bon par ailleurs):

la clef se branche.

le kernel le detecte, et cree un /dev/sda par exemple, grace à udev (et donc hotplug). le kernel modifie aussi /sys.

hal lis dans /sys en utilisant libsysfs. puis hal envoie un message sur le dbus "system". ce n'est donc pas le kernel qui envoie des messages directement sur le dbus. ensuite ivman ou gvm écoutent le dbus, et récupèrent les messages émis par hal. hal n'écoute pas le dbus.

voila comment je vois la chose.

----------

## zdra

Oui en effet j'avais completement oublié. Je viens de rapidement corriger, c'est bon mtn ?

----------

## ImMorT4L

Ca marcherait avec un HDD Usb2.0 de 160Go... C'est un fait une très grosse clé USB  :Laughing: 

Ou bien je dois installer autre chose ??? Parce que là, pour y accéder, je passe par vsftpd qui se connecte sur un PC Windows à partir duquel j'Upload les fichier du HDD  :Embarassed: 

Saoulant de devoir lancer le PC Windows pour tranférer des fichiers  :Sad: 

----------

## zdra

Je sais pas si GVM va le considérer comme un volume à monter automatiquement, mais je crois bien.

De toutes facons avec un "dmesg" juste apres avoir connecté ton USB il te dira le fichier /dev/sd?? créé pour acceder à la périf, donc un mount manuel est toujours possible... sauf si il y a un probleme de matos non supporté... Et si c'est formaté en NTFS ce sera en read only sauf si tu fais marcher avec une émulation de driver windows (projet captive).

----------

## ImMorT4L

Vais essayer bêtement comme ça, sinon je suivrai le TUTO vu que ça me dérange pas de la monter manuellement...

Mais, vu qui a plusieurs partition dessus (3 ou 4 je sais plus...), je dois simplement monter dev/sdaX /mnt/win ??? Et il met les partitions dans des répertoires ??? Ou je dois le faire pour chaque partition Windows ??? 

Beaucoup de question, mais j'ai pas envie de perdre mes 160Go de donnée en faisant une connerie  :Embarassed: 

Parce que j'ai aussi ma partition Windows (NTFS) du Dual boot qui est sous /mnt/Win_XP  :Rolling Eyes: 

----------

## yoyo

 *ImMorT4L wrote:*   

> Mais, vu qui a plusieurs partition dessus (3 ou 4 je sais plus...), je dois simplement monter dev/sdaX /mnt/win ??? Et il met les partitions dans des répertoires ??? Ou je dois le faire pour chaque partition Windows ??? 

  Tu dois le faire pour chaque partition. Mais a priori, dbus/hal/gvm te fera tout ça automatiquement.  :Smile: 

 *ImMorT4L wrote:*   

> Beaucoup de question, mais j'ai pas envie de perdre mes 160Go de donnée en faisant une connerie  

 Tu peux monter tes partitions en lecture seulement (option "ro" de mount). Regarde le man de mount pour plus de détail.

----------

## ImMorT4L

Quand je fais un dmesg après avoir brnché mon HDD 2 1/2" (C'est un 60Go avec 3 Partitions), il me fait ça:

```
usb 1-6: new high speed USB device using ehci_hcd and address 4

scsi0 : SCSI emulation for USB Mass Storage devices

usb-storage: device found at 4

usb-storage: waiting for device to settle before scanning

  Vendor: USB 2.0   Model: Storage Device    Rev: 0100

  Type:   Direct-Access                      ANSI SCSI revision: 00

Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0,  type 0

usb-storage: device scan complete
```

J'ai mis le support dans le Kernel, ca semble fonctionner...

Si je fais mount /dev/sd0 /home/immortal/HDD_USB2.0/

Il me met ça: mount: /dev/sg0 is not a block device

C'est ou ça peut être du à quoi ???

J'aurais intérêt à installer ce qui est de le Tuto (Là, je le faisais 100% manuellement) ???

Alors que si je monte ma partition Dual Dual Boot NTFS, il ne pose aucun problème  :Embarassed: 

mount /dev/hda1 /home/immortal/HDD_USB2.0/

ls => Ok, j'ai mes fichiers

EDIT:: Je viens de suivre le HOWTO si ce n'est que je n'ai pas fait le emerge --newuse world car je n'ai pas envie de passer ma soirée à ça et ça ne fonctionne pas pour le HDD. Le reste semble fonctionner, mais je n'ai malheureusement plus de clé USB sous la main  :Sad: 

EDIT2: Ca fonctionne presque parfaitement avec un HDD  :Cool:  Le seule problème est que seul le ROOT peut acceder aux partitions NTFS qui sont montées dans /media/<nom-de-la-partition> alors qu'un simple utilisateur sait le faire avec les FAT32  :Sad: 

Faut encore que je trouve comment donner accès à l'utilisateur sur les NTFS...

Une Icone apparait sur le Bureau quand je lance le HDD et elle se retire dès que je coupe le HDD... C'est mieux que sous Windows.   :Shocked:   :Laughing: 

----------

## pumpkins

 *zdra wrote:*   

> 
> 
> Note: j'ai récement vu que ubuntu n'ajoute aucune entrée dans fstab et que fstab-sync n'existe pas ! je comprend pas comment ça marche alors...
> 
> 

 

Ubuntu utilise pmount. Voilà la déscription donnée dans la page man.

pmount  ("policy mount") is a wrapper around the standard mount program which permits normal users to mount removable devices without a matching /etc/fstab entry.

En gros, c'est un mount qui ne vérifie pas l'identité de l'utilisateur, mais plutôt les conditions du montage (quel périphérique? présent dans fstab? USB, FIREWIRE? ...)

----------

## vishnoo

Salut,

Je suis un peu dans le même cas qu'ImMorT4L : j'ai un disque usb avec un partition ntfs de 160Go, et j'utilise HAL&Cie pour me le monter automatiquement.

J'aimerais savoir où configurer les droits etc pour ces périphériques montés.

Pour l'instant, pour mon disque, j'ai viré dans /etc/fstab l'option "managed" et mis un petit umask à la place pour que le disque soit lisible par les utilisateurs.

Evidamment ce n'est pas une bonne solution vu que ce n'est que pour ce disque.

En fait, idéalement, j'aimerais qu'il y ai un groupe qui ai les droits sur les disques montés et  ainsi, pour les lires, il suffirait d'ajouter mon utilisateur à ce groupe.

Sinon dois-je tenter d'installer pmount ? c'est apparamenent ce qui est utilisé sous ubuntu où en effet ça marche comme je le veux (avec même le coup du groupe si mes souvenirs sont bons)

Merci pour vos conseils :=)

----------

## zdra

Si j'en crois les changelog les derniers ivman utilisent pmount, mais c'est pas encore dans portage il me semble. Je sais pas si on sait faire en sorte que GVM utilise aussi pmount, ubuntu l'a fait mais c'est peut-etre avec un patch fait maison...

----------

## CryoGen

Je voudrais fortememt passé à udev  :Smile: 

Dans le "Guide udev pour Gentoo" on peut soit mettre un udev avec un /dev static soit utiliser udev "tel qu'il a été voulu par ses développeurs"

Y a-t-il beaucoup de probleme avec un udev total ?

----------

## zdra

Pour moi ça marche tres bien en 100% udev:

```

gentoo zdra # mount --bind / /mnt/test/

gentoo zdra # ls /mnt/test/dev/

console  null

gentoo zdra # ls /dev/ | wc -w

181

gentoo zdra # mount | grep udev

udev on /dev type tmpfs (rw,nosuid)

```

J'ai désactivé le tarball et j'ai viré a la main tout les fichiers sur mon disque de /dev. Il faut quand même garder sur ton disque les fichiers console et null qui sont utilisé au boot avant que udev soit lancé... Fin ça marche sans mais alors t'as rien qui s'affiche à l'écran tant que udev est pas starté...

L'avantage de la manip c'est que t'as plus des milliard de fichiers dans /dev mais uniquement un fichier par matos que t'as (déterminé par tes regles udev) et donc par exemple fini les /dev/hda qui vont de 1 à 11 meme si tu n'a qu'une partition... Moi j'ai 4 partitions sur hda:

```
zdra@gentoo:~$ ls /dev/hda*

/dev/hda  /dev/hda1  /dev/hda2  /dev/hda3  /dev/hda4

```

----------

## CryoGen

 *zdra wrote:*   

> 
> 
> J'ai désactivé le tarball et j'ai viré a la main tout les fichiers sur mon disque de /dev

 

Donc en fait il faut que je passe en full udev puis j'afface tout (sauf null et console) et je reboot pour peupler le dev correctement ?

----------

## vishnoo

Bonjour tout le monde,

Je fait un peu suite à mon dernier message, car j'ai un peu poussé le problème.

Je ne voulais pas utiliser pmount pour l'instant (ce sera pour mon prochain post :p ), car je veux déjà faire fonctionner les choses en l'état avec fstab-sync.

Au départ, seul root pouvait lire le disque usb donc mon problème était d'allouer le disque à un groupe, ce qui était possible pour mon disque (mais que pour lui) avec dans fstab ceci :

```

/dev/sda1               /media/NIOLON           ntfs    exec,user,noauto,gid=plugdev,umask=0117,dmask=0007    0 0

```

En enlevant "managed" et en créant le dossier NIOLON ...

C'était déjà assez pratique car cela permet d'ajouter simplement des users au groupe plugdev. A noter que les umask et dmask sont ici obligatoires car sinon tout est par défaut illisible.

Correction : tt à l'heure je crois qu'avec ces valeurs ça marchait, mais maintenant plus du tout ???? y'a tout qui devient chaotique je vais aller me coucher...

(enfin je voudrais avoir du rw_rw____ pour le les fichiers et drwxrwx___ pour les dossiers quoi..)

Ensuite pour améliorer ceci, 'man fstab-sync' fut mon ami et j'ai commencé a faire une règle dans /usr/share/hal/fdi/95userpolicy/mystorage-policy.fdi que voilà :

```

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">

  <device>

    <match key="block.is_volume" bool="true">

      <match key="volume.fsusage" string="filesystem">

        <match key="@block.storage_device:storage.no_partitions_hint" bool="false">

     <match key="volume.partition.msdos_part_table_type" exists="true">

       <match key="volume.policy.should_mount" exists="true"> 

          <merge key="volume.policy.mount_option.gid=plugdev" type="bool">true</merge>

          <merge key="volume.policy.mount_option.umask=0117" type="bool">true</merge>

          <merge key="volume.policy.mount_option.dmask=0007" type="bool">true</merge>

          <!--

            <merge key="volume.policy.desired_mount_point" type="string">toto</merge>

            <append key="volume.policy.desired_mount_point" type="copy_property">volume.partition.number</append>

          -->

      </match> 

     </match>

   </match>

      </match>

    </match>

  </device>

</deviceinfo>

```

Au niveau du groupe, c'est parfait, tout marche bien.

Bon au niveau des umask je comprends plus rien maintenant, je verrais ça demain

Mais ce sera déjà une réponse à mon problème je pense.

Comme question subsidiaire, j'aurais ceci : 

en utilisant les lignes commentés, mon disque est bien monté dans /media/toto1, mais gnome-volume-manager à l'air de faire des siennes : sur mon bureau gnome, je vois toujours apparaître 'NIOLON' : gvm utilise donc toujours le label. C'est quelque peut perturbant non ?

----------

## zdra

J'ai toujour dans mes PM un message de ImMorT4L qui dit ceci:

 *Quote:*   

> 
> 
> j'ai trouvé pour donner les droits aux partitions NTFS pour les utilisateurs normeaux et pas seulement le root...
> 
> il faut aller dans ce fichier:
> ...

 

Il faudrait encore que j'ajoute un ptite paragraphe pour expliquer les configurations de HAL mais j'y connais pas grand chose  :Embarassed: 

----------

## vishnoo

Bon, alors hier soir j'était completement endormi, et en fait mon reglage de Hal était presque bon.

Voici le fichier final qu'il faut ajouter et l'éxplication :

/usr/share/hal/95userpolicy/msdisks-policy.fdi :

```

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">

 <!-- External disks with ms file systems:

        Match volumes from an external USB harddisk enclosure by file system

        If fat or ntfs (see section 'should_mount' in 90defaultpolicy) mount  with

        'plugdev' group rights

        

        vishnoo  -->

 <device>

    <match key="block.is_volume" bool="true">

      <match key="volume.fsusage" string="filesystem">

        <match key="@block.storage_device:storage.no_partitions_hint" bool="false">

          <match key="volume.partition.msdos_part_table_type" exists="true">

            <match key="volume.policy.should_mount" exists="true"> 

               <merge key="volume.policy.mount_option.dmask=0007" type="bool">true</merge>

               <merge key="volume.policy.mount_option.umask=0117" type="bool">true</merge>

               <merge key="volume.policy.mount_option.gid=plugdev" type="bool">true</merge>

               <merge key="volume.policy.mount_option.defaults" type="bool">true</merge>

               </match>

            </match>

          </match>

       </match>

    </match>

 </device>

</deviceinfo>

```

et faire un 

```
# groupadd plugdev
```

puis modifier /etc/group:

```
plugdev:x:NNN:utilisateurs_autorises_ici
```

voilà  :Smile: 

Explications super-détaillées (enfin j'espère) :

Attention : ne surtout pas modifier /usr/share/hal/fdi/90defaultpolicy/storage-policy.fdi comme le fedait ImMortal (cf fstab-sync) mais utiliser le répertoire 95userpolicy (ouvert après le précédent) pour ses besoins personnels. Sinon, il faudrait éventuellement proposer aux gens de HAL d'intégrer ce genre de lignes directement  :Smile: 

Alors en fait je reprends le maching du fichier 90defaultpolicy pour les msdos filesystems, et je rajoute le match sur les should_mount pour ne modifier que les partitions à monter ;p

Ensuite je préfaire ne pas faire comme ImMortal, et faire plutôt à la façon de pmount : ne pas assigner les disques à un utilisateur particulier mais plutôt au groupe 'plugdev' car c'est plus propre de rajouter les utilisateurs à un groupe ad hoc.

Question de droits j'ai mis un umask=0117 et dmask=0007 pour avoir des droits type '_rw_rw____' pour les fichiers et 'drwxrwx___' pour les dossiers afin que user et group puissent faire ce qu'ils veulent et que all puisse rien faire : pour les partitions ntfs, comme elles sont pas lisibles, les w se barent au montage :p avec un petit message de /var/log/messages ou il dit qu'il les monte en lecture seule. L'option 'defaults' est aussi mon amie, sinon il utilise user,exec,noauto.

Sinon j'aime avoir umask et dmask car j'aime pas voir tous les fichiers mis executables (et tous verts dans ls...) dans les partitions dos.

C'est vraiment bien, HAL, on peut faire pas mal de choses, par exemple monter les partitions ntfs avec captive-ntfs etc ...

Je trouve toutefois que ce serait mieux si la config était dans /etc/hal/, ce serait quand même plus clair non ?

----------

## Longfield

juste une petite précision : j'ai testé la beta de gnome 2.12 et (gnome-volume-manager 1.5.0) et par la même occasion hal 0.5.4 et dbus 0.3.6

Maintenant fstab-sync n'est plus utilisé pour mettre à jour fstab et monter les disques amovibles, mais c'est pmount qui a pris le relais : c'est bien plus propre comme manière de faire, vu que pmount marche vraiment du côté user et on n'a pas besoin de modifier le fstab !

Pour que vous perdiez moins de temps que moi  :Wink: , pensez à rajouter votre user dans le group plugdev afin d'avoir les droits d'execution sur pmount ! (en tous cas moi j'ai dû le faire manuellement) !

Sinon, ça marche toujours du tonerre cette famille : hotplug-udev-hal-dbus-pmount-gnome-volume-manager ! Je suis conquis !

----------

## ghoti

 *vishnoo wrote:*   

> Je trouve toutefois que ce serait mieux si la config était dans /etc/hal/, ce serait quand même plus clair non ?

 On peut parfaitement mettre sa config perso dans /etc/hal, ainsi on n'est pas tenté de toucher aux fichiers par défault !   :Wink: 

----------

## kopp

 *Longfield wrote:*   

> Pour que vous perdiez moins de temps que moi , pensez à rajouter votre user dans le group plugdev afin d'avoir les droits d'execution sur pmount ! (en tous cas moi j'ai dû le faire manuellement) !
> 
> 

 

Hum, étrange, je suis pas dans ce groupe, et pourtant je n'ai pas de problème, et je pense bien utiliser pmount, il s'est installé l'autre jour avec gnome-volume-manager... à moins qu'il faille être dans ce groupe pour l'utiliser, et que sinon, ça garde l'ancienne méthode...

----------

## TGL

 *kopp wrote:*   

> Hum, étrange, je suis pas dans ce groupe, et pourtant je n'ai pas de problème, et je pense bien utiliser pmount, il s'est installé l'autre jour avec gnome-volume-manager... à moins qu'il faille être dans ce groupe pour l'utiliser, et que sinon, ça garde l'ancienne méthode...

 

Ouais, en principe, quand pmount n'est pas utilisable, alors GVM utilise mount. Seulement mount lui ne marchera pour ton utilisateur que si tu as les entrées qui vont bien dans ta fstab bien sûr.

----------

## kopp

Ah oui effectivement, je constaste que ça n'utilise pas pmount...

Par contre, maintenant je me suis rajouter au groupe pmount, et ça ne marche pas pour autant. Y a t il autre chose à faire ?

edit : Ah, tiens, apparemment, il faut mettre une liste des périphérique dont on veut autoriser le montage par pmount, donc ça reste quand meme restrictif, pmount ne marchera donc pas pour tout ? quoi que, a priori, mettre /dev/sdb me permettrait de monter toutes les clés usb/mass storage que je veux ... voir /dev/sd* s'il  y en a plusieurs...)

edit2 : j'ai beau mettre /dev/sdb (ou /dev/sdb2) dans /etc/pmount.allow, ça ne fait quand meme rien quand je mets mon ipod...

je regarderais ça plus en détail plus tard, je vous tiens au courant pour l'évolution

----------

## UB|K

 *kopp wrote:*   

> j'ai beau mettre /dev/sdb (ou /dev/sdb2) dans /etc/pmount.allow, ça ne fait quand meme rien quand je mets mon ipod...

 

Ca y est, j'ai réussi à faire marcher pmount pour l'ipod, pour ça, j'ai juste ajouté mon utilisateur au group plugdev et pmount.allow ressemble à:

```
sdc2 ipod
```

et ça marche: il est monté dans /media/ipod

edit: par contre, un truc marche pas: l'eject sur sdc2 a besoin d'être fait en root sinon ça plante

----------

## kopp

 *UB|K wrote:*   

>  *kopp wrote:*   j'ai beau mettre /dev/sdb (ou /dev/sdb2) dans /etc/pmount.allow, ça ne fait quand meme rien quand je mets mon ipod... 
> 
> Ca y est, j'ai réussi à faire marcher pmount pour l'ipod, pour ça, j'ai juste ajouté mon utilisateur au group plugdev et pmount.allow ressemble à:
> 
> ```
> ...

 

Ah ok merci, je n'avais pas bien compris la syntaxe  :Smile: 

Pour le eject : efefctivement c'est frustrant, mais c'était déjà le cas avant, en tous cas chez moi, malgré l'appartenance au group disk... je ne sais pas comment faire ...

----------

## UB|K

 *kopp wrote:*   

> Pour le eject : efefctivement c'est frustrant, mais c'était déjà le cas avant, en tous cas chez moi, malgré l'appartenance au group disk... je ne sais pas comment faire ...

 

je pense qu'on peut s'en tirer avec sudo mais pour que ça marche il faudrait éditer l'ebuild de gnome-volume-manager pour qu'il ressemble à ça:

```
pkg_setup() {

        G2CONF="--with-eject-command=/usr/bin/sudo /usr/bin/eject"

}

```

ça devrait le faire, j'essayerai à l'occase

edit: ça marche po, pourtant j'y croyais à mort...

----------

## kopp

je ne crois pas que ce problème ait à voir avec gnome volume manager, il me semble que je ne l'avais pas encore installé au début où j'avais mon ipod, et que ça faisait déjà ça. Je dirais plutot sur les droits de /dev/sdb ou quelque chose du genre, mais je ne vois pas comment changer ça (j'ai un peu de mal avec toutes ces histoires de /dev moi) Peut-être une âme éclairée pour nous illuminer de sa lumière ...

*hint* TGL, dis nous tout!!! *hint* 

(C'est vrai quoi, TGL il sait toujours tout  :Wink: )

(Non, je ne fais pas de la lèche au modo   :Rolling Eyes:  )

EDIT : tiens du coup l'option : browse removable media when plugged n'agit plus quand c'est monté avec pmount... moi j'attendai comme un idiot que ça m'ouvre nautilus  :Smile: 

Sinon, je ne trouve toujours pas pour eject :i l utilise la méthode scsi en root, mais elle ne marche pas en user... je comprends pas

----------

