3 581
contributi
S3v (discussione | contributi) (fakeroot necessario con make-kpkg) |
m (→Bisogna usare l'initrd oppure no?: commentati link obsoleti) |
||
(11 versioni intermedie di 4 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|}} | {{Versioni compatibili|Wheezy|Jessie|Testing_2015|Unstable_2015}} | ||
== Introduzione == | == Introduzione == | ||
In Debian, il [[kernel]] Linux può essere ricompilato con il metodo standard (valido con tutte le distribuzioni, e quindi anche con Debian) oppure nel cosiddetto [[Debian-way]] (traduzione: ''metodo Debian'' o ''alla Debian''). | In Debian, il [[kernel]] Linux può essere ricompilato con il metodo standard (valido con tutte le distribuzioni, e quindi anche con Debian) oppure nel cosiddetto [[Debian-way]] (traduzione: ''metodo Debian'' o ''alla Debian''). | ||
Riga 9: | Riga 9: | ||
== Installazione dei pacchetti == | == Installazione dei pacchetti == | ||
Avremo | Avremo innanzitutto bisogno di alcuni pacchetti di base per compilare e pacchettizzare un kernel: | ||
<pre> | <pre> | ||
Riga 47: | Riga 47: | ||
$ tar -xvf /usr/src/linux-source-3.19.tar.xz -C . | $ tar -xvf /usr/src/linux-source-3.19.tar.xz -C . | ||
</pre> | </pre> | ||
{{Box|Nota|Fino alla versione 3.9 i sorgenti del kernel sono contenuti in un file compresso con estensione .tar.bz2, per cui il comando cambierà così:<pre>$ tar -xjvf /usr/src/linux-source-3.9.tar.bz2 -C .</pre>o equivalente in base al nome del file compresso.}} | |||
A fine operazione verrà creata una nuova directory: | A fine operazione verrà creata una nuova directory: | ||
<pre> | <pre> | ||
Riga 87: | Riga 88: | ||
* [[esempio configurazione kernel]] nel nostro Wiki, per un semplice esempio; | * [[esempio configurazione kernel]] nel nostro Wiki, per un semplice esempio; | ||
* [http://a2.pluto.it/ | * [http://a2.pluto.it/a2/a219.htm#almltitle285 elementi della configurazione] per una descrizione più dettagliata delle varie voci. Questo è un capitolo della monumentale opera [http://a2.pluto.it/a2/ Appunti di Informatica Libera], per la quale tutti noi siamo grati all'autore '''Daniele Giacomini'''; | ||
* [http://kernel.xc.net/ Linux Kernel Configuration Archive]: potrete cercare le varie opzioni di configurazione di ogni versione del kernel. | * [http://kernel.xc.net/ Linux Kernel Configuration Archive]: potrete cercare le varie opzioni di configurazione di ogni versione del kernel. | ||
In bocca al lupo con la configurazione ;-). | In bocca al lupo con la configurazione ;-). | ||
Una volta finita la configurazione, uscite e salvate i cambiamenti. A questo punto il file <code> | Una volta finita la configurazione, uscite e salvate i cambiamenti. A questo punto il file <code>~/sorgenti/linux-source-3.19/.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.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. | {{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. | ||
Riga 117: | Riga 118: | ||
Per completezza si segnalano le altre interfacce grafiche che è possibile usare per configurare il kernel al posto di <code>make menuconfig</code>. | Per completezza si segnalano 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 (serviranno i [[pacchetto|pacchetti]] <code>libqt4-dev</code> e <code>pkg-config</code>); | ||
;<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. | ||
Riga 129: | Riga 130: | ||
$ fakeroot make-kpkg --append-to-version -nomepersonalizzato --revision=1 kernel_image | $ fakeroot make-kpkg --append-to-version -nomepersonalizzato --revision=1 kernel_image | ||
</pre> | </pre> | ||
{{Box|Nota|Dopo la versione 3.0 del kernel make-kpkg è considerato deprecato il supporto è stato | {{Box|Nota|Dopo la versione 3.0 del kernel make-kpkg è considerato deprecato il supporto è stato mantenuto per retrocompatibilità il comando da dare ora è il seguente: | ||
<pre>$ make KDEB_PKGVERSION=1.0 deb-pkg | <pre>$ make KDEB_PKGVERSION=1.0 deb-pkg | ||
</pre> Per il nomepersonalizzato si deve modificare il valore di CONFIG_LOCALVERSION del file .config (il file di configurazione che si trova nella cartella del sorgente) con il valore -nomepersonalizzato. | </pre> Per il nomepersonalizzato si deve modificare il valore di CONFIG_LOCALVERSION del file .config (il file di configurazione che si trova nella cartella del sorgente) con il valore -nomepersonalizzato. | ||
Riga 193: | Riga 194: | ||
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 linux-image-3.19. | # dpkg -i linux-image-3.19.1_nomepersonalizzato_1_amd64.deb | ||
</pre> | </pre> | ||
Riga 250: | Riga 251: | ||
Con un editor di testo è necessario decommentare l'opzione <pre>#GRUB_DISABLE_LINUX_UUID=true</pre> rimuovendo il simbolo "#". Il passaggio conclusivo consiste nell'eseguire <pre># update-grub</pre> per aggiornare la configurazione di grub.<br/> | Con un editor di testo è necessario decommentare l'opzione <pre>#GRUB_DISABLE_LINUX_UUID=true</pre> rimuovendo il simbolo "#". Il passaggio conclusivo consiste nell'eseguire <pre># update-grub</pre> per aggiornare la configurazione di grub.<br/> | ||
Per un kernel ricompilato, l'initrd è generalmente inutile e rende l'avvio leggermente più lento. È anche facile sbagliare se non attivate le giuste opzioni nel kernel (vedi [[#Ma se io devo usare l'initrd assolutamente?|FAQ successiva]]), in tal caso otterreste un <code>kernel panic</code> all'avvio. L'initrd serve soprattutto per i kernel ufficiali delle distribuzioni che devono supportare tutti i controller esistenti e una gran varietà di filesystem. Sarebbe assurdo compilare tutti questi supporti staticamente e quindi vengono inseriti come moduli nel ram disk. | Per un kernel ricompilato, l'initrd è generalmente inutile e rende l'avvio leggermente più lento. È anche facile sbagliare se non attivate le giuste opzioni nel kernel (vedi [[#Ma se io devo usare l'initrd assolutamente?|FAQ successiva]]), in tal caso otterreste un <code>kernel panic</code> all'avvio. L'initrd serve soprattutto per i kernel ufficiali delle distribuzioni che devono supportare tutti i controller esistenti e una gran varietà di filesystem. Sarebbe assurdo compilare tutti questi supporti staticamente e quindi vengono inseriti come moduli nel ram disk. <-- | ||
* [[Compilazione Kernel 2.6.11 con Bootsplash]] | *** ATTENZIONE *** PARTE COMMENTATA *** ATTENZIONE *** | ||
* [[Kernel2.6.10 - Framebuffer - Gensplash Patch]] | |||
L'initrd è necessario anche se si vuole usare un bootsplash, ma questa è un'altra storia: | |||
* [[Old:Compilazione Kernel 2.6.11 con Bootsplash]] | |||
* [[Old:Kernel2.6.10 - Framebuffer - Gensplash Patch]] | |||
*** FINE PARTE COMMENTATA *** --> | |||
La risposta lunga è quindi no, non usate l'initrd quando questo non sia strettamente necessario. | La risposta lunga è quindi no, non usate l'initrd quando questo non sia strettamente necessario. | ||
Riga 339: | Riga 346: | ||
* [http://www.debian.org/doc/manuals/reference/ch-kernel.it.html Manuale di Riferimento Debian: Capitolo 7 - Il kernel Linux su Debian] | * [http://www.debian.org/doc/manuals/reference/ch-kernel.it.html Manuale di Riferimento Debian: Capitolo 7 - Il kernel Linux su Debian] | ||
* [http://kernel-handbook.alioth.debian.org/index.html Debian Linux Kernel Handbook ]: ottimo documento sulla gestione dei kernel Debian delle relative patch (''in inglese''). | * [http://kernel-handbook.alioth.debian.org/index.html Debian Linux Kernel Handbook ]: ottimo documento sulla gestione dei kernel Debian delle relative patch (''in inglese''). | ||
* [http://a2.pluto.it/a2/ | * [http://a2.pluto.it/a2/a219.htm#almltitle282 Appunti di informatica Libera: Kernel Linux]: Il capitolo dedicato al kernel della monumentale opera di ''Daniele Giacomini'' contiene sia istruzioni generiche che istruzioni per Debian. Inoltre c'è una descrizione dettagliata della configurazione delle varie voci del kernel! | ||
* [http://kernel.xc.net/ Linux Kernel Configuration Archive]: database che permette di ricercare tra le voci di configurazione (e le loro descrizioni) per varie versioni di kernel. | * [http://kernel.xc.net/ Linux Kernel Configuration Archive]: database che permette di ricercare tra le voci di configurazione (e le loro descrizioni) per varie versioni di kernel. | ||
Riga 349: | Riga 356: | ||
:[[Utente:TheNoise|~ The Noise]] | :[[Utente:TheNoise|~ The Noise]] | ||
: [[Utente:Lorenzoz|Lorenzoz]] 09:57, 11 ott 2014 (CEST) | : [[Utente:Lorenzoz|Lorenzoz]] 09:57, 11 ott 2014 (CEST) | ||
:[[Utente:Oscarandrea|Oscarandrea]] 14:50, 8 giu 2015 (CEST) | |||
|Estesa_da= | |Estesa_da= | ||
:[[Utente:TheNoise|~ The Noise]] | :[[Utente:TheNoise|~ The Noise]] | ||
:[[Utente:fw_crocodile| fw_crocodile]] | :[[Utente:fw_crocodile| fw_crocodile]] | ||
:[[Utente:Lorenzoz|Lorenzoz]] 09:57, 11 ott 2014 (CEST) | :[[Utente:Lorenzoz|Lorenzoz]] 09:57, 11 ott 2014 (CEST) | ||
|Numero_revisori= | |Numero_revisori=3 | ||
}} | }} | ||
[[Categoria:Linux]] | [[Categoria:Linux]] |
contributi