forum d'ingegneria elettronica e delle telecomunicazioni

REGISTRATEVI per ricevere via e-mail gli ultimi aggiornamenti
 
IndicePortaleGalleriaFAQCercaRegistratiAccedi

Condividi | 
 

 Ricompilare il kernel

Andare in basso 
AutoreMessaggio
Andy
silver
silver
avatar

Numero di messaggi : 179
Età : 31
corso di laurea : elettronica 2006
Data d'iscrizione : 09.07.07

MessaggioTitolo: Ricompilare il kernel   Ven 13 Lug 2007, 23:11

Avere un kernel open source è un indiscutibile vantaggio, ma spesso la sua ricompilazione è vista come un'operazione lunga e complicata che fa preferire, soprattuto ai meno avezzi di Linux, l'utilizzo di kernel precompilati e generici.
Vediamo come è possibile ricompilare il kernel in pochi passi e con un pò di pazienza.
Prima di tutto ci occorrono i sorgenti: possiamo scaricare i sorgenti di un kernel vanilla o utilizzare quelli forniti assieme alla nostra distribuzione.
La differenza, grosso modo, è semplice: il vanilla è il kernel 'ufficiale' al quale non vengono applicate patch aggiuntive, reperibile sul sito www.kernel.org.
Invece, i sorgenti del kernel che troviamo nei cd e dvd nella nostra distribuzione sono patchati in modo tale da essere maggiormente integrati con la distribizione stessa.
Varia da distro a distro la quantità di patch (se presenti) applicate, alcune utili, altre molto meno.
Una volta trovati i sorgenti scompattiamoli in una directory, in genere /usr/src.
Codice:

# tar xjf linux-x.x.x.x.tar.bz2 -C /usr/src
oppure
Codice:
# tar xzf linux-x.x.x.x.tar.gz -C /usr/src

A seconda che l'archivio sia stato compresso utilizzando bzip o gzip.
Le x rappresentano la versione, attualmente l'ultimo kernel stabile è il 2.6.18.2.
Ora abbiamo i sorgenti in /usr/src, entriamo nella directory e creiamo un link simbolico:
Codice:
cd /usr/src
ln -sv linux-x.x.x.x linux

Questo perchè,in genere, alcuni programmi che necessitano dei sorgenti del kernel per una corretta installazione si apettano di trovarli in /usr/src/linux.
Bene, entriamo nella directory dei sorgenti:
Codice:
cd linux-x.x.x.x/
Eliminiamo, se vogliamo, la configurazione salvata.
Se è la prima volta che ricompiliamo i sorgenti diamo:
Codice:
# make mrproper
Possiamo dare il comando anche se non è la prima volta Smile ma la configurazione verrà cancellata, vi toccherà riconfigurare da capo.
Eliminiamo i file temporanei:
Codice:
# make clean
Ora dobbiamo configurare il kernel, la configurazione verrà scritta in un file nascosto '.config'.
Come lo configuriamo ? Abbiamo più possibilità:
make config
Lanciando questo comando ci verranno fatte delle domande, noi risponderemo a seconda se vogliamo includere un driver come modulo, staticamente nel kernel o se non vogliamo includerlo affatto.
Se si commette un errore bisogna rifare tutto, in questo modo è piu' lungo e scomodo ricompilare il kernel.
Se non avete un minimo di esperienza configurate il kernel in altro modo.
make menuconfig
Abbiamo la possibilità di scrivere la configurazione utilizzando da shell un'interfaccia basata sulle librerie ncurses.
Possiamo spostarci da una riga all'altra utilizzando le frecce direzionali e includere o meno un driver premendo piu' volte la barra spaziatrice.
Un driver incluso come modulo sarà marcato come , uno statico come <*> e uno non incluso come <>.
All'uscita ci verrà chiesto se salvare la configurazione.
make xconfig
Utilizzeremo in questo caso un'interfaccia grafica basata sulle librerie QT.
Se non le avete installate non sarà possibile utilizzarla mentre se usate KDE avrete le librerie sicuramente presenti.
E un'interfaccia molto comoda che contiene la descrizione per ogni singola opzione, potrete configurare tutto usando semplicemente il mouse.
Prima di uscire salvate la configurazione cliccando sull'icona del floppy, se si vuole è possible salvare la configurazione in un'altra directory e con un nome a piacere direttamente dalla GUI.
make gconfig
Anche in questo caso utilizzeremo un'interfaccia grafica, simile alla precedente ma basata sulle librerie GTK+.
Ora possiamo finalmente configurare il nostro kernel.
Come detto prima, dato un driver, possiamo:
Includerlo staticamente nel kernel:
Il driver sarà caricato anche quando non si usa la periferica che ne ha bisogno, in poche parole sarà parte integrante del kernel.
E' importante includere staticamente il driver del filesystem della nostra partizione di root (/) e del nostro controller.
In caso contrario al riavvio avremo un 'kernel panic', non sarà possibile avviare il nuovo kernel e saremo costretti a far partire il sistema con il vecchio kernel che avremo intelligentemente conservato !
Includerlo come modulo
Il driver, in questo caso, sarà caricato solo quando occorre o quando si vuole.
Allo stesso modo puo' essere rimosso in ogni momento.
I moduli saranno installati in /lib/modules, per caricarli o rimuoverli dalla memoria si usano rispettivamente i comandi 'modprobe' e 'rmmod'.
Non includerlo
Ci vogliono spiegazioni ?
A questo punto c'è un altro problema: quali driver compilo e quali lascio fuori ?
Dipende dall'hardware del vostro pc e dalle vostre esigenze.
Sicuramente potrebbe tornare utile la stampa dell'output di comandi come lsdev e soprattutto lspci e dmesg.
E molto importante conoscere il chipset della scheda madre, il tipo di scheda video, audio e di rete.
Ora che abbiamo configurato il kernel non ci resta che compilarlo, compilarne gli eventuali moduli, installarlo e configurare il bootloader.

Compilazione:
Compiliamo l'immagine del kernel:
Codice:
# make bzImage
Compiliamo gli eventuali moduli:
Codice:
# make modules
Installiamo i moduli:
Codice:
# make modules_install
Con gli ultimi kernel è possibile sostituire i primi due comandi con un semplice:
Codice:
make -j 3
L'opzione -j indica il numero dei jobs che verranno eseguiti contemporaneamente ed è opzionale.
Bene, ora non ci resta che copiare il kernel in /boot:
Codice:
# cp -vf System.map /boot/System.map-x.x.x.x
# cp -vf arch/i386/boot/bzImage /boot/vmlinuz-x.x.x.x
# cp -vf .config /boot/config-x.x.x.x
Con questi comandi copiamo System map (una serie di indirizzi), bzImage (l'immagine del kernel) e il nostro file di configurazione nella directory /boot.
Ovviamente dobbiamo sostituire le x con la versione ricompilata, non è obbligatorio ma è importante per mantenere un certo ordine, specie se in /boot ci sono diversi kernel.
E' possibile installare il kernel anche con un semplice e veloce:
Codice:
# make install
Che copierà i file in /boot e configurerà il bootloader automaticamente al nostro posto.
Usare il 'make install' è comunque molto rischioso, consiglio vivamente di copiare i file a mano per evitare che i kernel presenti in /boot vengano sovrascritti.
Configurare il bootloader
Siamo alla fine, non ci resta che configurare il bootloader.
Se usiamo lilo apriamo con un editor il file /etc/lilo.conf e aggiungiamo:
Codice:
image=/boot/vmlinuz-x.x.x.x
root=/dev/hdaX
label=Linux-x.x.x.x
read-only
Image indica il kernel da caricare,
root indica la partizione di root da montare (/)
label indica l'etichetta che vogliamo visualizzare al prompt
read-only monta la partizione inizialmente in sola lettura.
Salviamo il file e diamo il comando:
Codice:
# lilo -t
Se non riceviamo errori installiamo il bootloader, in caso contrario controlliamo di non aver sbagliato qualcosa nel file /etc/lilo.conf:
Codice:
# lilo
Se invece usiamo grub apriamo il file /boot/grub/menu.lst e aggiungiamo:
Codice:
title Linux-x.x.x.x
root (hd0,X)
kernel /boot/vmlinuz-x.x.x.x root=/dev/hdaX ro
boot
Modificate le x della partizione di root e quelle del kernel con la sua versione.
Non ci resta che riavviare e far partire il nuovo kernel, e se qualcosa dovesse andare storto sarà sufficiente caricare il vecchio e, con un pò di pazienza, riprovare.
Torna in alto Andare in basso
Visualizza il profilo dell'utente
Anthony
silver
silver
avatar

Numero di messaggi : 238
Età : 30
corso di laurea : Studente
Data d'iscrizione : 09.07.07

MessaggioTitolo: Re: Ricompilare il kernel   Dom 15 Lug 2007, 02:24

Nessuna polemica..io volevo solo puntualizzare che qui siamo tutti ignoranti in materie del genere!! Se fossimo tutti dei geni probabilmente non avremmo bisogno di questo forum!! Il quale è appunto dedicato ai ragazzi curiosi e con tanta voglia di conoscere e imparare di tutto!! Non solo gli integrali tripli o cazzate del genere che ci serviranno poco o niente nella vita! (pensiero personale) Per questo informerei tutti i membri del forum che nel nostro corso ci sono tanti tanti ragazzi curiosi che però partono da zero!! Facendo una piccola indagine personale mi sono accorto che la maggior parte di loro utilizza i portatili e tutti con una sola partizione nella quale è installato indovinate un pò?? Winzozz!! Bisognerebbe partire da qui per divulgare questo fantastico sistema operativo! C'è gente che non sà creare una partizione o installare un s.o. autobootable non vedo a cosa serva un immenso post sulla compilazione del kernel... Un kernel poi senza applicazioni...
Ubuntu 7.04 Faisty Fawn lo si scarica gratuitamente dal sito www.ubuntu-it.org e supporta il kernel 2.6.20-16 (più aggiornato del 2.6.18.2) e poi vi posso assicurare che ha davvero tutto quello che vi serve per riconoscere ogni minima periferica del computer!!! Mi ha sbalordito con quanta facilità (molta ma molta più che con Winzozz con cui ho perso le giornate) si è connesso alla rete ALMAWIFISTUDIO della facoltà!!!!! Ubuntu sta diventando davvero potente!! E poi ha un efficientissimo sistema per la gestione dei pacchetti (ereditato dal papà Debian) con cui installare o disinstallare tutto ciò che vi serve!! Ogni singolo programma può essere installato o rimosso con un solo clic e scaricandolo gratuitamente in tutta legalità dai repository ufficiali!!! Questa è solo una delle tante peculiarità che Ubuntu nasconde dentro di se!!! Se sarete pazienti con lui...lui vi potrà dare quello che avete sempre sperato da un semplice laptop.. Wink
Torna in alto Andare in basso
Visualizza il profilo dell'utente
WoLF
Matricola
Matricola
avatar

Numero di messaggi : 90
Età : 32
corso di laurea : Elettronica
Data d'iscrizione : 16.07.08

MessaggioTitolo: Re: Ricompilare il kernel   Mar 25 Nov 2008, 17:55

Andy come faccio a passare ad un kernel successivo? io ora uso il 2.6.24.21 su hardy...
Torna in alto Andare in basso
Visualizza il profilo dell'utente
gauss
Moderatore
Moderatore
avatar

Numero di messaggi : 966
Età : 31
corso di laurea : tlc 2006
Data d'iscrizione : 08.07.07

MessaggioTitolo: Re: Ricompilare il kernel   Mar 25 Nov 2008, 20:00

WoLF ha scritto:
Andy come faccio a passare ad un kernel successivo? io ora uso il 2.6.24.21 su hardy...
qui, http://ubuntuforums.org/showthread.php?t=85917
dipende dal tuo proc, ma mi sa che ultimo kernel lo fa in automatico, lo stesso prima salva i dati del linux nel caso che non si avvierà più

_________________
gauss è stato licenziato, zdarova è admin adesso
Torna in alto Andare in basso
Visualizza il profilo dell'utente http://zdarova.it
Contenuto sponsorizzato




MessaggioTitolo: Re: Ricompilare il kernel   

Torna in alto Andare in basso
 
Ricompilare il kernel
Torna in alto 
Pagina 1 di 1

Permessi di questa sezione del forum:Non puoi rispondere agli argomenti in questo forum
forum d'ingegneria elettronica e delle telecomunicazioni :: computer & telefonia :: linux-
Andare verso: