LKN: Procurarsi i Sorgenti del Kernel: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (link)
 
(13 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
==Introduzione==
{{LKN}}
L' apt-system creato dagli sviluppatori di debian � un insieme di script che si appoggiano al comando dpkg allo scopo di snellire/agevolare la gestione di pacchetti e [[dipendenze]] nei sistemi Debian GNU/Linux. Notoriamente chi prende confidenza con debian difficilmente sar� tentato di cambiare distribuzione, e questo anche grazie a questo splendido set di tools.


Il sistema APT (Advanced Packaging Tool) permette di installare qualsiasi programma gestendo in maniera automatica le [[dipendenze]]. Ma � anche in grado di fornire una lista di pacchetti consigliati, e di pacchetti suggeriti. Pu� rimuovere un programma conservandone i file di configurazione, oppure eliminandolo totalmente. Pu� mostrare la descrizione di ogni pacchetto o ricercare quale pacchetto contiene una certa parola chiave nella descrizione. Pu� aggiornare in blocco l'intero sistema usando varie politiche di aggiornamento.  Pu� installare i sorgenti di un pacchetto e gestire le dipendenze necessarie alla compilazione. E molto altro ancora. Nonostante la sua complessit� usare l'APT � molto semplice e intuitivo una volta imparati i comandi basilari.
Quando si compila un kernel personalizzato ci si vorrebbe servire dell'ultima versione stabile. Molte distribuzioni forniscono i loro pacchetti dei sorgenti del kernel, ma raramente questi sono i più recenti e aggiornati. I pacchetti ufficiali delle distribuzioni hanno il vantaggio di essere compatibili con il compilatore e gli altri strumenti forniti dalla distribuzione stessa (Il capitolo 2 mette in evidenza l'importanza di questa compatibilità), ma non è detto che permettano di avere le funzionalità o le prestazioni di cui si ha bisogno. Preparando l'ambiente con il kernel più recente e le ultime versioni del compilatore e degli altri programmi sarà possibile ottenere esattamente ciò che si vuole. Questo capitolo spiega quali sorgenti del kernel scaricare e dove trovarli.


Per chi si avvicina per la prima volta a debian o per chi preferisce una via totalmente grafica per la gestione dei pacchetti si consiglia di usare [[Synaptic]] (che non � altro che una interfaccia grafica costruita sulle basi dell'[[APT]]). Il pi� potente strumento grafico per la gestione dei pacchetti (anche se l'interfaccia � a caratteri) rimane comunque [[Aptitude]].
=='''Quale ramo usare'''==
[[Immagine:kernel_releases.png|300px|thumb|Figura 3-1: Ciclo di sviluppo e rilascio del kernel]]


==Elenco comandi principali==
In passato il kernel Linux era diviso in 2 rami: quello di "sviluppo" e quello "stabile". Per distinguerli, il ramo di sviluppo era contrassegnato da un valore dispari nel secondo numero di release, quello stabile da un valore pari. Ad esempio, la 2.5.25 era una versione di sviluppo, mentre la 2.4.25 era la stabile.
Lungi dall' essere completa, questa brevissima panoramica ha lo scopo di fornire un piccolo vademecum per mantenere in forma il nostro sistema operativo senza far ricorso a tools grafici che, nella maggior parte dei casi, non hanno la necessaria "precisione".
Vediamo brevemente i principali comandi (ovviamente dovete essere root):


=== Installazione, Rimozione, Aggiornamento ===
Quando fu creata la serie 2.6, gli sviluppatori decisero di abbandonare questo metodo basato su due rami separati e annunciarono che tutti i rilasci della serie 2.6 del kernel sarebbero stati considerati "stabili", indipendentemente da quanto veloce fosse stato il processo di sviluppo. I pochi mesi a disposizione tra le versioni maggiori della serie 2.6 avrebbero lasciato agli sviluppatori il tempo necessario per aggiungere nuove funzioni e renderle stabili per il rilascio successivo. Assieme a questo fu creato un ramo "-stabile" del kernel per permettere eventuali correzioni dei bug e aggiornamenti di sicurezza per l'ultima versione, prima che quella nuova venga rilasciata.
Alcuni esempi, illustrati in [[:Immagine:kernel_releases.png|figura 3-1]], aiuteranno a chiarire tutto questo: il team del kernel rilascia la versione stabile 2.6.17; poi gli sviluppatori iniziano a lavorare su nuove caratteristiche e rilasciano la versione -rc del kernel in via di sviluppo, in modo che chi vuole possa aiutare nella fase di test e di debug dei cambiamenti. Quando tutti concordano sul fatto che la versione in via di sviluppo sia abbastanza stabile, questa viene rilasciata come 2.6.18. L'intero ciclo impiega solitamente due o tre mesi, dipendendo da svariati fattori.


;dpkg -i ''nome-pachetto.deb'': installa un pacchetto debian gi� scaricato e presente nella directory corrente.
Durante lo sviluppo di nuove funzioni vengono rilasciate la 2.6.17.2, la 2.6.17.3 e altre release stabili del kernel, contenenti correzioni di bug e aggiornamenti di sicurezza.
È consigliabile che chi intenda usare l'ultima versione del kernel per lavoro si serva di quella stabile. Chi invece intende aiutare gli sviluppatori, può testare le caratteristiche della generazione successiva del kernel e darne una valutazione. Per quanto concerne gli scopi di questo capitolo, si suppone che venga utilizzata la versione stabile.


;apt-get install [pacchetto1, pacchetto2, pacchettoN, ...]: il comando scarica e installa/aggiorna i pacchetti indicati, risolvendo le [[dipendenze]].
=='''Dove trovare i sorgenti del kernel'''==
Tutti i sorgenti del kernel Linux si possono trovare in ognuno dei siti kernel.org, una rete di mirror che permette a chiunque di trovare il server locale più vicino. Questo fa sì che i server principali possano rispondere più prontamente ai mirror e che gli utenti riescano a scaricare i file il più velocemente possibile.


;apt-get remove [pacchetto1, pacchetto2, pacchettoN, ...]: e' l' esatto opposto del comando precedente, rimuove i pacchetti indicati.
La pagina principale di http://www.kernel.org riporta tutte le versioni correnti del kernel per ogni differente ramo, come mostrato in [[:Immagine:kernel.org.png|figura 3-2]].


;aptitude purge [pacchetto1, pacchetto2, pacchettoN, ...]: rimuove i pacchetti indicati ed elimina anche i file di configurazione.
[[Immagine:kernel.org.png|center|500px|thumb|Figura 3-2: Il sito ufficiale Kernel.org.]]


;apt-get update: aggiorna la lista dei pacchetti e le relative informazioni (versione disponibile, descrizione, ecc... ).
Per scaricare l'ultima versione stabile del kernel è sufficiente fare clic sulla lettera F nella riga corrispondente: così facendo si scaricherà l'intero albero dei sorgenti. Altrimenti è possibile accedere alla sottocartella relativa ad ogni versione della serie 2.6 tramite la pagina http://www.kernel.org/pub/linux/kernel/v2.6/, mostrata in [[:Immagine:Kernel.org.v2.6.png|figura 3-3]].


;apt-get upgrade: aggiorna i pacchetti installati sul nostro sistema (se sono disponibili versione piu' recenti). Non installa nuovi pacchetti.
[[Immagine:Kernel.org.v2.6.png|center|500px|thumb|Figura 3-3: Directory dei sorgenti per il kernel 2.6]]


;apt-get dist-upgrade: � simile al precedente, ma aggiorna tutti i pacchetti anche a costo di installare nuovi pacchetti e rimuoverne di presenti, per soddisfare le dipendenze.
&Egrave; anche possibile scaricare i sorgenti del kernel tramite riga di comando, usando il programma <code>wget</code> o <code>curl</code>, normalmente presenti in ogni distribuzione Linux.


;apt-get install [pacchetto] -s: simula (stampando l'output) il processo di installazione di un pacchetto. Utili per controllare se il paccheto che stiamo installando/aggiornando modifichera' altri pacchetti da noi installati.
Per scaricare la versione 2.6.17.8 del kernel con <code>wget</code> il comando è:


''Vedere anche la [[Aptitude|Guida ad Aptitude]].''
<pre>$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.8.tar.gz




=== Ricerca e Informazioni sui pacchetti ===
-> 'linux-2.6.17.8.tar.gz


;apt-cache search [stringa da cercare]: usando questo comando possiamo cercare pacchetti in base al nome, alla descrizione, ecc ...
Resolving www.kernel.org... 204.152.191.5, 204.152.191.37


;apt-cache show [nome pacchetto]: questo comando visualizza una breve descrizione del pacchetto da noi richiesto, fornendo versione, uso, dipendenze e altre utili informazioni.
Connecting to www.kernel.org|204.152.191.5|:80... connected.


;apt-file search ''nome-file'': cerca in quali pacchetti � presente il file ''nome-file''. Vedere anche: [[Apt-file: ricerca all'interno dei pacchetti]].
HTTP request sent, awaiting response... 200 OK


=== Gestione delle fonti (o repository) ===
Lenght: 51,707,742 (49M) [application/x-gzip]


;apt-setup: serve per aggiungere/aggiornare le fonti (o [[repository]]) da cui scaricare i pacchetti.
100%[-------------------------------------->] 51,707,742 35.25k/s


;[[Apt-cdrom | apt-cdrom]]: aggiunge alle fonti per i pacchetti il contenuto di un CD debian.
ETA 00:00


=== Pacchetti sorgenti e compilazione ===
18:02:48 (47.12 kB/s) - 'linux-2.6.17.8.tar.gz' saved [51707742/51707742]</pre>


;apt-get source [pacchetto]: questo � il comando da utilizzare nel caso volessimo installare i sorgenti di un pacchetto. NOTA BENE: i sorgenti cos� scaricati, una volta compilati, daranno origine ad un pacchetto .deb che andra' a sua volta installato!I sorgenti vengono scaricati nella directory da cui si � lanciato il comando.
Per scaricarla con <code>curl</code>:


;apt-get build-dep [pacchetto]: questo � un pacchetto fondamentale, specie se si lavora molto con i sorgenti. Si preoccupa di soddisfare le dipendenze del pacchetto che andremo a compilare dopo aver eseguito apt-get source.
<pre>$ curl http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.8.tar.gz \ -o linux-2.6.17.8.tar.gz</pre>


;apt-get source [pacchetto] --compile: e' il passo finale per la compilazione di un pacchetto deb. Lanciatelo dalla stessa directory in cui avete scaricato i sorgenti da compilare.
Il modo più semplice e veloce per scoprire quale sia l'ultima versione del kernel è usare le informazioni disponibili alla pagina http://www.kernel.org/kdist/finger_banner, come mostrato in [[:Immagine:Kernel.org.v2.6.png|figura 3-4]].


=== Altro ===
[[Immagine:Kernel.org_finger_banner.png|center|500px|thumb|Figura 3-4: Ultima versione del kernel.]]


;apt-get autoclean: i pacchetti scaricati vengono memorizzati in /var/cache/apt/archive/ che col passare del tempo tende a gonfiarsi notevolmente. Con questo comando e' possibile dire all' apt-system di cancellare questi pacchetti. Notare che, se fatta a mano, questa operazione causera' un certo "disorientamento" da parte di apt convinto di avere una copia di eventuali pacchetti in locale.
=='''Cosa fare con i sorgenti'''==
Una volta scaricati i sorgenti del kernel appropriati, dove è previsto che vengano messi? &Egrave; consigliabile creare una directory locale nella propria home chiamata linux per conservare tutti i file dei sorgenti del kernel:


;apt-get clean: elimina tutti i pacchetti dalla cache.
<pre>$ mkdir ~/linux</pre>


;apt-get moo: Have you mooed today ?
Spostate il codice sorgente nella directory linux:


==Link==
<pre>$ mv ~/linux-2.6.17.8.tar.gz ~/linux/</pre>
Per una panoramica completa sulle funzionalit� e sull'utilizzo del sistema APT vedere:


* [http://www.debian.org/doc/manuals/apt-howto/index.it.html#contents Apt HowTo]
ed entrate nella directory linux:
 
<pre>$ cd ~/linux
$ ls
linux-2.6.17.8.tar.gz</pre>
 
Adesso che il codice sorgente si trova nella directory giusta, decomprimetelo:
 
<pre>$ tar -xzvf linux-2.6.17.8.tar.gz</pre>
 
Lo schermo si riempirà della lista dei file che verranno decompressi, e alla fine nella directory linux/ rimarrà:
 
<pre>$ ls
linux-2.6.17.8.tar.gz
linux-2.6.17.8/</pre>




----
----
Autore: [[Utente:Keltik|Keltik]]
This is an indipendent translation of the book [http://www.kroah.com/lkn/ Linux Kernel in a Nutshell] by [http://www.kroah.com/log/ Greg Kroah-Hartman]. This translation (like the original work) is available under the terms of [http://creativecommons.org/licenses/by-sa/2.5/ Creative Commons Attribution-ShareAlike 2.5].
[[Categoria:Apt]]
----
 
 
[http://files.kroah.com/lkn/lkn_pdf/ch03.pdf ''Capitolo originale'']
 
[[Categoria:Documentazione tecnica]]
[[Categoria:Linux Kernel in a Nutshell]]

Versione attuale delle 12:38, 14 mag 2016

Linux Kernel in a Nutshell

Sommario

Parte I
Compilare il kernel
  1. Introduzione
  2. Requisiti
  3. Procurarsi i sorgenti
  4. Configurazione e compilazione
  5. Installazione e avvio
  6. Aggiornare il kernel
Parte II
Personalizzazioni principali
  1. Personalizzare un kernel
  2. Ricette per configurare un kernel
Parte III
Guide di riferimento per il kernel
  1. Guida di riferimento dei parametri di boot del kernel - parte1
  2. Guida di riferimento dei parametri di boot del kernel - parte2
  3. Guida di riferimento dei parametri di compilazione del kernel
  4. Guida di riferimento delle opzioni di configurazione del kernel - parte1
  5. Guida di riferimento delle opzioni di configurazione del kernel - parte2
Parte IV
Informazioni aggiuntive
  1. Programmi utili
  2. Bibliografia


Quando si compila un kernel personalizzato ci si vorrebbe servire dell'ultima versione stabile. Molte distribuzioni forniscono i loro pacchetti dei sorgenti del kernel, ma raramente questi sono i più recenti e aggiornati. I pacchetti ufficiali delle distribuzioni hanno il vantaggio di essere compatibili con il compilatore e gli altri strumenti forniti dalla distribuzione stessa (Il capitolo 2 mette in evidenza l'importanza di questa compatibilità), ma non è detto che permettano di avere le funzionalità o le prestazioni di cui si ha bisogno. Preparando l'ambiente con il kernel più recente e le ultime versioni del compilatore e degli altri programmi sarà possibile ottenere esattamente ciò che si vuole. Questo capitolo spiega quali sorgenti del kernel scaricare e dove trovarli.

Quale ramo usare

Figura 3-1: Ciclo di sviluppo e rilascio del kernel

In passato il kernel Linux era diviso in 2 rami: quello di "sviluppo" e quello "stabile". Per distinguerli, il ramo di sviluppo era contrassegnato da un valore dispari nel secondo numero di release, quello stabile da un valore pari. Ad esempio, la 2.5.25 era una versione di sviluppo, mentre la 2.4.25 era la stabile.

Quando fu creata la serie 2.6, gli sviluppatori decisero di abbandonare questo metodo basato su due rami separati e annunciarono che tutti i rilasci della serie 2.6 del kernel sarebbero stati considerati "stabili", indipendentemente da quanto veloce fosse stato il processo di sviluppo. I pochi mesi a disposizione tra le versioni maggiori della serie 2.6 avrebbero lasciato agli sviluppatori il tempo necessario per aggiungere nuove funzioni e renderle stabili per il rilascio successivo. Assieme a questo fu creato un ramo "-stabile" del kernel per permettere eventuali correzioni dei bug e aggiornamenti di sicurezza per l'ultima versione, prima che quella nuova venga rilasciata. Alcuni esempi, illustrati in figura 3-1, aiuteranno a chiarire tutto questo: il team del kernel rilascia la versione stabile 2.6.17; poi gli sviluppatori iniziano a lavorare su nuove caratteristiche e rilasciano la versione -rc del kernel in via di sviluppo, in modo che chi vuole possa aiutare nella fase di test e di debug dei cambiamenti. Quando tutti concordano sul fatto che la versione in via di sviluppo sia abbastanza stabile, questa viene rilasciata come 2.6.18. L'intero ciclo impiega solitamente due o tre mesi, dipendendo da svariati fattori.

Durante lo sviluppo di nuove funzioni vengono rilasciate la 2.6.17.2, la 2.6.17.3 e altre release stabili del kernel, contenenti correzioni di bug e aggiornamenti di sicurezza. È consigliabile che chi intenda usare l'ultima versione del kernel per lavoro si serva di quella stabile. Chi invece intende aiutare gli sviluppatori, può testare le caratteristiche della generazione successiva del kernel e darne una valutazione. Per quanto concerne gli scopi di questo capitolo, si suppone che venga utilizzata la versione stabile.

Dove trovare i sorgenti del kernel

Tutti i sorgenti del kernel Linux si possono trovare in ognuno dei siti kernel.org, una rete di mirror che permette a chiunque di trovare il server locale più vicino. Questo fa sì che i server principali possano rispondere più prontamente ai mirror e che gli utenti riescano a scaricare i file il più velocemente possibile.

La pagina principale di http://www.kernel.org riporta tutte le versioni correnti del kernel per ogni differente ramo, come mostrato in figura 3-2.

Figura 3-2: Il sito ufficiale Kernel.org.

Per scaricare l'ultima versione stabile del kernel è sufficiente fare clic sulla lettera F nella riga corrispondente: così facendo si scaricherà l'intero albero dei sorgenti. Altrimenti è possibile accedere alla sottocartella relativa ad ogni versione della serie 2.6 tramite la pagina http://www.kernel.org/pub/linux/kernel/v2.6/, mostrata in figura 3-3.

Figura 3-3: Directory dei sorgenti per il kernel 2.6

È anche possibile scaricare i sorgenti del kernel tramite riga di comando, usando il programma wget o curl, normalmente presenti in ogni distribuzione Linux.

Per scaricare la versione 2.6.17.8 del kernel con wget il comando è:

$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.8.tar.gz


	-> 'linux-2.6.17.8.tar.gz

Resolving www.kernel.org... 204.152.191.5, 204.152.191.37

Connecting to www.kernel.org|204.152.191.5|:80... connected.

HTTP request sent, awaiting response... 200 OK

Lenght: 51,707,742 (49M) [application/x-gzip]

100%[-------------------------------------->] 51,707,742	35.25k/s

ETA 00:00

18:02:48 (47.12 kB/s) - 'linux-2.6.17.8.tar.gz' saved [51707742/51707742]

Per scaricarla con curl:

$ curl http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.8.tar.gz \ -o linux-2.6.17.8.tar.gz

Il modo più semplice e veloce per scoprire quale sia l'ultima versione del kernel è usare le informazioni disponibili alla pagina http://www.kernel.org/kdist/finger_banner, come mostrato in figura 3-4.

Figura 3-4: Ultima versione del kernel.

Cosa fare con i sorgenti

Una volta scaricati i sorgenti del kernel appropriati, dove è previsto che vengano messi? È consigliabile creare una directory locale nella propria home chiamata linux per conservare tutti i file dei sorgenti del kernel:

$ mkdir ~/linux

Spostate il codice sorgente nella directory linux:

$ mv ~/linux-2.6.17.8.tar.gz ~/linux/

ed entrate nella directory linux:

$ cd ~/linux
$ ls
linux-2.6.17.8.tar.gz

Adesso che il codice sorgente si trova nella directory giusta, decomprimetelo:

$ tar -xzvf linux-2.6.17.8.tar.gz

Lo schermo si riempirà della lista dei file che verranno decompressi, e alla fine nella directory linux/ rimarrà:

$ ls
linux-2.6.17.8.tar.gz
linux-2.6.17.8/



This is an indipendent translation of the book Linux Kernel in a Nutshell by Greg Kroah-Hartman. This translation (like the original work) is available under the terms of Creative Commons Attribution-ShareAlike 2.5.



Capitolo originale