Zermo
Registrati per avere l'accesso completo al forum e poter scaricare ciò che vuoi tutto GRATUITAMENTE.

By Zermo95™️

Unisciti al forum, è facile e veloce

Zermo
Registrati per avere l'accesso completo al forum e poter scaricare ciò che vuoi tutto GRATUITAMENTE.

By Zermo95™️
Zermo
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.

Guida pratica alla compilazione del Kernel

2 partecipanti

Andare in basso

Guida pratica alla compilazione del Kernel Empty Guida pratica alla compilazione del Kernel

Messaggio Da giugiu69 Sab Apr 14, 2012 5:45 pm

Escludendo distribuzioni come Gentoo o LFS, oggi è raro dover
necessariamente compilare un kernel per poter avviare la propria
distribuzione, e di fatto Ubuntu, Fedora ma anche Slackware, Arch Linux e
molte altre a tutti i livelli, forniscono uno o più kernel di default .



Allora, perchè voler un kernel “su misura”?




Le motivazioni sono tante e varie, quella che chi scrive piazza al primo
posto è la compattezza (e quindi indirettamente, la velocità e
l'avidità di memoria), ma le possiblità sono tante e variegate, potreste
volere un supporto ad un filesystem esotico, fregandovene del classico
EXTx piuttosto che il supporto nel kernel a qualche periferica inusuale
(vedremo più avanti) o ancora, un kernel minimale per una macchina
obsoleta e con poca memoria .




Le possiblità sono veramente infinite, tutto per avere la massima versatilità possibile.



Probabilmente vi è stato detto che “ricompilare il kernel è cosa
difficile e macchinosa“, in realtà non è esattamente così; richiede
attenzione, una buona conoscenza della macchina ed un po' di pazienza.
Un invito che posso darvi è quello di compilare una versione diversa e/o
con un nome diverso il vostro kernel, così da avere la “via di fuga” di
quello di default in caso di pasticci.




Ora che siete a conoscenza di queste poche cose possiamo iniziare a
lavorare, un buon inizio è capire come è fatto un kernel: create una
directory di compilazione (ad esempio /home/nomeutente/src) e
procuratevi i sorgenti del kernel (al momento in cui scriviamo 3.2) e
della patch (al momento x.13, che “insieme” al kernel darà vita a
“linux-3.2.13”), ed andranno spacchettati in nella directory precedente;
ora siete davanti ad un gruppo di tanti ed “inutili” file sorgenti.




“Inutili“ perché così come sono la loro compilazione avrebbe effetti
deleteri, bisogna prima di tutto “istruire” il compilatore su cosa e
come lo deve fare, e per farlo c'è bisogno di un file /.config.




NOTA: Questo file è reperibile ad esempio su Ubuntu nel percorso /boot ed è chiamato config-2.6*.




NOTA 2: Ogni distribuzione ha un approccio più o meno gestibile
alla compilazione del kernel, su Arch Linux la vita è facilitata da ABS,
ma su Ubuntu l'operazione è più complicata, quindi da qui in avanti il
metodo che indicherò sarà quello “all'antica”.




Spostiamoci nella directory dei sorgenti ed applichiamo la patch col comando

bzcat [NOME_DELLA_PATCH].bz2 | patch -p1



Questa operazione ha una durata variabile, a seconda del vostro
hardware, ma lascietelo fare e vedrete che prima o poi il prompt di
comando riapparirà!




Ed ora possiamo veramente addentrarci nella configurazione del kernel,
la via senza ombra di dubbio preferibile è “menuconfig”, una sorta di
interfaccia grafica minimale che ci aiuterà nella scelta di cosa e come
fare. Quindi, lanciamo il comando:

make menuconfig



Spostatevi con le freccette verso “Load an Alternate Configuration File”
e selezionate quello precetendemente importato, così partirete dalla
configurazione del vostro kernel di default.

Vi invito a studiarvelo bene, c'è molto da imparare e gia qui, anche l'utente medio può scremare qualcosa,



La mia è una macchina AMD, con processore Phenom, scheda video AMD/ATI:
viene da sé (e non richiede conoscenze specifiche) che è
possibile eliminare la voce "Intel MCE features" o, se avessi un single
core senza hypertreading, potrei spuntare anche il “symmetric
multi-processing support”.




Un cenno importante è l'uso o meno del ramdisk, l'initramfs e l'uso dei moduli/integrazioni.




Di norma il kernel dovrebbe contenere quanto necessario per avviare il
sistema, dovrebbero quindi essere integrati il supporto al filesystem
scelto, il supporto alla scheda video ecc. UDEV poi si occuperà di
caricare dinamicamente i moduli necessari al resto del sistema (ad
esempio, è vitale che il sistema sappia leggere la partizione EXTx dove
risiede, quindi ha priorità assoluta ed il supporto a quel filesystem
deve essere integrato, mentre non è necessario che sappia leggere fin da
subito una chiavetta USB in FAT; quindi il supporto al “dosfs” può
essere compilato come modulo).

Questo approccio è quello "classico", anche se in realtà ad oggi va per la maggiore l'uso di“initramfs”.




Questo approccio permette più flessiblità e leggerezza; in pratica
utilizzandolo si può fare un uso intensivo dei moduli, lasciando il
kernel snello e leggero (un esempio può essere questo: il kernel di Arch
Linux, che utilizza l'initramfs, il supporto a gran parte del parco
hardware è sotto forma di modulo), ma il rischio è di farsi prendere
troppo la mano, generando moduli per tutto; anche per periferiche che
non avremo mai (opppure qualcuno vuol farmi credere che sta scrivendo da
un PC con interfaccia dischi "pre ide"?)




Questo ci porta a dover capire "come non abusare dei moduli".




In primis, dobbiamo identificare tutto l'hardware, infine capire i moduli caricati con il kernel di default durante il boot.




Itendificare l'hardware è semplice, i comandi "lshw" (mostra tutto
l'hardware) "lspci" (dispositivi con interfaccia PCI) "lsusb"
(dispositivi con interfaccia USB) "lscpu" (dettagli approfonditi del
processore), ci vengono agevolmente incontro: il loro output ci aiuterà a
capire ciò di cui non abbiamo bisogno; né come modulo, né build-in.




Un ulteriore aiuto ci viene offerto da "lsmod", il comando mostrerà un
listato dei moduli caricati da UDEV durante il boot, che certamente sono
quelli essenziali per il funzionamento della vostra macchina e che
quindi dovrete compilare come modulo.




IMPORTANTE: STAMPANTI USB, WEBCAM E DISPOSITIVI VARI DEVONO ESSERE COLLEGATI ED OPERATIVI QUANDO LANCERETE "LSMOD"!




Quindi in sintesi, i vari comandi "lsxxx" ci aiuteranno ad identificare
l'hardware, "lsmod" a capire chi e cosa usa un detemrinato modulo. Se
dai listati dai comandi "lsxxx" rapportati a "lsmod", ci dovesse essere
qualche periferica non elencata, non potete sbagliare; sarà necessario
inserire il suo supporto come buid-in.




Una volta compreso quanto detto e configurato il compilatore, potrete
finalmente salvare il vostro .config e uscire dal menu; il kernel che ne
uscirà sarà esattamente ciò di cui avete bisogno per la vostra macchina
e le vostre esigenze.




In conclusione, la compilazione del kernel non è un'operazione che porta
con sé una difficoltà intinseca insormontabile, ma richiede solo un po'
di pazienza ed un'ottima conoscenza della macchina. Non vi resta che
provare e gustarvi i risultati!

Crediti :lffl
giugiu69
giugiu69
Membro d'onore
Membro d'onore

Messaggi : 817
Località : Porto Torres

Torna in alto Andare in basso

Guida pratica alla compilazione del Kernel Empty Re: Guida pratica alla compilazione del Kernel

Messaggio Da Derp Dom Apr 15, 2012 12:16 pm

Bravo!!Sposto in Linux Wink
Derp
Derp
Responsabile
Responsabile

Messaggi : 7444
Località : Reggio Emilia (RE)

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.