LKN: Configurare e Compilare: differenze tra le versioni

Riga 1: Riga 1:
Uno dei punti pi� delicati e difficili nella creazione della propria versione del kernel Linux � quello di determinare esattamente quali driver e quali opzioni di configurazione sono richiesti per il corretto funzionamento dalla macchina su cui viene installato.
Questo capitolo descrive i programmi necessari per configurare un kernel, compilarlo e fare il boot con successo. È utile consultare il file Documentation/Changes per verificare esattamente quale sia la versione richiesta di ogni programma descritto. Qui vengono riportate le versioni dei programmi che funzionano con il kernel 2.6.18, su cui si basa la trattazione. Chi sta usando un kernel diverso, verifichi di avere installate le versioni richieste, come riportato nel file sopra specificato, altrimenti qualcosa potrebbe non funzionare correttamente e sarebbe molto difficile capire cosa.
Questo capitolo guider� il lettore attraverso questo processo di selezione e scelta dei driver corretti.


==Usare un Kernel di una Distribuzione==
=='''Strumenti per Compilare il Kernel'''==


Uno dei metodi pi� semplici, per determinare quali moduli siano necessari, � quello di partire dalla configurazione che viene installata dal pacchetto del kernel della distribuzione che si sta usando. � infatti molto pi� semplice determinare di quali driver si ha bisogno basandosi su quelli installati in un sistema in funzione, in cui i driver corretti sono gi� associati all'hardware in utilizzo.
La maggior parte delle distribuzioni prevedono la possibilit� di installare una raccolta di pacchetti per lavorare con il kernel. Qualora la distribuzione offra questa possibilit� � consigliabile sfruttarla, piuttosto che cercare ogni singola applicazione necessaria.


Se invece si sta personalizzando un kernel per una macchina sulla quale non � installata una distribuzione Linux, allora conviene partire dalla versione LiveCD di una distribuzione. Questo consente all'utente di far partire Linux sulla macchina in oggetto e di determinare in maniera semplice le opzioni di configurazione del kernel e che consentono il funzionamento ottimale della macchina stessa.
Per compilare un kernel servono solo tre pacchetti: un compilatore, un linker e l'utility make. Questa sezione descrive il contenuto di ognuno di questi pacchetti.


===Dove si Trova la Configurazione del Kernel?===
==='''Compilatore'''===


Quasi tutte le distribuzioni prevedono i files di configurazione del kernel quale parte del pacchetto del kernel. Si consiglia di leggere la documentazione relativa alla Distribuzione stessa per sapere dove sono installati i files di configurazione. Solitamente si trova in una subdirectory attaccata a /usr/src/linux/.
Il kernel Linux � scritto in linguaggio C, con alcune piccole sezioni scritte in assembly. Per compilare un kernel � necessario utilizzare il compilatore per C gcc. La maggior parte delle distribuzioni comprendono un pacchetto di nome gcc che dovrebbe essere installato. Se volete scaricare il compilatore e compilarlo da soli, potete trovarlo all'indirizzo http://gcc.gnu.org.


Se avete difficolt� a trovare la configurazione del kernel, allora guardate nel kernel stesso. Molte distribuzioni implementano i files di configurazione nel kernel stesso, che incluso nella directory /proc. Potete verificare se state usando una di queste distribuzioni digitando in command-line il seguente comando:
La versione pi� vecchia di gcc che pu� essere utilizzata per compilare un kernel 2.6.18 funzionante � la 3.2. Occorre fare attenzione che utilizzare l'ultima versione di gcc non � sempre una buona idea: alcune delle versioni pi� recenti non compilano correttamente il kernel quindi, a meno che non si voglia aiutare nel lavoro di debug del compilatore, � sconsigliato utilizzarle.
<pre>$ ls /proc/config.gz
/proc/config.gz</pre>


Se il file ''/proc/config.gz'' � presente, allora copiatelo nella directory del sorgente kernel ed estraetelo:
Per scoprire che versione di gcc avete installata usate il seguente comando:


<pre>$ cp /proc/config.gz -/linux/
<pre>$ gcc --version</pre>
$ cd -/linux
$ gzip -dv config.gz
config.gz:      74.9% - - replaced with config</pre>
Copiate questo file di configurazione nella vostra directory del kernel e rinominatelo in ''.config''.
Ora potrete utilizzare questo file come base di partenza nella personalizzazione della configurazione del kernel cos� come descritto nel [[LKN:_Configurare_e_Compilare|Capitolo 4]].


Se si usa il file di configurazione in oggetto, allora quale buona norma, si dovrebbe anche sempre creare un'immagine del kernel operativo (funzionante) per la vostra macchina. Lo svantaggio derivante dall'utilizzo di questa immagine � il fatto che si dovr� configurare quasi ogni modulo del kernel e driver che si trova nel sorgente del kernel stesso. Infatti un kernel standard copre un gran numero di macchine e di hardware, questo ci consente di disattivare molti drivers ed opzioni che non vengono utilizzati nel nostro sistema. Si raccomanda comunque di disattivare solo quelle opzioni di cui siamo sicuri al 100% che non vengono utilizzate, ci possono essere infatti elementi del sistema che hanno necessitano di specifiche alla sola apparenza superflue.
==='''Linker'''===


===Determinare quali Moduli Siano Necessari===
Il compilatore C gcc non compie il lavoro di compilazione interamente da solo, ma ha bisogno di alcuni strumenti, chiamati binutils, per fare il linking e l'assembling dei sorgenti. Il pacchetto binutils contiene anche altre utili applicazioni che permettono di intervenire sui file in molti modi, ad esempio per vedere il contenuto di una libreria.


Il tempo di compilazione del file di configurazione, implementato in una distribuzione, � molto lungo, datosi che tutti i diversi driver vengono inizializzati. Si dovrebbe cercare di inizializzare solo i driver per l'hardware presente nel sistema, cos� da ridurre i tempi di compilazione del kernel, inoltre la selezione di alcuni o di tutti i driver nel kernel, consente una riduzione di memoria utilizzata ed in alcune architetture un funzionamento del sistema pi� veloce. Per escludere i driver dal kernel � necessario per� determinare quali moduli sono indispensabili per il funzionamento dell'hardware installato. Attraverso l'utilizzo di due esempi, cercheremo di spiegare come determinare quali driver siano indispensabili al controllo dell'hardware.
binutils si trova di solito all'interno di un pacchetto di nome... binutils in ogni distribuzione. Se volete scaricarlo e installarlo da soli, potete trovarlo all'indirizzo http://www.gnu.org/software/binutils.


Le informazioni che mettono in relazione i dispositivi ai driver presenti nel kernel sono conservate in vari spazi del sistema. Uno degli elementi pi� importanti dove sono salvate queste informazioni il file di sistema ''sysfs''. All'inizializzazione di Linux ''sysfs'' normalmente dovrebbe essere caricato nella directory ''/sys''. ''sysfs'' consente di dare un'occhiata a come le varie parti del kernel sono legate l'un l'altra, questo lo si deduce grazie ai vari symlink che puntano all'interno dell'intero file di sistema.
La versione pi� vecchia di binutils che pu� essere utilizzata per il kernel 2.6.18 la 2.12. Per scoprire quale versione avete installata nel vostro sistema, il comando � il seguente:


In tutti gli esempi di seguito, saranno riportati listati reali di ''sysfs'' e saranno indicati tipi di hardware. La vostra macchina sar� certamente diversa, ma i luoghi relativi dove sono salvate le informazioni sono gli stessi. Non ci si deve allarmare se i nomi di file nel ''sysfs'' non sono i medesimi, rientra nelle aspettative.
<pre>$ ld -v</pre>


Inoltre, la struttura interna del file di sistema ''sysfs'' cambia costantemente, questo dovuto sia alla riorganizzazione dei dispositivi sia alle revisioni del kernel tese a migliorare l'adattamento delle strutture interne del kernel allo spazio utilizzato. A causa di questo, col tempo, alcuni dei symlink, precedentemente menzionati in questo capitolo, possono non essere presenti. Tuttavia, le informazioni sono ancora tutte presenti, al massimo sono state spostate di qualche riga.
==='''Make'''===


====Esempio: Come Determinare il Driver di Rete====
make � uno strumento che cerca nei sorgenti del kernel quali file devono essere compilati e successivamente lancia il compilatore e altri strumenti per creare il kernel. Il kernel necessita della versione GNU di make, che solitamente si trova in ogni distribuzione in un pacchetto chiamato make.


Uno degli elementi pi� comuni ed importanti in un sistema � la carta-interfaccia di rete. � essenziale capire quale driver la controlla ed attivarlo nella configurazione in maniera da consentire un corretto funzionamento delle connessioni di rete.
Se volete scaricare e installare make da soli potete trovarlo all'indirizzo:
http://www.gnu.org/software/make.


Primo: partendo dalle connessioni di rete si risale ai device PCI
La release pi� vecchia di make che pu� essere utilizzata con un kernel 2.6.18 � la 3.79. Vi consiglio di installare la versione stabile pi� recente, perch� le versioni pi� nuove lavorano pi� velocemente nel processare i file build.
<pre>$ ls /sys/class/net/
Per verificare quale versione di make avete installata usate il comando:
eth0  eth1  eth2  lo</pre>


La directory ''lo'' rappresenta il dispositivo di rete loopback, e non � dipendente da nessun dispositivo di rete realmente installato. Invece si dovrebbe riservare particolare attenzione alle directory ''eth0'', ''eth1'' e ''eth2'', datosi che si riferiscono a dispositivi realmente esistenti
<pre>$ make  --version</pre>


Per determinare approfonditamente di quali dispositivi ci si deve occupare, si utilizza il comando ''ifconfig'':
=='''Strumenti per Usare il Kernel'''==


<pre>$ /sbin/ifconfig -a
Anche se solitamente la versione del kernel che gira in un sistema non influisce su alcuna applicazione a livello utente, ci sono alcuni programmi per cui invece � importante. Questa sezione descrive alcuni strumenti che probabilmente sono gi� installati nel vostro sistema Linux: se aggiornate il kernel ad una versione diversa da quella inclusa nella vostra distribuzione, potrebbe essere necessario aggiornare anche alcuni di questi pacchetti, per permettere al sistema di funzionare correttamente.
eth0 Link  encap:Ethernet  HWaddr 00:12:3F:65:7D:C2
inet  addr:192.168.0.13  Bcast:192.168.0.255  Mask:255.255.255.0
UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:2720792 errors:0 dropped:0 overruns:0 frame:0
TX packets:1815488 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:3103826486 (2960.0 Mb) TX bytes:371424066 (354.2 Mb)
Base address:0xdcc0 Memory:dfee0000-dff00000
eth1 Link  encap:UNSPEC  HWaddr 80-65-00-12-7D-C2-3F-00-00-00-00-00-00-00-00
BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
eth2 Link  encap:UNSPEC  HWaddr 00-02-3C-04-11-09-D2-BA-00-00-00-00-00-00-00
BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
lo Link  encap:Local Lookback
        inet addr:127.0.0.1  Mask:255.0.0.0
UP  LOOPBACK  RUNNING  MTU:16436  Metric:1
RX packets:60 errors:0 dropped:0 overruns:0 frame:0
TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13409 (13.0 Kb) TX bytes:13409 (13.0 Kb)</pre>


Da questo listato si pu� riconoscere nel dispositivo di rete <tt>eth0</tt>, quello attivo e funzionante, infatti nelle righe;
==='''util-linux'''===


<pre>eth0 Link  encap:Ethernet  HWaddr 00:12:3F:65:7D:C2
Il pacchetto util-linux � una raccolta di piccole utilit� che assolvono ad un'ampia gamma di compiti; la maggior parte di queste utilit� si occupa del montaggio e della creazione di partizioni su disco e dell'orologio di sistema.
inet  addr:192.168.0.13  Bcast:192.168.0.255  Mask:255.255.255.0</pre>
Se volete scaricare ed installare questo pacchetto da soli lo trovate al seguente indirizzo: http://www.kernel.org/pub/linux/utils/util-linux.


La versione pi vecchia di util-linux compatibile con il kernel 2.6.18 la 2.10. &Egrave; consigliabile installare la versione pi recente di questo pacchetto, perch le ultime versioni supportano le nuove caratteristiche implementate nel kernel. Ad esempio bind mounts un'opzione inclusa nei kernel pi nuovi che necessita della versione pi recente di util-linux per poter funzionare correttamente.


Per scoprire che versione di util-linux avete installata nel vostro sistema usate il seguente comando:


Questo risultato dimostra che il dispositivo Ethernet si vede assegnato un indirizzo IP valido (<tt>inet</tt>).
<pre>$ fdformat --version</pre>


Ora, dopo che abbiamo individuato il dispositivo <tt>eth0</tt> e ci siamo accertati di volerlo implementare nel nostro nuovo kernel, dobbiamo individuare quale driver lo controlla. Ci� si realizza con una semplice procedura, che � quella si seguire i link nel file di sistema sysfs, basta digitare un comando di una sola riga:
==='''module-init-tools'''===


<pre>$ basename `readlink /sys/class/net/eth0/device/driver/module`
Per poter utilizzare i moduli nel kernel � necessario installare il pacchetto module-init-tools. Un modulo del kernel � un pezzetto di codice caricabile che pu� essere aggiunto o rimosso dal kernel anche mentre questo sta girando. &Egrave; comodo compilare i driver dei device come moduli per poter caricare solo quelli relativi all'hardware presente, invece di essere costretti ad inserire staticamente nel kernel tutti i driver e le opzioni possibili. L'uso dei moduli permette di risparmiare memoria, caricando solo le parti di codice necessarie per far funzionare correttamente il sistema.
e1000</pre>


Il risultato mostra che il modulo <tt>e1000</tt> controlla il dispositivo di rete <tt>eth0</tt>. Il comando ''basename'' racchiude in un'unica linea di comando i seguenti passaggi:
Il processo di caricamento dei moduli ha subito una revisione radicale nella versione 2.6 del kernel. Il linker per i moduli (il codice che si occupa di risolvere tutti i simboli e capire come associare i pezzi in memoria) adesso � compilato all'interno del kernel, e questo permette di avere degli strumenti a livello userspace molto leggeri. Le distribuzioni pi� vecchie hanno un pacchetto che si chiama modutils, e che non funziona correttamente con il kernel 2.6. Per lavorare correttamente con i moduli con un kernel 2.6 � necessario il pacchetto module-init-tools.


: 1. Individua il symlink ''/sys/class/net/eth0/device'' contenuto all'interno della directory ''/sys/device/'', la quale contiene le informazioni relative al dispositivo che controlla ''eth0''. Fate attenzione al fatto che nelle nuove versioni del kernel la directory ''/sys/class/net/eth0'' potrebbe essere un symlink.  
Chi volesse scaricare e installare da solo questo pacchetto, pu� trovarlo all'indirizzo:
http://www.kernel.org/pub/linux/utils/kernel/module-init-tools.


: 2. All'interno della directory che descrive il dispositivo in sysfs, c'un symlink che punta al driver relativo a questo dispositivo. Questo symlink � nominato ''driver'', pertanto si segue questo collegamento.
La versione pi� vecchia di module-init-tools compatibile con il kernel 2.6.18 � la 0.9.10. &Egrave; consigliabile installare l'ultima release, in quanto permette di utilizzare alcune caratteristiche nuove del kernel. Ad esempio, la possibilit� di creare una blacklist dei moduli che non si vuole vengano automaticamente caricati da udev una di queste opzioni che sono presenti solo nelle versioni pi� recenti di module-init-tools.
Per scoprire quale versione avete installata nel vostro sistema usate il comando:


: 3. All'interno della directory che descrive il driver in sysfs, c'� un symlink che punta al modulo che si trova all'interno del driver in oggetto. Questo symlink � chiamato <tt>module</tt>. Noi cerchiamo l'oggetto a cui punta questo symlink, per ottenerlo ci serviamo del comando ''readlink'', il quale produce un risultato simile a questo:
<pre>$ depmod -V</pre>
<pre>$ readlink /sys/class/net/eth0/device/driver/module
../../../../module/e1000</pre>


: 4. Datosi che a noi interessa solo il nome del modulo e ci disinteressiamo del resto del risultato ottenuto con il comando ''readlink'', tenendo solo la parte pi� a destra del risultato. Questo � appunto ci� che il comando ''basename'' realizza. Esercitandolo direttamente sull'intero percorso, questo comando ci ritorna quanto segue:
=='''Strumenti Relativi ai Filesystem'''==
<pre>$ basename ../../../../module/e1000
e1000</pre>


Cos� abbiamo inserito il lungo risultato del symlink, ottenuto da ''readlink'', quale parametro nel programma ''basemane'', permettendo cos� l'intero processo di essere realizzato in una sola riga.
Per creare, formattare e riparare le partizioni dei dischi sono necessari molti strumenti specifici per i vari filesystem; il pacchetto utils-linux ne contiene alcuni, ma molti dei pi� diffusi filesystem hanno dei pacchetti a s� stanti che contengono le utilit� necessarie.
Ora che abbiamo identificato il nome del modulo, si dovrebbe trovare l'opzione della configurazione del kernel che lo controlla. Si pu� cercare nei vari menu di configurazione dei dispositivi di rete oppure cercare nel codice sorgente del kernel stesso per essere sicuri di avere l'opzione giusta.
<pre>$ cd ~/linux/linux-2.6.17.8
$ find -type f -name Makefile | args grep e1000
./drivers/net/Makefile:obj-$(CONFIG_E1000) += e1000/
./drivers/net/e1000/Makefile:obj-$(CONFIG_E1000) += e1000.o
./drivers/net/e1000/Makefile:e1000-objs := e1000_main.o e1000_hw.o e1000_ethtool.o e1000_param.o</pre>


Si precisa che "e1000'', usato in questo esempio, deve essere sostituito con il nome del modulo che state analizzando.
==='''ext2/ext3/ext4'''===


La cosa che pi� ci interessa nel risultato del comando ''find'' che abbiamo appena eseguito � l'identificazione di ogni singola linea dove compaia il termine <tt>CONFIG_</tt>. Questa � l'opzione di configurazione che il kernel deve aver attivato per poter caricare il modulo. Nell'esempio precedente l'opzione di configurazione che c'interessa � pertanto <tt>CONFIG_E1000</tt>.
I filesystem tipo ext3 e quello in fase di sviluppo ext4 sono un'evoluzione dell'ext2 e possono essere gestiti con gli stessi strumenti; le versioni pi� recenti di ogni applicazione basata su ext2 possono essere impiegate anche sugli altri due tipi.


Adesso si dispone dell'informazione necessaria per poter configurare il kernel. Si esegue lo strumento menu di configurazione:
Per utilizzare questi filesystems dovete avere il pacchetto e2fsprogs; l'indirizzo a cui trovarlo per scaricarlo e installarlo da soli �: http://e2fsprogs.sourceforge.net.
: <pre>$ make menuconfig</pre>
Dopodich� si prema il tasto / (slash) (che ha il compito di far partire una ricerca), e si digita l'opzione di configurazione, senza la parte di testo <tt>CONFIG_</tt>. Questo processo � mostrato nella figura 7-1.


La versione pi vecchia di e2fsprogs funzionante con il kernel 2.6.18 la 1.29; altamente consigliato utilizzare la release pi recente per sfruttare al meglio le nuove caratteristiche dei filesystems ext3 e ext4.


Figura 7-1. Ricerca in menuconfig
Per scoprire quale versione di e2fsprogs � installata nel vostro sistema il comando �:


Il sistema di configurazione del kernel vi dir� ora esattamente dove selezionare l'opzione per abilitare questo modulo. Vedi figura 7-2.
<pre>$ tune2fs</pre>


==='''JFS'''===


Figura 7-2. Risultato della ricerca in menuconfig
Per usare il filesystem JFS di IBM � necessario avere il pacchetto jfsutils; se volete scaricarlo e installarlo da soli lo trovate all'indirizzo: http://jfs.sourceforge.net.


La prima parte della schermata evidenzia quello che stavate cercando. Le informazioni mostrate dalla schermata vi dicono che per attivare il modulo <tt>E1000</tt> nel kernel, e che la seguente opzione di configurazione deve essere abilitata:
La versione pi� vecchia di jfsutils utilizzabile correttamente con il kernel 2.6.18 � la 1.1.3; per verificare quale versione avete installata lanciate il comando:


: <tt>Device Drivers</tt>
<pre>$ fsck.jfs -V</pre>
: : <tt>Network device support</tt>
: : : <tt>[*] Network device support</tt>
: : : : <tt>Ethernet (1000 Mbit)</tt>
: : : : <tt>[*] Intel(R) PRO/1000 Gigabit Ethernet support</tt>


Queste procedure funzionano per ogni tipo di dispositivo attivo nel kernel.
==='''ReiserFS'''===


Per usare il filesystem ReiserFS necessario il pacchetto reiserfsprogs. Per scaricarlo e installarlo da soli l'indirizzo : http://www.nemesys.com/download.html.


====Esempio: Un Dispositivo USB====
La versione pi� vecchia di reiserfsprogs funzionante con il kernel 2.6.18 � la 3.6.3; il comando per controllare quale versione � installata nel sistema �:


<pre>$ reiserfsck -V</pre>


==='''XFS'''===


====Lasciate che il Kernel ci Dica di Cui Abbiamo Bisogno====
Per usare il filesystem XFS di SGI � necessario avere il pacchetto xfsprogs; � possibile scaricare il pacchetto da installare all'indirizzo: http://oss.sgi.com/project/xfs.


La release pi vecchia di xfsprogs compatibile con il kernel 2.6.18 la 2.6.0; per verificare quale versione installata nel sistema si utilizza:


==Determinazione del Modulo Corretto Partendo da Zero==
<pre>$ xfs_db -V</pre>


===Dispositivi PCI===
==='''Quota'''===


Per usufruire della funzione quota del kernel necessario avere installato il pacchetto quota-tools;* {{Box|To do|nota a pi di pagina: scoprire come si fa}} questo pacchetto contiene delle applicazioni che permettono di fissare le quote a disposizione di ogni utente, forniscono statistiche sull'uso delle quote dei vari utenti e dirama degli avvertimenti quando questi stanno per esaurire la loro parte di filesystem.


===Dispositivi USB===
Per scaricare e installare questo pacchetto da soli l'indirizzo �: http://sourceforge.net/projects/quota. La versione pi� vecchia utilizzabile con il kernel 2.6.18 � la 3.0.9; � possibile visualizzare la versione installata con il comando:


===Root Filesystem===
<pre>$ quota -V</pre>


==='''NFS'''===


====Controller di Disco====
Per utilizzare correttamente il filesystem NFS � necessario il pacchetto nfs-utils. ** {{Box|To do|nota a pi� di pagina: scoprire come si fa}} Questo pacchetto contiene dei programmi con cui � possibile montare delle partizioni NFS come client e far girare un server NFS.


===Un Aiuto dallo Script===
L'indirizzo da cui prelevare questo pacchetto per installarlo da soli �: http://nfs.sf.net.
 
La versione pi� vecchia funzionante con il kernel 2.6.18 � la 1.0.5; il comando per determinare la versione installata �:
 
<pre>$ showmount --version</pre>
 
=='''Altri Strumenti'''==
 
Ci sono alcuni altri programmi che sono strettamente legati alla versione del kernel. Di solito questi programmi non sono necessari per far funzionare il kernel, ma rendono possibile l'accesso a diversi tipi di funzioni dell'hardware.
 
==='''udev'''===
 
udev � un programma che permette a Linux di fornire un sistema di attribuzione dei nomi dei device nella directory /dev. Inoltre fornisce una gestione dinamica di /dev, molto simile a quella fornita dal pi� vecchio (ed ora non pi� utilizzato) filesystem devfs. Quasi tutte le distribuzioni Linux usano udev per gestire la directory /dev, per cui risulta necessario per eseguire correttamente il boot del sistema.
 
Sfortunatamente udev si appoggia alla struttura di /sys, che � nota per cambiare continuamente con le release del kernel. Alcuni di questi cambiamenti in passato sono stati responsabili del malfunzionamento di udev, cosicch� il sistema non era pi� in grado di fare il boot. Se udev non funziona correttamente nonostante abbiate l'ultima versione raccomandata per il vostro kernel, contattate gli sviluppatori tramite la mailing list [mailto:linux-hotplug-devel@list.sourceforge.net].
 
&Egrave; fortemente consigliato utilizzare l'ultima release di udev fornita con la vostra distribuzione, dato che � profondamente legata al processo di boot specifico della distribuzione stessa. In ogni caso, chi volesse aggiornare udev per conto proprio pu� trovarlo all'indirizzo: http:www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html.
 
La versione pi� vecchia di udev funzionante con il kernel 2.6.18 � la 0.81; � consigliabile usare la versione pi� recente, in quanto funziona meglio con i nuovi kernel, a causa di come udev e il kernel comunicano tra di loro.
 
Per conoscere quale versione di udev � installata nel sistema il comando �:
 
<pre>$ udevinfo -V</pre>
 
==='''Strumenti di analisi dei processi'''===
 
Il pacchetto procps contiene i programmi di uso comune ps e top e molti altri strumenti per gestire e tenere sotto controllo i processi che girano nel sistema.
Il pacchetto da installare � scaricabile all'indirizzo:
http://procps.sourceforge.net.
La versione 3.2.0 � la pi� vecchia compatibile con il kernel 2.6.18; per determinare quale versione � installata si usa il comando:
 
<pre>$ ps --version</pre>
 
==='''Strumenti per periferiche PCMCIA'''===
 
Per poter utilizzare correttamente le periferiche PCMCIA � necessario un programma a livello userspace che permetta di configurarle. Per i kernel pi� vecchi questo programma si chiamava pcmcia-cs, ma � stato sostituito con un sistema pi� semplice chiamato pcmciautils. Se volete far funzionare periferiche PCMCIA dovete avere installato questo pacchetto, che � possibile trovare all'indirizzo: ftp://ftp.kernel.org/pub/utils/kernel/pcmcia.
 
La versione pi� vecchia di pcmciautils funzionante con il kernel 2.6.18 � la 004, ma � consigliabile installare la versione pi� recente, per poter sfruttare tutte le nuove funzioni del sottosistema PCMCIA, come ad esempio la possibili� di caricare automaticamente i driver quando viene rilevata una nuova periferica. Il comando per scoprire quale versione di pcmciautils � installata �:
 
<pre>$ pccardctl -V</pre>
117

contributi