Wiki Root66

Le Wiki de Root66, tuto, infos et astuces

Outils pour utilisateurs

Outils du site


telecharger_et_installer_automatiquement_les_listes_de_materiels_pci_et_usb

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 : 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 :

find / -xdev -iname "pci.ids"
find / -xdev -iname "usb.ids"

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 :

urpmf --all pci.ids
urpmf --all usb.ids

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.

#!/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

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 :

cp -f pci.ids /usr/src/linux/drivers/pci/

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 :

cd /usr/src
ln -sf linux-$(uname -r) linux

Ou alors on pourrait remplacer la ligne ci-dessus par :

cp -f pci.ids /usr/src/linux-$(uname -r)/drivers/pci/

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 :

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
# ...

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…

;-)

telecharger_et_installer_automatiquement_les_listes_de_materiels_pci_et_usb.txt · Dernière modification : 2021/10/18 16:09 de 127.0.0.1