89
contributi
Nessun oggetto della modifica |
|||
Riga 1: | Riga 1: | ||
Dopo che ci siamo infilati attraverso tutti i punti riguardanti gli ''sysfs'' e seguendo i symlinks ai nomi del modulo, ora riportiamo uno script molto semplice che far� tutto quel lavoro, in un modo differente: | |||
<pre>#!/bin/bash | |||
# | |||
# find_all_modules.sh | |||
# | |||
for i in `find /sys/ -name modalias -exec cat {} \;`; do | |||
/sbin/modprobe --config /dev/null --show-depends $1 ; | |||
done | rev | cut -f i -d '/' | rev | sort -u</pre> | |||
Si pu� scaricare un file d'esempio, contenente questo script, dal web site del libro, riportato nella sezione Come contattarci che si trova nella prefazione. | |||
Questo script cerca nel ''sysfs'' tutti file chiamati ''modalias''. Il file ''modalias'' contiene gli alias dei moduli e comunica al comando ''modprobe'' quali moduli sono abbinati, e pertanto attivati, ai vari dispositivi. L'alias del modulo � composto da una combinazione di: produttore del dispositivo, ID, tipo di classe ed altri identificativi univoci per il tipo di dispositivo in questione. Tutti i moduli del driver del kernel hanno una lista interna dei dispositivi che supportano, che � generata automaticamente dalla lista dei dispositivi che il driver comunica al kernel di poter supportare. Il ''modprobe'' ricerca tutti i driver nella lista dei dispositivi e cerca di trovare i riscontri con gli alias che questa lista ha. Se ha un riscontro, allora provvede al caricamento del modulo (questa procedura � come la funzionalit� di caricamento automatico dei driver lavora in Linux). | |||
Lo script prevede l'arresto del programma ''modprobe'' prima di caricare il modulo, e riporta in display solo le azioni che eseguirebbe. Questo ci da una lista di tutti i moduli che sono utilizzati nel controllo di tutti i dispositivi del sistema. Eseguendo una piccola pulizia della lista, ordinandola e sistemando i campi adeguati, ci da un risultato come | |||
questo: | |||
<pre>$ find_all_modules.sh | |||
8139cp.ko | |||
8139too.koo | |||
ehci-hcd.ko | |||
fimware_vlass.ko | |||
i2c-i801.ko | |||
ieee80211.ko | |||
ieee80211_crypt.ko | |||
ipw2200.ko | |||
mii.ko | |||
mmc_core.ko | |||
pcmcia_core.ko | |||
rsrc_nonstatic.ko | |||
sdhci.ko | |||
snd-hda-codec.ko | |||
snd-hda-intel.ko | |||
snd-page-alloc.ko | |||
snd-pmc.ko | |||
snd-timer.ko | |||
snd.ko | |||
soundcore.ko | |||
uhci-hcd.ko | |||
usbcore.ko | |||
yenta_socket.ko</pre> | |||
Questa � la lista di tutti i moduli che sono necessari alla gestione dell'hardware della macchina. | |||
Lo scritto potr� egualmente ritornare alcuni messaggi di errore che possono essere del tipo: | |||
<pre>FATAL: Module pci:v00008086d00002592sv000010CFsd000012E0bc03sc00i00 not found. | |||
FATAL: Module serio:ty01pr00id00ex00 not found.</pre> | |||
Questo di dice che non si trova un modulo che gestisce il dispositivo. Questo non deve comunque interessare pi� di tanto, poich� alcuni dispositivi non hanno driver nel kernel che lavorino per loro. |
contributi