ricompilare il kernel.. perchè?

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Ermes1
Linux 2.x
Linux 2.x
Messaggi: 374
Iscritto il: sab 25 mar 2006, 16:45

ricompilare il kernel.. perchè?

Messaggio da Ermes1 »

Salve a tutti! ho una curiosità: quali sono i motivi fondamentali per cui può o deve essere ricompilato il kernel? prestazioni? supporto periferiche?

....chiedo troppo se vi chiedo di argomentare un minimo le risposte.. :D :D

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio da targzeta »

La prima che mi viene in mente è che il compilatore gcc ha delle opzioni per ottimizzare il codice su determinate architetture. Questo vuol dire che se compili il kernel hai del codice ottimizzato per la tua architettura, e questo codice è il kernel!!!!!!

Spina

Bart
Staff
Staff
Messaggi: 4249
Iscritto il: lun 9 ago 2004, 0:00
Località: Rimini

Messaggio da Bart »

spina ha scritto:La prima che mi viene in mente è che il compilatore gcc ha delle opzioni per ottimizzare il codice su determinate architetture. Questo vuol dire che se compili il kernel hai del codice ottimizzato per la tua architettura, e questo codice è il kernel!!!!!!

Spina
Questo è sicuramente un motivo valido ma prima ne considerei un altro più rilevante: supporto hardware. Sicuramente il primo motivo per ricompilare il kernel è per abilitare il supporto all'hardware: hai appena comprato una scheda wireless e non hai il supporto nel kernel? RICOMPILA! :D In secondo luogo inserirei quello riportato da spina. In terzo luogo permette di applicare patch. Esempio: ho un server e sono paranoico?! Lo ricompilo con grsecurity! Oppure ho un kernel modulare e lo voglio monolitico: lo ricompilo senza utilizzare i moduli. In quarto luogo ricompilare il kernel permette di avere un sistema più leggero e pulito eliminando il supporto a tutte quelle periferiche che non abbiamo o che non useremo mai.
Ah giusto, a volte capita anche che si scoprano dei bug. Questo è sicuramente un motivo fondamentale per aggiornare il kernel, lo metterei al punto 1 insieme al supporto hardware. ;)

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Messaggio da gioco »

Il motivo principale è il supporto hardware. A questo proposito, oltre a quello che è stato scritto, a me è capitato di ricompilare perchè alcuni driver erano stati aggiunti o ne era stato migliorato il codice: nel 2.6.17 è stato aggiunto il driver bcm4xxx per le schede wifi broadcom come quella del mio iBook e nel 2.6.19 è stato migliorato.
Un altro motivo può essere quello di abilitare determinate opzioni necessarie per utilizzare alcuni software (es: fuse per gmailfs) oppure per provare nuove funzionalità.
Infine prima o poi si sente il bisogno (o si vuole provare) di compilare un kernel ottimizzato per la propria macchina, abilitando solo lo stretto indispensabile.

Avatar utente
phobos3576
Staff
Staff
Messaggi: 2980
Iscritto il: dom 17 apr 2005, 0:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Messaggio da phobos3576 »

Esempio pratico: ogni Distribuzione prevede una installazione predefinita che funziona per qualsiasi PC monoprocessore con CPU generica 80486 o superiore; se sul proprio PC è presente una CPU Dual Core (AMD64, Intel Core Duo, etc), ciò significa che, come viene spiegato anche nella documentazione del kernel, verrà sfruttata una sola CPU!
Attraverso un programma come KInfoCenter si può infatti notare che nella sezione "Processore" viene elencata una sola CPU (0); ad esempio, per un AMD64 4200+ viene elencata la sola CPU 0 che funziona a 2200 MHz.

Ricompilando il kernel con il supporto specifico per i sistemi multiprocessore verranno invece sfruttate tutte le CPU presenti sul PC; in tal caso, per un AMD64 4200+ il programma KInfoCenter nella sezione "Processore" elenca le due CPU (0 e 1) ciascuna delle quali marcia a 2200 MHz.

La differenza di prestazioni tra i due casi appena elencati è abissale!

Avatar utente
lamarozzo
Linux 3.x
Linux 3.x
Messaggi: 732
Iscritto il: gio 14 lug 2005, 0:00
Desktop: xfce
Distribuzione: archlinux
Località: Roma

Messaggio da lamarozzo »

i kernel che arrivano di default con la maggior parte delle distribuzioni (compresa la Slack) sono molto modulari e quindi caricando i moduli giusti si adattano ad una grandissima varieta' di hardware. In molti casi quindi, anziche' ricompilarsi il kernel si puo' installare uno dei nuovi kernel gia' compilati (per noi magari huge2.6 o test2.6).
Compilarsi da soli il kernel e' pero' molto didattico, soprattutto quando uno e' alle prime armi (come nel mio caso), combina dei pasticci e poi deve risolverli.
L'argomento secondo cui si dovrebbe avere un incremento di prestazioni ottimizzando la compilazione del kernel non so quanto sia vero fino in fondo. Le prestazioni di un sistema sono condizionate da ben altri colli di bottiglia che la velocita' di esecuzione del codice del kernel. Ma magari mi sbaglio.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio da targzeta »

lamarozzo ha scritto:...L'argomento secondo cui si dovrebbe avere un incremento di prestazioni ottimizzando la compilazione del kernel non so quanto sia vero fino in fondo. Le prestazioni di un sistema sono condizionate da ben altri colli di bottiglia che la velocita' di esecuzione del codice del kernel. Ma magari mi sbaglio.
Il collo di bottiglia delle prestazioni resta sempre la "lentezza" della memoria di massa (l'hard disk). Quanto tutto è in memoria se si può ottimizzare, perchè non farlo? Io ti parlo di livello assembly. Ci sono processori che implementano un unica istruzione assembly per risolvere problemi che altrimenti li si dovrebbero risolvere con una serie di istruzioni. Se tu sai che il processore può usare quella istruzione, perchè non sfruttarla? Guarda che tutto il problema legato alla compilazione dei sorgenti sta proprio qui. Altrimenti perchè uno si dovrebbe compilare software dai sorgenti invece di utilizzare i binari precompilati? Vedi la distribuzione gentoo, non avrebbe senso.

Spina

Avatar utente
Sari
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: mer 16 feb 2005, 0:00
Slackware: 12.1
Kernel: 2.6.24
Desktop: Gnome
Località: Verona

Messaggio da Sari »

lamarozzo ha scritto:i kernel che arrivano di default con la maggior parte delle distribuzioni (compresa la Slack) sono molto modulari e quindi caricando i moduli giusti si adattano ad una grandissima varieta' di hardware. In molti casi quindi, anziche' ricompilarsi il kernel si puo' installare uno dei nuovi kernel gia' compilati (per noi magari huge2.6 o test2.6).
Compilarsi da soli il kernel e' pero' molto didattico, soprattutto quando uno e' alle prime armi (come nel mio caso), combina dei pasticci e poi deve risolverli.
L'argomento secondo cui si dovrebbe avere un incremento di prestazioni ottimizzando la compilazione del kernel non so quanto sia vero fino in fondo. Le prestazioni di un sistema sono condizionate da ben altri colli di bottiglia che la velocita' di esecuzione del codice del kernel. Ma magari mi sbaglio.
La CPU esegue un sacco di codice Kernel, se non ricordo male il ContextSwitch in Linux è ogni 10ms... minimo ogni 10 millisecondi entra in gioco il kernel che si prende la briga di salvare tutto e eseguire qualcuno dei suoi algoritmi per poi mandare in esecuzione un altro processo, ovviamente senza contare le miliaia di chiamate di sistema :D. Direi che una ottimizzazione del kernel giova non poco sui tempi di esecuzione (oltre che sull'occupazione di memoria).

Avatar utente
Toni
Linux 3.x
Linux 3.x
Messaggi: 999
Iscritto il: lun 30 gen 2006, 22:08
Slackware: slackware-14
Kernel: 3.10.5
Desktop: i3
Località: milano

Messaggio da Toni »

qualcuno mi corregga se sbaglio

puoi decidere quale approccio al multitasking usare, cioè quanto tempo il kernel decide di affidare le risorse hardware ad un processo e in che modo avvenga il rilascio delle risorse, il kernel di default è impostato per ottimizzare le applicazioni server , se usi il pc come desktop puoi variare questa configurazione , io anche; se minimo, posso dirti di avere un desktop piu reattivo, almeno su un vecchio pc

Rispondi