LKN: Requisiti per Compilare ed Utilizzare il Kernel: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m (categoria)
m (copyright)
Riga 1: Riga 1:
== Introduzione ==
''Torna all'indice: [[Linux Kernel in a Nutshell]]''


Se state leggendo questa guida penso conosciate gi� la mitica distribuzione live [http://www.damnsmalllinux.org/ Damn Small Linux] che in soli 50 MB vanta un sistema Linux e un corredo software davvero impressionante. Damn Small Linux, o DSL come la chiameremo di seguito, � una derivata di Debian ristretta fino all'osso al fine di non superare il limite di 50 MB, tuttavia � facilmente espandibile tramite le estensions che permettono di trasformare DSL in un sistema Debian-like completo.
Quando si copila 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 kerner scaricare e dove trovarli.


In questa guida vedremo come fare avviare Damn Small Linux direttamente da chiavetta USB, senza bisogno di bruciare un cd.
=='''Quale ramo usare'''==
[[Immagine:kernel_releases.png|300px|thumb|Figura 3-1: Ciclo di sviluppo e rilascio del kernel]]


Usando una chiavetta avremo il vantaggio di poter salvare le nostre impostazioni e/o aggiungere altro software nella chiavetta stessa, ottendendo cos� un sistema live (basta inserire la chiavetta in qualsiasi pc che supporta il boot da dispositivi USB) estremamente compatto e soprattutto modificabile al volo (cosa impossibile con un normale cd). Inoltre sia la compattezza della distribuzione che la velocit� dei dispositivi USB2 permettono di ottenere prestazioni superiori ad un normale livecd. E' addirittura possibile caricare l'intero sistema in ram (basta passare l'opzione <tt>toram</tt> al boot), con conseguente apertura fulminea di qualsiasi applicazione ;-).
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.


L'unico prerequisito � che la scheda madre supporti il boot da periferica USB (molti produttori stanno rendendo disponibile questa funzionalit� attraverso nuovo firmware BIOS). Ed una chiavetta USB di almeno 50 MB, of course ;-).
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.


Se la vostra scheda madre non supporta il boot da periferiche USB, dovrete preparare un floppy od un cd per il boot. Questo argomento '''non � trattato nella guida'''.
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.
&Egrave; 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.


== Formattazione della chiavetta ==
=='''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.


Se la vostra chiavetta contiene gi� una partizione e un filesystem fat16 (o fat32) non dovremo formattarla e potremo anche lasciare gli altri eventuali file presenti che non daranno fastidio.
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]].


Se invece dovete formattare la chiavetta, consiglio di creare un unica partizione avviabile con <tt>cfdisk</tt> e creare un filesystem fat16 con <tt>mkfs.vfat</tt>:
[[Immagine:kernel.org.png|center|500px|thumb|Figura 3-2: Il sito ufficiale Kernel.org.]]


# mkfs.vfat -n nome -F 16 /dev/sda1
Per scaricare l'ultima versione stabile del kernel � sufficiente cliccare sulla lettera F nella linea corrispondente: cos� facendo si scaricher� l'intero albero dei sorgenti. Altrimenti � possibile accedere alla sotto-directory 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]].


== Copia dei file e preparazione della chiavetta ==
[[Immagine:Kernel.org.v2.6.png|center|500px|thumb|Figura 3-3: Directory dei sorgenti per il kernel 2.6]]


Scarichiamo la [http://ftp.belnet.be/packages/damnsmalllinux/current/current.iso iso di DSL] (usate la versione normale, non la syslinux, embedded ecc...).
&Egrave; anche possibile scaricare i sorgenti del kernel tramite riga di comando, usando il programma <tt>wget</tt> o <tt>curl</tt>, normalmente presenti in ogni distribuzione Linux.


Eseguiamo le seguenti operazioni di semplice copia e rinominazione di file:
Per scaricare la versione 2.6.17.8 del kernel con <tt>wget</tt> il comando �:


# mkdir dsl_temp
<pre>$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.8.tar.gz
# mkdir dsl_usb
# mount -o loop current.iso dsl_temp
# cp -a dsl_temp/* dsl_usb
# cd dsl_usb
# mv boot/isolinux/* ./
# rm -Rf boot
# mv isolinux.bin syslinux.bin
# mv isolinux.cfg syslinux.cfg
# cd ..
# mkdir usb_pen
# mount -t vfat /dev/sda1 usb_pen
# cp -a dsl_usb/* usb_pen
# umount usb_pen


Ora prepariamo il [[MBR]] della chiavetta con:


# syslinux /dev/sda1
-> 'linux-2.6.17.8.tar.gz


Se non avete l'ultimo comando (syslinux) potete installarlo tramite [[APT]] oppure tramite gli usuali strumenti forniti dalla vostra distribuzione.
Resolving www.kernel.org... 204.152.191.5, 204.152.191.37


== Boot di DSL ==
Connecting to www.kernel.org|204.152.191.5|:80... connected.


A questo punto non ci resta che sezionare il boot tramite dispositivo USB ed avviare il pc.
HTTP request sent, awaiting response... 200 OK


Per avviare il sistema in lingua italiana digitare:
Lenght: 51,707,742 (49M) [application/x-gzip]


dsl lang=it
100%[-------------------------------------->] 51,707,742 35.25k/s


(il segno di uguale si fa con il tasto '�' della tastiera italiana)
ETA 00:00


E in pochi secondi dovrebbe caricarsi il sistema DSL.
18:02:48 (47.12 kB/s) - 'linux-2.6.17.8.tar.gz' saved [51707742/51707742]</pre>


{{Warningbox|Se non riuscite a fare il boot dalla chiavetta (cio� non appare neanche il logo iniziale di DSL) provate a formattare la chiavetta seguendo le [[#Formattazione della chiavetta|precedenti istruzioni]]. Nel caso non riusciste ancora a fare il boot la vostra chiavetta non � compatibile con questo procedimento. Per qualche strano motivo, infatti, alcune chiavette non sono in grado di fare il boot del sistema :-(. Purtroppo, in questi casi, non consco altre soluzioni se non cambiare chiavetta.}}
Per scaricarla con <tt>curl</tt>:


== Configurazione di DSL ==
<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>


DSL stato concepito come livecd, quindi monta il dispositivo da cui effettua il boot in <tt>/cdrom</tt>. Quindi anche nel nostro caso la chiavetta <tt>/dev/sda1</tt> sar� montata in <tt>/cdrom</tt>, e sar� '''non''' scrivibile. Rimontiamola in lettura-scrittura:
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]].


$ su 
[[Immagine:Kernel.org_finger_banner.png|center|500px|thumb|Figura 3-4: Ultima versione del kernel.]]
# mount -o remount,rw /cdrom


Per far si che all'avvio di DSL la chiavetta venga montata automaticamente in rw basta agguingere a <tt>/opt/bootlocal.sh</tt> il precedente comando di mount. Quindi non ci resta che salvare le impostazioni aprendo il pannello di controllo di DSL (sul Desktop) e selezionando in "Backup/Restore" '''sda1''' (''senza /dev/ !'') come dispositivo di backup.
=='''Cosa fare con i sorgenti'''==


Potremo anche aggiungere a <tt>/opt/bootlocal.sh</tt> il comando per caricare la tastiera italiana:
Una volta scaricati i sorgenti del kernel appropriati, dove � previsto che vengano messi? E' consigliabile creare una directory locale nella propria home chiamata linux per conservare tutti i file dei sorgenti del kernel:


loadkeys it
<pre>$ mkdir ~/linux</pre>


in tal modo non dovremo pi� passare al boot il paramentro <tt>lang=it</tt>.
Spostate il codice sorgente nella directory linux:


Il bello � anche che se si scarica nuovo software (tramite ad esempio le extensions di DSL) e si salva nella home, poich� viene di default fatto un backup di tutta la home, ai successivi riavvi avremo il software gi� disponibile senza doverlo riscaricare.
<pre>$ mv ~/linux-2.6.18.8.tar.gz ~/linux/</pre>


Ora, normalmente, quando si effettua un backup delle impostazioni di DSL � necessario usare al boot l'opzione <tt>restore=sda1</tt>. Tuttavia nel nostro caso anche questo � superfluo perch� DSL cerca automaticamente un eventuale backup nello stesso dispositivo dal quale parte. Quindi all'avvio '''non dovremo far altro che premere <tt>[INVIO]</tt>''' e DSL caricher� le nostre impostazioni, tastiera italiana, e software aggiuntivo compresi ;-).
ed entrate nella directory linux:


In tal modo � possibile crearsi in pochi minuti una versione personalizzata di DSL da portarsi sempre dietro in una chiavetta assieme ai prorpi dati ;-).
<pre>$ cd ~/linux
$ ls
linux-2.6.18.8.tar.gz</pre>


Se iniziate ad usare DSL una lettura alle FAQ � d'obbligo (dove troverete queste ed altre informazioni).
Adesso che il codice sorgente si trova nella directory giusta, decomprimetelo:


Happy Hacking !
<pre>$ tar -xzvf linux-2.6.18.8.tar.gz</pre>


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


* [http://www.damnsmalllinux.org/ Homepage Damn Small Linux]
<pre>$ ls
* [http://www.damnsmalllinux.org/wiki/index.php/Main_Page Wiki di Damn Small Linux]
linux-2.6.18.8.tar.gz
* [http://www.damnsmalllinux.org/wiki/index.php/Frequently_Asked_Questions FAQ di Damn Small Linux]
linux-2.6.18.8/</pre>
* [http://wiki.debian.org/BootUsb Wiki Debian: Boot da USB]




----
[[Categoria:Kernel]]
Autore: [[Utente:TheNoise|~ The Noise]] 05:14, Gen 8, 2006 (EST)
[[Categoria:Live]]