LKN: Configurare e Compilare: differenze tra le versioni

inserite immagini, revisione (prima parte)
(inserite immagini, revisione (prima parte))
Riga 1: Riga 1:
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.
=Prerequisiti=
Prima di seguire quanto riportato nella guida, assicuriamoci di avere a nostra disposizioni gli headers per il nostro kernel. Se abbiamo compilato noi stessi il kernel, allora possiamo essere tranquilli, ma se stiamo usando un kernel precompilato (ad esempio quello installato durante il setup di Debian, oppure scaricato tramite APT) allora dobbiamo necessariamente scaricare il pacchetto Debian contenente gli headers.
Ecco come procedere:
<pre>$ uname -r
linux-image-2.6.18-3-686</pre>
questo significa che dobbiamo procurarci gli headers relativi a questa release del kernel:
<pre># apt-get install kernel-headers-2.6.18-3-686</pre>


=='''Strumenti per Compilare il Kernel'''==
= Software Occorrente =
* [http://bughost.org/ipw3945/ Microcode/Firmware]
* [http://bughost.org/ipw3945/ Regulatory Daemon]
* [http://ieee80211.sourceforge.net/ Network Stack ieee80211 per kernel Linux]
* [http://ipw3945.sourceforge.net/ Drivers Intel PRO/Wireless 3945ABG per kernel Linux]
E' consigliabile scaricare le versioni stabili (quelle con numero di versione che termina con .0) dei sorgenti del driver per Intel PRO/Wireless 3945ABG e dello stack ieee80211.
Creiamoci uno spazio di lavoro in cui scaricare e compilare i sorgenti:
<pre>mkdir ipw3945</pre>


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.
== Compilazione e installazione del sottosistema ieee80211 ==
<pre>
tar xzvf ieee80211-1.1.14.tgz
cd ieee80211-1.1.14
make
</pre>
Potremmo essere avvisati del fatto che nel kernel installato siano gi� presenti componenti ieee80211:
<pre>
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211.ko
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt.ko
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_wep.ko
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_ccmp.ko
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_tkip.ko
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211.mod
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt.mod
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt_wep.mod/lib/modules/2.6.18-suspend2/net/ieee80211/.tmp_versions/ieee80211_crypt_ccmp.mod
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt_tkip.mod
/lib/modules/2.6.18-3-686/include/net/ieee80211.h
/lib/modules/2.6.18-3-686/include/net/ieee80211_crypt.h
/lib/modules/2.6.18-3-686/include/net/ieee80211_radiotap.h
Above files found.  Remove? [y],n
</pre>
Rispondendo affermativamente i componenti verranno eliminati e il successivo comando make install provveder� a installare i componenti ieee80211 che stiamo compilando.
Infine (questa istruzione potrebbe necessitare dei diritti di super utente)
<pre>
make install
cd ..
</pre>
== Compilazione e installazione del modulo ipw3945 ==
<pre>
tar xzvf ipw3945-1.1.3.tgz
cd ipw3945-1.1.3
make
</pre>
Per rendere il modulo compilato visibile al tool modprobe dobbiamo copiarlo nel path di depmod:
<pre>
cp ipw3945.ko  /lib/modules/$(uname -r)/kernel/drivers/net/wireless
depmod -a
</pre>
Ora possiamo utilizzare
<pre>modprobe ipw3945</pre>
per caricare il modulo nel kernel e
<pre>modprobe ipw3945 -r</pre>
per rimuoverlo.
== Installazione del firmware ==
<pre>
tar xzvf ipw3945-ucode-1.13.tgz
cp ipw3945-ucode-1.13/ipw3945.ucode /usr/local/lib/firmware/
</pre>
== Installazione del regulatory daemon ==
<pre>
tar xzvf ipw3945d-1.7.22.tgz
</pre>
Per sistemi a 32 bit:
<pre>
cp ipw3945d-1.7.22/x86/ipw3945d /sbin
</pre>
Per sistemi a 64 bit:
<pre>
cp ipw3945d-1.7.22/x86_64/ipw3945d /sbin
</pre>


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.
= Caricamento del modulo =
Ora che compilazione e installazione sono completate possiamo procedere al caricamento del modulo nel kernel.
Riportiamoci nella directory del driver ipw3945:
<pre>
cd ipw3945-1.1.3
</pre>
e carichiamo il modulo (ripulendo anche il log del kernel)
<pre>
./load debug=0
</pre>
Eseguendo iwconfig dovremmo poter essere in grado di vedere l'interfaccia associata al chip wifi:
<pre>
# ifconfig
eth2      unassociated  ESSID:off/any
          Mode:Managed  Channel=0  Access Point: 00:00:00:00:00:00
          Bit Rate=0 kb/s  Tx-Power=20 dBm
          RTS thr:off  Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0  Missed beacon:0
</pre>


==='''Compilatore'''===
----
 
Autore: [[Utente:fulvio|fulvio]] Feb 06, 2007
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.
[[Categoria:Hardware]][[Categoria:Wireless]]
 
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.
 
Per scoprire che versione di gcc avete installata usate il seguente comando:
 
<pre>$ gcc --version</pre>
 
==='''Linker'''===
 
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.
 
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.
 
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:
 
<pre>$ ld -v</pre>
 
==='''Make'''===
 
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.
 
Se volete scaricare e installare make da soli potete trovarlo all'indirizzo:
http://www.gnu.org/software/make.
 
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.
Per verificare quale versione di make avete installata usate il comando:
 
<pre>$ make  --version</pre>
 
=='''Strumenti per Usare il Kernel'''==
 
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.
 
==='''util-linux'''===
 
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.
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:
 
<pre>$ fdformat --version</pre>
 
==='''module-init-tools'''===
 
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.
 
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.
 
Chi volesse scaricare e installare da solo questo pacchetto, pu� trovarlo all'indirizzo:
http://www.kernel.org/pub/linux/utils/kernel/module-init-tools.
 
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:
 
<pre>$ depmod -V</pre>
 
=='''Strumenti Relativi ai Filesystem'''==
 
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.
 
==='''ext2/ext3/ext4'''===
 
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.
 
Per utilizzare questi filesystems dovete avere il pacchetto e2fsprogs; l'indirizzo a cui trovarlo per scaricarlo e installarlo da soli �: http://e2fsprogs.sourceforge.net.
 
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.
 
Per scoprire quale versione di e2fsprogs � installata nel vostro sistema il comando �:
 
<pre>$ tune2fs</pre>
 
==='''JFS'''===
 
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 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:
 
<pre>$ fsck.jfs -V</pre>
 
==='''ReiserFS'''===
 
Per usare il filesystem ReiserFS � necessario il pacchetto reiserfsprogs. Per scaricarlo e installarlo da soli l'indirizzo �: http://www.nemesys.com/download.html.
 
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'''===
 
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:
 
<pre>$ xfs_db -V</pre>
 
==='''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.
 
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:
 
<pre>$ quota -V</pre>
 
==='''NFS'''===
 
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.
 
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>
223

contributi