|
|
|
|
Strumenti |
18-12-2010, 13:44 | #1 |
Member
Iscritto dal: Oct 2009
Messaggi: 157
|
Compilare il Kernel
Di nuovo Salve a tutti
E ormai quasi un anno che mi sono avventurato nel mondo GNU/Linux, provato diverse distro, smanettato con terminali, tools grafici e non di ogni tipo, programmato pagine e pagine di C++, ed ora sono di fronte a un qualcosa che per me è un enigma: Compilare il Kernel Linux e ottimizzarlo per il proprio hardware ... La distro che uso per il test chiaramente è Ubuntu, Ovviamente ho già una Linux Image installata sul sistema (questa che uso ora) e se qualcosa andrà storto posso sempre ricorrere al boot con il kernel che appunto uso ora ... Vorrei solo sapere se conoscete qualche posto dove posso reperire informazioni riguardo l'ottimizzazione del kernel, perché ho capito che pur conoscendo il mio Hardware, non so quali parametri devo passare ... Una seconda cosa è: patch zen e patch BFS Scheduler; ho capito cosa serve la seconda, ma non so dove reperirla, mentre la zen per cosa è concepita? |
18-12-2010, 14:52 | #2 | ||||
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3008
|
Recente discussione sull'argomento, con introduzione ai passi consigliabili per una prima compilazione.
Guida ufficiale Ubuntu alla compilazione del kernel. Quote:
Quote:
Devo segnalarti che con un kernel vanilla (kernel.org) su Ubuntu noterai:
Quote:
Come ho già scritto, ottenuto il primo kernel funzionante, considero le seguenti iterazioni di affinamento un "arte del togliere". Usualmente procedo in questo modo:
Quote:
Qui trovi il BFS di CK, l'unica patch che sto usando al momento e di cui sono pienamente soddisfatto.
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
||||
19-12-2010, 10:08 | #3 |
Member
Iscritto dal: Oct 2009
Messaggi: 157
|
Davvero grazie hai tolto ogni mio dubbio per il momento
Ora procederò con il raccogliere informazioni e guide riguardo la compilazione, e se avrò problemi proverò a postarli |
19-12-2010, 10:22 | #4 |
Senior Member
Iscritto dal: Mar 2005
Città: Ravenna
Messaggi: 1937
|
@Gimli[2BV!2B]
Ti assicuro che i passi 8,9 e 10 sono obbligatori per almeno due o tre volte
__________________
Dell Inspiron 1720 Ice White Windows 7 Pro/Archlinux x86_64 - 3.0.x -Gnome3 Msi Wind U100 Windows Xp/Ubuntu 11.04 - Gnome3 |
19-12-2010, 12:42 | #5 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3008
|
@Emalele1688, noi ci siamo
@Cobra78, io sono ottimista! Partendo dalla configurazione della distribuzione, considero buone le probabilità di creare un kernel funzionante. Io l'ho azzoppato molto più spesso sperimentando nelle iterazioni successive!
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
19-12-2010, 14:51 | #6 |
Senior Member
Iscritto dal: Mar 2005
Città: Ravenna
Messaggi: 1937
|
Si ma a suo tempo pensai "se lascio la config uguale che ricompilo a fare? Smandruppiamo tutto subito"
__________________
Dell Inspiron 1720 Ice White Windows 7 Pro/Archlinux x86_64 - 3.0.x -Gnome3 Msi Wind U100 Windows Xp/Ubuntu 11.04 - Gnome3 |
19-12-2010, 15:05 | #7 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3008
|
Io di solito parto tranquillo, il pasticcio più ignorante l'ho fatto quando ho scoperto CONFIG_EMBEDDED.
Ho disattivato in una volta sola printk ed un'altro paio di funzionalità fondamentali, perché ero molto curioso di vedere che succedeva... beh, il sistema ha provato a partire, ma si è dovuto arrendere molto presto Sempre quella volta avevo rimosso anche CONFIG_SYSVIPC: me ne sono ricordato quando, settimane dopo, ho provato ad avviare per una mezz'ora buona Apache distribuendo varie benedizioni...
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
19-12-2010, 15:37 | #8 |
Senior Member
Iscritto dal: Mar 2005
Città: Ravenna
Messaggi: 1937
|
Beh, io di recente mi ero incaponito ad eliminare l'initrd........ma ho la root su lvm -.-''
__________________
Dell Inspiron 1720 Ice White Windows 7 Pro/Archlinux x86_64 - 3.0.x -Gnome3 Msi Wind U100 Windows Xp/Ubuntu 11.04 - Gnome3 |
19-12-2010, 15:58 | #9 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3008
|
LVM, non l'ho ancora mai provato, ma il concetto di fondo è molto intrigante.
Ho letto che Grub 2 dovrebbe permettere di montare direttamente volumi LVM, permettendo di mettere perfino /boot in LVM o RAID. Alla fine l'initrd è un passaggio piuttosto leggero, ma sono sempre dell'avviso che è meglio ridurre al minimo i componenti di un sistema: ogni pezzo in meno è un pezzo che non si può rompere. Questo pensiero però mi frena un po' anche nel mio modo di pormi in rapporto ad LVM e RAID (in ambito domestico, naturalmente, al lavoro sono altri ad occuparsi dei macchinoni...).
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
19-12-2010, 17:57 | #10 |
Senior Member
Iscritto dal: Mar 2005
Città: Ravenna
Messaggi: 1937
|
Si beh, però io gioco parecchio (a casa e a lavoro) con la virtualizzazione, e lvm serve per rednere flessibile il raid0 che ho sul portatile
Grub2 me lo sono trovato con Ubuntu, e lo giudico troppo acerbo, tant'è che ho rimesso l'uno :P
__________________
Dell Inspiron 1720 Ice White Windows 7 Pro/Archlinux x86_64 - 3.0.x -Gnome3 Msi Wind U100 Windows Xp/Ubuntu 11.04 - Gnome3 |
21-12-2010, 23:09 | #11 |
Member
Iscritto dal: Oct 2009
Messaggi: 157
|
Allora sto seguendo questa guida per la compilazione del kernel:
http://linuxiano.wordpress.com/2007/...pilare-kernel/ Diciamo che spiega tutto ciò che mi servirebbe per partire, ma secondo voi è attendibile?? Non riesco a capire se la patch BFS viene applicata; Ho scaricato il file patch-2.6.4-ck2.bz2 (che non so nemmeno se è quello giusto), messo nella cartella /usr/src/linux-source-2.6.32/scripts e dato da terminale : bzcat patch-2.6.4-ck2.bz2 E' il procedimento giusto per patchare il kernel? ps: Scusate l'ignoranza ma sono alle prime armi con l'argomento... |
22-12-2010, 00:36 | #12 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3008
|
La guida che riporti non mi convince molto, soprattutto quando si tratta di applicare la patch.
Prima di tutto mi sembra di capire che hai scelto di utilizzare i sorgenti della tua distribuzione, visto che citi la cartella /usr/src/linux-source-2.6.32 In questo caso si è meno certi del risultato dell'applicazione della patch, in quanto i sorgenti sono già modificati dagli sviluppatori della distribuzione e potrebbero contenere modifiche incompatibili con quelle che si desiderano applicare. Cercherò di chiarire l'argomento. la mia sequenza di comandi usuale è questa (esempio su aggiornamento ultimo kernel): Codice:
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/incr/patch-2.6.36.1-2.bz2 bunzip -k patch-2.6.36.1-2.bz2 patch -d linux-2.6.36.1 -p1 < patch-2.6.36.1-2 mv linux-2.6.36.1 linux-2.6.36.2 rm linux ln -s linux-2.6.36.2 linux
La patch CK Occorre scaricare da qui quella relativa al kernel con la versione più vicina possibile a quello che si desidera. C'è anche da tener conto della versione dello scheduler (al momento la più recente è la 360). Di quelle presenti la più semplici da utilizzare sono quelle denominate 2.6.XX[.X]-sched-bfs-XXX.patch:
Esempi:
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
22-12-2010, 09:15 | #13 |
Member
Iscritto dal: Oct 2009
Messaggi: 157
|
Grazie infinite della soddisfacente risposta, seguirò a pieno i tuoi consigli, ma una perplessità:
Usando quindi il kernel vanilla i moduli dei driver inseriti dagli sviluppatori di ubuntu (per esempio scheda di rete, stampanti ecc...) non saranno più presenti nel sistema, quindi ci potrebbe essere la possibilità che alcune periferiche non saranno più riconosciute "al volo"? |
22-12-2010, 20:28 | #14 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3008
|
Ho dato una scorsa alla patch Ubuntu del kernel Ubuntu Maverick più recente, 2.6.35-23.41 al momento.
È una bella bestiola di circa 15.6 MiB. Ripulendo della roba priva di significato concreto si scende a 1.5 MiB. Principali aggiunte:
Nel complesso credo di poter affermare che, se la macchina che stai usando non è particolarmente recente, non dovresti riscontrare differenze per quanto riguarda il supporto hardware. Potresti avere problemi nel caso in cui tu abbia a che fare con modem USB o schede di rete wireless per cui ti occorre NDISWrapper. Potresti avere fastidi anche se usi Ubuntu su di un portatile (un bella fetta delle piccole aggiunte sono quirk per portatili, cioè aggiunte di casi particolari per hardware che non aderisce pienamente alle specifiche).
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
02-01-2011, 10:25 | #15 |
Member
Iscritto dal: Oct 2009
Messaggi: 157
|
Allora mi sto dando alla compilazione del kernel Vanilla co la patch BSF.
Sto seguendo questo How To: http://www.ok--computer.com/linux/kernel/kernel2_6.html Però c'è una cosa che non riesco a capire: Viene detto che una volta configurato il proprio kernel, (cosa che io faccio con make gconfig), per evitare che qualche opzione sfugga bisogna dare make oldconfig; Ma cosi facendo non viene sovrascritta la nostra nuova configurazione con una precedente? |
02-01-2011, 13:01 | #16 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3008
|
Il make oldconfig prende il .config che trova e lo aggiorna con le voci presenti nei sorgenti. È un passo necessario per assicurarsi che la configurazione sia valida.
Non è un'operazione distruttiva: se i sorgenti contengono nuove opzioni viene chiesto esplicitamente all'utente come le vuole impostare; naturalmente se alcune opzioni sono state rimosse queste vengono eliminate silenziosamente. Questo discorso è valido soprattutto in caso di salto di versione centrale (2.35 -> 2.36, per esempio) oppure in caso di applicazione di patch come la BFS, che introduce alcune voci alla configurazione. Per scrupolo io lo eseguo ad ogni aggiornamento (è una cosa molto veloce). Come ho già accennato è consigliabile tenere backup dei .config delle due o tre versioni principali precedenti, come anche nei casi di modifiche sostanziali che potrebbero non portare ai risultati desiderati.
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
02-01-2011, 13:41 | #17 |
Member
Iscritto dal: Oct 2009
Messaggi: 157
|
Scusa non so se sbaglio, ma ogni volta che eseguo oldconfig mi da una sfilza di voci da confermare con y,m,n; L'altra volta ho impiegato circa un ora.
E' una cosa normale ? Forse la precedente configurazione del kernel la devo includere io nella directory dei sorgenti, copiandola da /boot (/boot/config-2.6.35-24-generic) e rinominarla in .config ?? |
02-01-2011, 21:02 | #18 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3008
|
Sì, devi mettere nei sorgenti il .config che vuoi aggiornare alla nuova versione.
Riguardo alla quantità di richieste, più il .config è vecchio rispetto ai sorgenti, più si avranno nuove opzioni da configurare. Ho trovato questo comando che risponde con un invio a tutte le richieste: Codice:
yes "" | make oldconfig
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) Ultima modifica di Gimli[2BV!2B] : 02-01-2011 alle 21:10. Motivo: make silentoldconfig non fa quel che ho pensato |
03-01-2011, 10:45 | #19 |
Member
Iscritto dal: Oct 2009
Messaggi: 157
|
OK grazie tanto
Ecco i passi che sto eseguendo: 1-Scarico la sorgente del Kernel Vanilla dal sito ufficiale (linux-2.6.36.2); 2-Scarico la patch BFS (2.6.36.2-sched-bfs-360.patch); 3-Decomprimo dentro /usr/src i sorgenti del kernel e copio la patch; 4-Da terminale muovendomi in /usr/src eseguo: patch -d linux-2.6.36.2 -p1 < 2.6.36.2-sched-bfs-360.patch; 5-Dopo mi copio la vecchia configurazione del kernel nella directory dei nuovi sorgenti: sudo cp /boot/config-2.6.35-24-generic .config; 6-Do il comando make oldconfig e rispondo a tutte le richieste (per ora premo invio ad ogni richiesta cosi da lasciare quella consigliata) Qui mi si presenta un dubbio: Nella cartella dei sorgenti trovo un file .config ed un file .config.old; Il .config.old posso eliminarlo? così che magari nel menu di boot non mi trovo due configurazioni diverse per lo stesso kernel che ho compilato. Oppure è conveniente tenerselo il .config.old una volta configurato il Kernel? 7-Do il comando make e aspetto qualche oretta che il kernel si compila; 8-Compilo ed installo i moduli: sudo make modules_install 9-Installo il nuovo kernel: sudo make install; Pensate che per ora il mio procedimento sia adeguato? |
03-01-2011, 18:57 | #20 | |||
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3008
|
Quote:
Quote:
Quote:
In Ubuntu non sceglierei la strada classica ma creerei dei bei .deb a là Debian, ma è questione di gusti. Nulla da eccepire sui comandi di compilazione classica e la loro sequenza.
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
|||
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:30.