Debian Kernel Howto: differenze tra le versioni

nessun oggetto della modifica
(Corretto link sbagliato a Appunti di informatica libera)
Nessun oggetto della modifica
Riga 11: Riga 11:


<pre>
<pre>
# apt-get install modutils kernel-package libncurses5-dev fakeroot
# apt-get install module-init-tools kernel-package libncurses5-dev fakeroot
</pre>
</pre>
{{Box|Nota|Per la versione 2.6 del kernel il pacchetto modutils è stato sostituito da module-init-tools.}}


A questo punto è necessario installare il pacchetto Debian contenente i sorgenti del kernel. Per prima cosa, cerchiamo questo pacchetto:
A questo punto è necessario installare il pacchetto Debian contenente i sorgenti del kernel. Per prima cosa, cerchiamo questo pacchetto:
Riga 20: Riga 18:
<pre>
<pre>
$ apt-cache search linux-source | grep ^linux-source
$ apt-cache search linux-source | grep ^linux-source
linux-source-2.6.8 - Linux kernel source for version 2.6.8 with Debian patches
linux-source-2.6.32 - Linux kernel source for version 2.6.32 with Debian patches
linux-source-2.6 - Linux kernel source for Linux 2.6 (meta-package)
linux-source-2.6.30 - Linux kernel source for version 2.6.30 with Debian patches
 
</pre>
</pre>


{{Box|Nota|Ogni versione di Debian (unstable, testing, stable) utilizza in genere una certa versione del kernel e specifiche versioni di altri pacchetti ad esso correlati in modo tale che l'insieme sia il più possibile stabile. È quindi altamente consigliato usare la versione dei sorgenti del kernel che troveremo nei repository della nostra versione di Debian, a meno che non si sappia esattamente quello che si sta facendo.}}
{{Box|Nota|Ogni versione di Debian (unstable, testing, stable) utilizza in genere una certa versione del kernel e specifiche versioni di altri pacchetti ad esso correlati in modo tale che l'insieme sia il più possibile stabile. È quindi altamente consigliato usare la versione dei sorgenti del kernel che troveremo nei repository della nostra versione di Debian, a meno che non si sappia esattamente quello che si sta facendo.}}


Adesso installiamo il pacchetto dei sorgenti del kernel che intendiamo installare. Notare che i sorgenti del kernel forniti con Debian sono leggermente differenti da quelli del [[kernel vanilla]] rilasciato dal team di Linus Torvalds ([http://kernel-handbook.alioth.debian.org/ch-source.html#s-changes maggiori informazioni qui]). Nel seguito prenderemo come esempio la versione 2.6.8 del kernel, sostituitela con qualsiasi altra versione vogliate usare.
Adesso installiamo il pacchetto dei sorgenti del kernel che intendiamo utilizzare. Notare che i sorgenti del kernel forniti con Debian sono leggermente differenti da quelli del [[kernel vanilla]] rilasciato dal team di Linus Torvalds ([http://kernel-handbook.alioth.debian.org/ch-source.html#s-changes maggiori informazioni qui]). Nel seguito prenderemo come esempio la versione 2.6.32 del kernel, sostituitela con qualsiasi altra versione vogliate usare.


<pre>
<pre>
# apt-get install linux-source-2.6.8
# apt-get install linux-source-2.6.32
</pre>
</pre>


Riga 62: Riga 63:
$ ls
$ ls
...
...
linux-source-2.6.8.tar.bz2
linux-source-2.6.32.tar.bz2
...
...
</pre>
</pre>
Riga 69: Riga 70:


<pre>
<pre>
$ tar xvjf linux-source-2.6.8.tar.bz2
$ tar xvjf linux-source-2.6.32.tar.bz2
</pre>
</pre>


A fine decompressione avremo una directory <code>linux-source-2.6.8</code>, creiamo un link simbolico Linux che punta ai sorgenti del kernel:
A fine decompressione avremo una directory <code>linux-source-2.6.32</code>, creiamo un link simbolico Linux che punta ai sorgenti del kernel:


<pre>
<pre>
$ ln -s /usr/src/linux-source-2.6.8 linux
$ ln -s /usr/src/linux-source-2.6.32 linux
</pre>
</pre>


Riga 92: Riga 93:


<pre>
<pre>
$ cp /boot/config-2.6.8 .config  
$ cp /boot/config-2.6.32 .config  
</pre>
</pre>


Riga 109: Riga 110:
Se dovete configurare un kernel per la prima volta prendetevi almeno un'ora di tempo ed iniziate con calma, leggendo tutte le pagine dell'help in linea. Uno dei vantaggi di un kernel ricompilato è la possibilità di ottenere un kernel estremamente piccolo e leggero proprio perché viene compilato il supporto per le sole periferiche e i soli filesystem effettivamente usati. In questo modo si ha un kernel piccolo e pochi moduli. Un kernel di questo tipo impiega anche molto meno tempo ad essere compilato. Per fare un esempio potrebbe impiegare sui 10 minuti su in athlon 1000, quando un kernel Debian ufficiale impiegherebbe sicuramente più di un'ora sulla stessa macchina. In definitiva, compilando un kernel snello, sarà possibile anche fare più prove ed ottimizzarlo quindi al meglio.  
Se dovete configurare un kernel per la prima volta prendetevi almeno un'ora di tempo ed iniziate con calma, leggendo tutte le pagine dell'help in linea. Uno dei vantaggi di un kernel ricompilato è la possibilità di ottenere un kernel estremamente piccolo e leggero proprio perché viene compilato il supporto per le sole periferiche e i soli filesystem effettivamente usati. In questo modo si ha un kernel piccolo e pochi moduli. Un kernel di questo tipo impiega anche molto meno tempo ad essere compilato. Per fare un esempio potrebbe impiegare sui 10 minuti su in athlon 1000, quando un kernel Debian ufficiale impiegherebbe sicuramente più di un'ora sulla stessa macchina. In definitiva, compilando un kernel snello, sarà possibile anche fare più prove ed ottimizzarlo quindi al meglio.  


Per trovare quali moduli sono richiesti dal vostro hardware potete usare il comando <code>'''lspci'''<code> o meglio <code>'''lspci -v'''<code>. Inoltre risulta utilissimo consultare il database dei driver di Linux a [http://kmuto.jp/debian/hcl/ questo indirizzo]: inserendo semplicemente l'output di <code>lspci -n</code>, otterrete l'elenco dei moduli da compilare
Per trovare quali moduli sono richiesti dal vostro hardware potete usare il comando <code>'''lspci'''</code> o meglio <code>'''lspci -v'''</code>. Inoltre risulta utilissimo consultare il database dei driver di Linux a [http://kmuto.jp/debian/hcl/ questo indirizzo]: inserendo semplicemente l'output di <code>lspci -n</code>, otterrete l'elenco dei moduli da compilare


Per approfondire la configurazione del kernel:
Per approfondire la configurazione del kernel:
Riga 121: Riga 122:
Una volta finita la configurazione, uscite e salvate i cambiamenti. A questo punto il file <code>/usr/src/linux/.config</code> conterrà la nostra configurazione del kernel.
Una volta finita la configurazione, uscite e salvate i cambiamenti. A questo punto il file <code>/usr/src/linux/.config</code> conterrà la nostra configurazione del kernel.


{{Box|Nota|Se avete già ricompilato il vostro kernel e volete passare ad una versione più aggiornata, ma non troppo diversa (ad esempio: 2.6.8 --> 2.6.10), non conviene rifare tutta la configurazione da capo. D'altro canto non è neanche possibile usare il vecchio file di configurazione dato che nel nuovo kernel ci saranno voci in più e o in meno e sarebbe improponibile cercarle ad una ad una.
{{Box|Nota|Se avete già ricompilato il vostro kernel e volete passare ad una versione più aggiornata, ma non troppo diversa (ad esempio: 2.6.30 --> 2.6.32), non conviene rifare tutta la configurazione da capo. D'altro canto non è neanche possibile usare il vecchio file di configurazione dato che nel nuovo kernel ci saranno voci in più e o in meno e sarebbe improponibile cercarle ad una ad una.


Basta allora copiare il vecchio file di configurazione nella directory dei sorgenti del nuovo kernel e lanciare il comando:
Basta allora copiare il vecchio file di configurazione nella directory dei sorgenti del nuovo kernel e lanciare il comando:
Riga 134: Riga 135:
Per completezza segnalo le altre interfacce grafiche che è possibile usare per configurare il kernel al posto di <code>make menuconfig</code>.
Per completezza segnalo le altre interfacce grafiche che è possibile usare per configurare il kernel al posto di <code>make menuconfig</code>.


;<code>make xconfig</code>: per usare una interfaccia grafica '''qt''' per la configurazione;
;<code>make xconfig</code>: per usare una interfaccia grafica '''QT''' per la configurazione;
;<code>make gconfig</code>: per usare una interfaccia grafica '''gtk''' per la configurazione.
;<code>make gconfig</code>: per usare una interfaccia grafica '''GTK''' per la configurazione.


Questi frontend non aggiungono niente di nuovo e sono pertanto funzionalmente equivalenti tra di loro. Per usarli sono però necessarie le librerie di sviluppo, rispettivamente, di ''qt'' e ''gtk''.
Questi frontend non aggiungono niente di nuovo e sono pertanto funzionalmente equivalenti tra di loro. Per usarli sono però necessarie le librerie di sviluppo, rispettivamente, di ''QT'' e ''GTK''.


== Compilazione del kernel ==
== Compilazione del kernel ==
Riga 150: Riga 151:
Diamo uno sguardo alle opzioni usate:
Diamo uno sguardo alle opzioni usate:


; <code>--append-to-version</code> : serve ad aggiungere un nome personalizzato al pacchetto che verrà aggiunto dopo il numero di versione, che in questo caso diventerà <code>''2.6.8-nomepersonalizzato''</code>;
; <code>--append-to-version</code> : serve ad aggiungere un nome personalizzato al pacchetto che verrà aggiunto dopo il numero di versione, che in questo caso diventerà <code>''2.6.32-nomepersonalizzato''</code>;


; <code>--revision</code> : permette di impostare il numero di revisione del pacchetto, normalmente viene indicato con un numero intero;
; <code>--revision</code> : permette di impostare il numero di revisione del pacchetto, normalmente viene indicato con un numero intero;
Riga 197: Riga 198:
$ ls
$ ls
...
...
kernel-image-2.6.8-nomepersonalizzato-386_1.Custom_i386.deb
kernel-image-2.6.32-nomepersonalizzato-386_1.Custom_i386.deb
...
...
</pre>
</pre>
Riga 203: Riga 204:
Adesso possiamo installare il pacchetto con il nostro nuovo kernel ricompilato. Diventiamo quindi root con '''su''', e digitiamo:
Adesso possiamo installare il pacchetto con il nostro nuovo kernel ricompilato. Diventiamo quindi root con '''su''', e digitiamo:
<pre>
<pre>
# dpkg -i kernel-image-2.6.8-nomepersonalizzato-386_1.Custom_i386.deb
# dpkg -i kernel-image-2.6.32-nomepersonalizzato-386_1.Custom_i386.deb
</pre>
</pre>


Se abbiamo lilo dovremo configurare <code>lilo.conf</code> aggiungendo le righe relative al kernel. Ricordatevi che, con lilo, per rendere effettive le modifiche bisogna aggiornare il [[MBR]] (Master Boot Record) con il comando:  
Se abbiamo LILO dovremo configurare <code>lilo.conf</code> aggiungendo le righe relative al kernel. Ricordatevi che, con LILO, per rendere effettive le modifiche bisogna aggiornare il [[MBR]] (Master Boot Record) con il comando:  


<pre>
<pre>
Riga 212: Riga 213:
</pre>
</pre>


Se abbiamo grub, invece, non ci resta altro che riavviare :D. Tuttavia per approfondire le personalizzazioni che è possibile fare su grub, potete leggere l'apposita sezione della [[Guida a Grub]]:
Se abbiamo Grub, invece, non ci resta altro che riavviare :D. Tuttavia per approfondire le personalizzazioni che è possibile fare su Grub, potete leggere l'apposita sezione della [[Guida a Grub]]:


* [[Guida_a_Grub#Usare_update-grub|Guida a Grub: Usare update-grub]]
* [[Guida_a_Grub#Usare_update-grub|Guida a Grub: Usare update-grub]]
Riga 277: Riga 278:
Con tale configurazione è possibile compilare il kernel con initrd aggiungendo semplicemente l'opzione <code>--initrd</code> al comando <code>make-kpkg</code>. Il pacchetto risultante conterrà degli script che creeranno l'immagine initrd in fase di installazione del pacchetto.
Con tale configurazione è possibile compilare il kernel con initrd aggiungendo semplicemente l'opzione <code>--initrd</code> al comando <code>make-kpkg</code>. Il pacchetto risultante conterrà degli script che creeranno l'immagine initrd in fase di installazione del pacchetto.


Attualmente (Etch) ci sono tre strumenti in Debian che permettono di creare l'immagine initrd: (in Lenny si trovano soltanto i primi due):
Attualmente (Squeeze) lo strumento in Debian che permette di creare l'immagine initrd è <code>update-initramfs</code> (fornito dal pacchetto <code>initramfs-tools</code>) e utilizzabile con kernel 2.6.13 o più recenti. Questo strumento aggiunge tutti i controller del disco e i supporti che potrebbero servire per il boot che sono stati compilati come moduli;
 
* '''<code>update-initramfs</code> ''' (fornito dal pacchetto <code>initramfs-tools</code>): utilizzabile con kernel 2.6.13 o più recenti. Aggiunge tutti i controller del disco e i supporti che potrebbero servire per il boot che sono stati compilati come moduli;
* '''<code>mkinitrd.yaird</code> ''' (fornito dal pacchetto <code>yaird</code>): utilizzabile con kernel 2.6.13 o più recenti. Analizza il sistema e aggiunge all'immagine initrd '''solo''' i moduli necessari al boot della macchina su cui si installa il kernel. Permette di ottenere una immagine molto più piccola del caso precedente;
* '''<code>mkinitrd</code> ''' (fornito dal pacchetto <code>initrd-tools</code>): questo è il vecchio metodo usato fino al kernel 2.6.12 che necessita del supporto al '''cramfs'''.


Per ulteriori informazioni sui kernel Debian e le immagini initrd:
Per ulteriori informazioni sui kernel Debian e le immagini initrd:
6 999

contributi