PDA

View Full Version : configurare kernel linux per la compilazione


ThereThere
19-11-2010, 22:44
Salve, utilizzo ubuntu come sistema principale e mi trovo bene, ora mi è saltato lo sfizio di provare a compilare il kernel linux per provare questa patch (http://www.phoronix.com/scan.php?page=article&item=linux_2637_video&num=1) e vedere se effettivamente porta benefici.

Ho fatto un compilazione di prova (con questa guida (http://wiki.ubuntu-it.org/AmministrazioneSistema/CompilazioneKernel)) con la suddetta patch su ubuntu 10.04 a 64 bit e sembra abbia compilato correttamente, il che mi rincuora dato che ho incontrato non poche difficoltà nel compilare altra roba. Il kernel però non l'ho installato.

Ho visto che prima di compilare, tramite una comoda interfaccia grafica, si può configurare il kernel, decidere quali moduli compilare ecc ecc...
siccome sono una marea di parametri c'è qualcuno che mi saprebbe dire brevemente e spiegare quali attivare e quali no? Ho trovato guide molto (troppo) esaustive sull'argomento in rete e prima di cimentarmi a studiarmele mi piacerebbe sentire il parere di qualcuno, magari anche solo una piccola riflessione da cui partire per approfondire l'argomento che mi pare molto intressante.
La guida che ho linkato offre un piccolo spunto, ma a mio parere troppo modesto e inoltre mi sembra non aggiornata dato che alcune indicazioni non le trovo nella interfaccia di configurazione del kernel.

Secondo voi ha senso ricompilarsi il kernel da soli? Ci sono miglioramenti prestazionali? Vantaggi? Svantaggi?

Vorrei ottimizzare il kernel per bene prima di installarlo e provarlo. Per questa compilazione di prova ho utilizzato l'ultima versione stabile disponibilie ora, ovvero la 2.6.36

P.S. Su www.kernel.org si può scaricare il kernel e un file .bz2 con delle patch. Ma queste suddette patch sono già incluse nel download standard dei sorgenti del kernel?

Ringrazio anticipatamente chiunque voglia partecipare e spero abbia offerto uno spunto per una discussione interessante.

Alla prossima, ciao ciao!:)

Pardo
19-11-2010, 23:31
P.S. Su www.kernel.org si può scaricare il kernel e un file .bz2 con delle patch. Ma queste suddette patch sono già incluse nel download standard dei sorgenti del kernel?

Le patch su kernel.org sono le differenze dalla versione precedente dello stesso kernel, quindi serve solo per non riscaricare tutto il full source ogni volta.

Pardo
19-11-2010, 23:51
Salve, utilizzo ubuntu come sistema principale e mi trovo bene, ora mi è saltato lo sfizio di provare a compilare il kernel linux per provare questa patch (http://www.phoronix.com/scan.php?page=article&item=linux_2637_video&num=1) e vedere se effettivamente porta benefici.

siccome sono una marea di parametri c'è qualcuno che mi saprebbe dire brevemente e spiegare quali attivare e quali no?

Se vuoi solo sbatterci dentro quella patch, intanto patchalo, poi x la configurazione basta solo che ci carichi quella del kernel attuale (che si trova sempre in /proc/config.gz, ma in alcune distro le config sono anche archiviate in /boot) senza preoccuparti di modificare niente. Per maggior prudenza conviene che usi direttamente i source di ubuntu o almeno la corrispondente versione vanilla. (Se prendi uno molto successivo e` possibile che sia cambiato qualche cosa di importante che necessiterebbe di attenzione per cui non basterebbe caricare la vecchia config x evitare minchiate.)

ThereThere
20-11-2010, 02:32
Le patch su kernel.org sono le differenze dalla versione precedente dello stesso kernel, quindi serve solo per non riscaricare tutto il full source ogni volta.

Come immaginavo. Quando tentavo di patchare un kernel con le patch associate allo stesso mi dava una risposta che credevo indicasse che le patch in questione fossero già presenti.

Buono a sapersi


Se vuoi solo sbatterci dentro quella patch, intanto patchalo, poi x la configurazione basta solo che ci carichi quella del kernel attuale (che si trova sempre in /proc/config.gz, ma in alcune distro le config sono anche archiviate in /boot) senza preoccuparti di modificare niente. Per maggior prudenza conviene che usi direttamente i source di ubuntu o almeno la corrispondente versione vanilla. (Se prendi uno molto successivo e` possibile che sia cambiato qualche cosa di importante che necessiterebbe di attenzione per cui non basterebbe caricare la vecchia config x evitare minchiate.)

Come si fa a trasferire una configurazione attuale su un kernel "pulito"? Se sapessi come si fa allora proverei subito a trasferire la mia configurazione sui sorgenti del kernel forniti da ubuntu e ci applicherei la patch per vedere come si comporterebbe.

Comunque mi interessano anche sapere un po' di impostazioni basilari da fornire al kernel in fase di configurazione prima di compilarlo, se hai qualche link o informazione a riguardo saranno ben accette;)

Grazie, ciao ciao!

Gimli[2BV!2B]
20-11-2010, 14:34
Posti i necessari presupposti, già in buona parte illustrati nella guida che hai seguito:
tuo utente aggiunto al gruppo src
sorgenti scaricati
sorgenti estratti in /usr/src
sorgenti patchati
eventuale rinominazione cartella per rispecchiare le patch aggiunte
link simbolico canonico creato:ln -s /usr/src/linux-TUA_VERSIONE /usr/src/linux


Come si fa a trasferire una configurazione attuale su un kernel "pulito"?
Solitamente questo è il punto di partenza per ogni compilazione su una nuova macchina (da eseguire da utente normale, senza sudo):cp /boot/config-$(uname -r) /usr/src/linux/.config
cd /usr/src/linux
make oldconfigSe la versione del kernel non è la stessa (molto probabile) riceverai alcune domande riguardo alle impostazioni delle nuove funzionalità aggiunte.
Nel 99% dei casi ti basterà premere invio accettando la scelta predefinita (la prima lettera maiuscola tra le quadre); è anche possibile leggere la breve descrizione della funzionalità premendo ? seguito da invio.

Questa è la guida che ho utilizzato io per la mia prima compilazione (http://guide.debianizzati.org/index.php/Debian_Kernel_Howto) (contiene link ad approfondimenti).
Per sapere i driver in uso:lspci -k

Per completezza ti dico che, se non ricordo male, ho anche letto di programmi/script per configurazione automatiche del kernel, fatti con un po' di intelligenza in più rispetto all'utilizzo delle impostazioni di default, però non mi sono mai interessato alla cosa.

Considerazione finale: partendo dalla configurazione della distribuzione, la personalizzazione è essenzialmente un processo di eliminazione di cose inutili; finché si tratta di driver puoi scegliere facilmente (ce l'ho la periferica per cui serve questo driver?), se si tratta di opzioni riguardo a funzionalità Google è il tuo migliore amico.
Fai backup delle configurazioni funzionanti (file .config in /usr/src/linux) e, soprattutto all'inizio, non eliminare troppo tra una versione e l'altra.

ThereThere
20-11-2010, 17:01
;33706272']Posti i necessari presupposti, già in buona parte illustrati nella guida che hai seguito:
tuo utente aggiunto al gruppo src
sorgenti scaricati
sorgenti estratti in /usr/src
sorgenti patchati
eventuale rinominazione cartella per rispecchiare le patch aggiunte
link simbolico canonico creato:ln -s /usr/src/linux-TUA_VERSIONE /usr/src/linux



Solitamente questo è il punto di partenza per ogni compilazione su una nuova macchina (da eseguire da utente normale, senza sudo):cp /boot/config-$(uname -r) /usr/src/linux/.config
cd /usr/src/linux
make oldconfigSe la versione del kernel non è la stessa (molto probabile) riceverai alcune domande riguardo alle impostazioni delle nuove funzionalità aggiunte.
Nel 99% dei casi ti basterà premere invio accettando la scelta predefinita (la prima lettera maiuscola tra le quadre); è anche possibile leggere la breve descrizione della funzionalità premendo ? seguito da invio.

Questa è la guida che ho utilizzato io per la mia prima compilazione (http://guide.debianizzati.org/index.php/Debian_Kernel_Howto) (contiene link ad approfondimenti).
Per sapere i driver in uso:lspci -k

Per completezza ti dico che, se non ricordo male, ho anche letto di programmi/script per configurazione automatiche del kernel, fatti con un po' di intelligenza in più rispetto all'utilizzo delle impostazioni di default, però non mi sono mai interessato alla cosa.

Considerazione finale: partendo dalla configurazione della distribuzione, la personalizzazione è essenzialmente un processo di eliminazione di cose inutili; finché si tratta di driver puoi scegliere facilmente (ce l'ho la periferica per cui serve questo driver?), se si tratta di opzioni riguardo a funzionalità Google è il tuo migliore amico.
Fai backup delle configurazioni funzionanti (file .config in /usr/src/linux) e, soprattutto all'inizio, non eliminare troppo tra una versione e l'altra.

Grazie dei consigli! Detta così non sembra neanche troppo difficile, comunque vale la pena di sbatterci un po' la capoccia per riuscire nell'intento. Appena avrò uno spiraglio di tempo ci proverò di sicuro, penso di iniziare a ricompilare il kernel di default di ubuntu 10.04 secondo le tue indicazioni per vedere che succede, e poi magari successivi.

Una domanda: eliminando i vari moduli di periferiche inutili dalla compilazione del kernel si ottiene una maggiore reattività del sistema?

Gimli[2BV!2B]
20-11-2010, 17:52
eliminando i vari moduli di periferiche inutili dalla compilazione del kernel si ottiene una maggiore reattività del sistema?No, si riduce semplicemente il codice da compilare e la dimensione dell'installato (in caso di moduli, il contenuto delle cartelle /lib/modules).

I principali vantaggi si possono ottenere:

applicando patch specifiche (tu sei interessato alle 200 righe delle meraviglie, io uso il brain fuck scheduler (http://en.wikipedia.org/wiki/Brain_Fuck_Scheduler) del buon ck (http://en.wikipedia.org/wiki/Con_Kolivas))
rimuovendo l'inutile step initrd ed integrando tutti i driver della propria macchina
attivando le ottimizzazioni specifiche per il proprio processore, scegliendo anche se utilizzare l'ottimizzazione per dimensione (in funzione della quantità di cache della CPU)
disattivando/attivando particolari funzionalità mancanti/disponibili nella propria macchina


Di questi, praticamente solo il punto uno porta effetti chiaramente visibili ad occhio nudo.

ThereThere
23-11-2010, 13:27
;33707995']No, si riduce semplicemente il codice da compilare e la dimensione dell'installato (in caso di moduli, il contenuto delle cartelle /lib/modules).

I principali vantaggi si possono ottenere:

applicando patch specifiche (tu sei interessato alle 200 righe delle meraviglie, io uso il brain fuck scheduler (http://en.wikipedia.org/wiki/Brain_Fuck_Scheduler) del buon ck (http://en.wikipedia.org/wiki/Con_Kolivas))
rimuovendo l'inutile step initrd ed integrando tutti i driver della propria macchina
attivando le ottimizzazioni specifiche per il proprio processore, scegliendo anche se utilizzare l'ottimizzazione per dimensione (in funzione della quantità di cache della CPU)
disattivando/attivando particolari funzionalità mancanti/disponibili nella propria macchina


Di questi, praticamente solo il punto uno porta effetti chiaramente visibili ad occhio nudo.

Purtoppo ho venduto il mio pc ed adesso sono con un pc di scorta, appena mi arriva quello nuovo proverò a seguire i tuoi consigli, tra l'altro sono interessato a provare lo scheduler che mi hai suggerito te.

Grazie ancora dei consigli!

toni00t
09-11-2014, 20:12
si parla sempre di avere una buona conoscenza dell hardware prima di compilare il kernel,ma...il problema è che le voci di menuconfig non sono amichevoli e alcune neanche chiare. qualcuno sa se esiste un manuale,una guida , qualcosa ,a menuconfig dove si spiega il significato di ogni voce ?

sacarde
09-11-2014, 21:56
se puo aiutare


http://www.spaghettilinux.org/forum/index.php/topic,578.0.html

toni00t
09-11-2014, 22:40
se puo aiutare


http://www.spaghettilinux.org/forum/index.php/topic,578.0.html
proprio quello che cercavo. grazie :)