cClaude.rocks ☕ Le blog

[Nouvelles technologies, sciences et coups de gueule…]

Menu

udev est le gestionnaire de périphériques du noyau Linux. Sa fonction principale est de gérer les périphériques et de les exposer dans le répertoire /dev. udev fournit dynamiquement des nœuds seulement pour les périphériques réellement présents sur le système.

udev s’exécute en mode utilisateur et utilise un système évènementiel pour activer les règles liées aux périphériques.

Il prend, entre autres, en charge le montage des périphériques USB.


ඏ

Configuration de dev

La configuration de udev se fait à travers de règles comme suit :

  • /etc/udev/rules.d/*.rules : règles locales ajoutées par l’administrateur (Vous ?),
  • /run/udev/rules.d/*.rules : règles volatiles, généralement créées par d’autres règles,
  • /lib/udev/rules.d/*.rules : règles fourni par la distribution.

Pour voir l’ensemble des règles en tenant compte de l’ordre de prise en compte, vous pouvez utiliser la commande suivante :

( [ -d /etc/udev/rules.d/ ] && find /etc/udev/rules.d/*.rules ; [ -d /run/udev/rules.d/ ] && find /run/udev/rules.d/*.rules ; [ -d /lib/udev/rules.d/ ] && find /lib/udev/rules.d/*.rules ) | sort -k1.10

ඏ

gPhoto² et udev

gPhoto² utilise ce mécanisme pour monter votre appareil photo. Pour trouver les règles existantes pour gPhoto² vous pouvez utiliser la commande :

( [ -d /etc/udev/rules.d/ ] && find /etc/udev/rules.d/*.rules ; [ -d /run/udev/rules.d/ ] && find /run/udev/rules.d/*.rules ; [ -d /lib/udev/rules.d/ ] && find /lib/udev/rules.d/*.rules ) | grep gphoto

ou mieux (on regarde à l’intérieur des fichiers plutôt que de ne regarder que le nom) :

while read -r F ; do
  if grep --quiet gphoto2 "$F" ; then
    echo "$F"
  fi
done < <(
  [ -d /etc/udev/rules.d/ ] && find /etc/udev/rules.d/*.rules
  [ -d /run/udev/rules.d/ ] && find /run/udev/rules.d/*.rules
  [ -d /lib/udev/rules.d/ ] && find /lib/udev/rules.d/*.rules
  )

Cette dernière solution permet également de détecter des règles obsolètes ou des doublons, ce qui semble arriver, au moins, lorsqu’on installe successivement une version depuis le dépôt et une version depuis le code source. Voir le billet sur l’installation de gPhoto².

Nettoyer ces règles inutiles ne peut qu’accélérer votre système. Il ne faut cependant pas effacer n’importe quoi non plus…

Premier exemple

  • Exemple de doublons

    Dans un cas :

    while read -r F ; do grep --with-filename '  libgphoto2 ' "$F" ; done < <( [ -d /etc/udev/rules.d/ ] && find /etc/udev/rules.d/*.rules ; [ -d /run/udev/rules.d/ ] && find /run/udev/rules.d/*.rules ; [ -d /lib/udev/rules.d/ ] && find /lib/udev/rules.d/*.rules )
    

    avait comme résultat :

    /etc/udev/rules.d/90-libgphoto2.rules:#   libgphoto2      2.5.23         all camlibs, gcc, ltdl, EXIF
    /lib/udev/rules.d/60-libgphoto2-6.rules:#   libgphoto2      2.5.16         all camlibs, gcc, ltdl, EXIF
    

    On comprend que l’installation faite à partir à générer le fichier /lib/udev/rules.d/60-libgphoto2-6.rules que n’a pas supprimé la procédure de désinstallation. Le fichier /etc/udev/rules.d/90-libgphoto2.rules venant de la version installée depuis le code source de gPhoto².

    La correction, dans ce cas, se fait simplement à l’aide de :

    sudo rm /lib/udev/rules.d/60-libgphoto2-6.rules
    

    Seconde exemple

  • Autre exemple de doublons

    Sur une installation de récente

    while read -r F ; do
      if grep --quiet gphoto2 "$F" ; then
        echo "$F"
      fi
    done < <(
      [ -d /etc/udev/rules.d/ ] && find /etc/udev/rules.d/*.rules
      [ -d /run/udev/rules.d/ ] && find /run/udev/rules.d/*.rules
      [ -d /lib/udev/rules.d/ ] && find /lib/udev/rules.d/*.rules
      )
    

    donnait

    /etc/udev/rules.d/90-libgphoto2.rules
    /lib/udev/rules.d/60-libgphoto2-6.rules
    

    En comparant le contenu des fichiers :

    kdiff3 /etc/udev/rules.d/90-libgphoto2.rules /lib/udev/rules.d/60-libgphoto2-6.rules
    

    il est possible de déduire assez simplement que /lib/udev/rules.d/60-libgphoto2-6.rules est une nouvelle version de /etc/udev/rules.d/90-libgphoto2.rules avec quelques corrections et une ligne en plus…

    et là, on sait qu’il est possible de supprimer l’ancien fichier :

    sudo rm /etc/udev/rules.d/90-libgphoto2.rules
    

ඏ

Références

ᦿ


ℹ 2006 - 2021 | 🏠 Retour à l'accueil du domaine | 🏡 Retour à l'accueil du blog