Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

telecharger_et_installer_automatiquement_les_listes_de_materiels_pci_et_usb [2008/05/07 13:13]
telecharger_et_installer_automatiquement_les_listes_de_materiels_pci_et_usb [2017/02/21 15:10] (version actuelle)
Ligne 1: Ligne 1:
 +====== Introduction ======
 +Cet article présente un **script bash** en vue de télécharger automatiquement les derniers fichiers **pci.ids** et **usb.ids**. Ces fichiers sont nécessaires à la détection des matériels, par exemple quand on emploie des outils comme **lspci**, **lsusb**, **lshw** et **usbview**. Or il s'avère que les fichiers fournis par les distributions sont souvent obsolètes, vu que ce n'est pas du code, donc pas en relation avec une quelconque politique de sécurité. Voir à ce sujet le dernier § de cet article.
 +
 +A noter l'article similaire suivant : [[http://root66.freecontrib.org/wiki/doku.php?id=telecharger_et_installer_automatiquement_un_dictionnaire_openoffice|Dictionnaires OpenOffice et Mozilla]].
 +
 +Article rédigé par **Jeanmm** ;-)\\
 +Version initiale : 30/08/2006.
 +
 +====== Le script ======
 +
 +On commencera par rechercher les dossiers où les fichiers sont déjà installés par des commandes du type :
 +
 +<code bash>
 +find / -xdev -iname "pci.ids"
 +find / -xdev -iname "usb.ids"
 +</code>
 +
 +Il va de soi que la recherche des dossiers ci-dessus devra se faire après l'installation notamment des logiciels cités en début d'article.
 +On peut aussi procéder autrement, en une seule commande, pour rechercher les paquetages et les dossiers intéressants :
 +
 +<code bash>
 +urpmf --all pci.ids
 +urpmf --all usb.ids
 +</code>
 +
 +Le script contient assez de commentaires pour expliquer les traitements réalisés. On l'adaptera à ses besoins en y modifiant les noms des dossiers selon les résultats des commandes ci-dessus.
 +
 +<code bash>
 +#!/bin/sh
 +
 +##########################################################
 +# Script pour aspirer les fichiers pci.ids et usb.ids
 +# et les installer aux bons endroits sur le disque
 +##########################################################
 +#
 +# Auteur  : Jeanmm
 +# Date    : aout 2006
 +# Licence : GPL
 +# Lien    : http://www.root66.net/
 +
 +# Dossier tempo de destination :
 +cd /tmp
 +
 +# Commande d'aspiration wget :
 +wget "http://pciids.sourceforge.net/pci.ids" -o WgetPci.log
 +cat WgetPci.log
 +wget "http://www.linux-usb.org/usb.ids" -o WgetUsb.log
 +cat WgetUsb.log
 +
 +# Copies utiles
 +rm -f /usr/share/pci.ids
 +rm -f /usr/share/lshw/pci.ids
 +rm -f /usr/src/linux/drivers/pci/pci.ids
 +rm -f /usr/share/usb.ids
 +rm -f /usr/share/lshw/usb.ids
 +
 +cp -f pci.ids /usr/share/
 +cp -f pci.ids /usr/share/lshw/
 +cp -f pci.ids /usr/src/linux/drivers/pci/
 +cp -f usb.ids /usr/share/
 +cp -f usb.ids /usr/share/lshw/
 +
 +# Vérification
 +ls -la /usr/share/*.ids
 +</code>
 +
 +Il est conseillé de créer un script exécutable analogue à celui présenté ci-dessus, de le copier dans un dossier d'exécutables comme **/usr/local/bin**. Toutes les commandes et le script doivent être exécutés en root.
 +
 +Remarque :
 +
 +La ligne suivante peut poser un problème :
 +<code bash>
 +cp -f pci.ids /usr/src/linux/drivers/pci/
 +</code>
 +En effet, "linux" est ici en général un lien symbolique vers le vrai dossier contenant les sources du noyau, et au fil des évolutions des sources du noyau ce lien pourra peut-être disparaitre. Pour une Mandriva on a par exemple des noms du type "linux-version", la version courante pouvant être obtenue par commande "uname -r". On pourra donc introduire en début de script des lignes du type :
 +<code bash>
 +cd /usr/src
 +ln -sf linux-$(uname -r) linux
 +</code>
 +Ou alors on pourrait remplacer la ligne ci-dessus par :
 +<code bash>
 +cp -f pci.ids /usr/src/linux-$(uname -r)/drivers/pci/
 +</code>
 +
 +====== Automatiser encore plus ======
 +
 +Le script est déjà pas mal en soi, mais pour ceux qui veulent aller encore plus loin et qui installent souvent du matériel, rien de plus simple que de l'insérer dans la moulinette **cron** pour qu'il soit lancé automatiquement à intervalles réguliers, par exemple une fois par semaine...
 +
 +====== Un exemple de fichiers obsolètes ======
 +
 +Juste pour prouver l'utilité des mises-à-jour perso, voici un exemple produit le 31/8/6 suite à la mise-à-jour du kernel-source de la mandriva 2006 :
 +
 +<code bash>
 +find / -xdev -iname "pci.ids"
 +/usr/src/linux-2.6.12-24mdk/drivers/pci/pci.ids
 +/usr/src/linux-2.6.12-25mdk/drivers/pci/pci.ids
 +
 +ls -la /usr/src/linux-2.6.12-24mdk/drivers/pci/pci.ids
 +-rw-r--r--  1 root root 419117 aoû 30 18:11 /usr/src/linux-2.6.12-24mdk/drivers/pci/pci.ids
 +
 +ls -la /usr/src/linux-2.6.12-25mdk/drivers/pci/pci.ids
 +-rw-r--r--  1 root root 339069 aoû 18 19:45 /usr/src/linux-2.6.12-25mdk/drivers/pci/pci.ids
 +
 +head /usr/src/linux-2.6.12-25mdk/drivers/pci/pci.ids
 +# ...
 +#      Daily snapshot on Tue 2005-03-08 10:11:48
 +# ...
 +
 +head -n 15 /usr/src/linux-2.6.12-24mdk/drivers/pci/pci.ids
 +# ...
 +#      Daily snapshot on Wed 2006-08-30 01:05:05
 +# ...
 +</code>
 +
 +On voit donc que le fichier installé par le tout dernier noyau 2.6.12-25 date du 8 mars 2005, soit **1 an et demi de retard** ! Le fichier récent contient à peu près 80000 octets d'infos en plus, d'où l'intérêt de mettre le dernier fichier pci.ids !
 +
 +Espérons que ceux qui nous concoctent les paquetages mettront un script comme celui de cet article dans leurs procédures...
 +
 +;-)
 
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki