jump to navigation

HOWTO – Ricompilare Kernel marzo 19, 2007

Posted by linuxiano in kernel, Linux, Note su Linux, Ubuntu.
trackback

In questa breve guida spiegherò come ricompilare il Kernel di Ubuntu.

Per la compilazione, la nostra linux-box necessita di alcuni pacchetti, da terminale digitiamo:
sudo apt-get install build-essential bin86 kernel-package libncurses5 libncurses5-dev

Sarà necessario scaricare i sorgenti del kernel. Ci sono due possibili strade:

scaricare il pacchetto da questo indirizzo: http://www.kernel.org
In questo modo si avrà la possibilità di installare l’ultima versione stabile del kernel, la cosiddetta versione Vanilla. Una volta scaricato il pacchetto, sarà necessario decomprimerlo e copiarlo nella cartella /usr/src/:

sudo tar -xvjf linux-[VERSIONE_CHE_AVETE_SCARICATO].tar.bz2 && sudo cp -r linux-[VERSIONE_CHE_AVETE_SCARICATO] /usr/src/

scaricare il pacchetto dai repository di Ubuntu (kernel ufficiale di Ubuntu), da terminale dare il seguente comando:

sudo apt-get install linux-source

Ubuntu, purtroppo, non fornisce tutte le versioni dei kernel più aggiornate, scegliendo infatti questa opzione si correrà il rischio di non avere l’ultimo kernel stabile.

Entriamo nella directory dei sorgenti del kernel appena scaricati:

cd /usr/src/linux-[VERSIONE_CHE_AVETE_SCARICATO]

A questo punto, se necessario, sarà possibile applicare una o più patch al kernel.
Tra le più diffuse si possono trovare quelle di:

Con Kolivas

Di solito le patch vengono applicate utilizzando l’insieme di due comandi: patch e cat (o anche bzcat se il file ha estensione .bz2).

Copiare la patch nella directory dei sorgenti del kernel e digitare:

bzcat [NOME_DELLA_PATCH].bz2

Se il procedimento non andrà a buon fine, sarà necessario cancellare tutto quanto e ricominciare dall'inizio.

È possibile importare una vecchia configurazione di un altro kernel. Se si dispone del file .config è sufficiente copiarlo all'interno della directory dei sorgenti.

Se si vuole utilizzare la configurazione del kernel attualmente in uso, è sufficiente digitare, all'interno della directory dei sorgenti:

sudo make oldconfig

Per personalizzare la configurazione eliminando eventuali moduli, o per crearne una nuova, facciamo così:

usando le librerie gtk (consigliato su Ubuntu)

sudo make gconfig

In «General Setup» attivare:
-Support for paging of anonymous memory (swap)
--Support for prefetching swapped memory
In «Processor type and features»:
In «Processor family» scegliere il modello del processore.
Attivare Preemption Model-> Voluntary Kernel Preemption (Desktop)
In «High Memory Support» scegliere:
off se si possiede meno di 1 GB di RAM
1GB Low Memory Support se si possiede 1GB di RAM
4GB se si possiede più di 1GB di RAM
In «Timer frequency» abilitare: 1000 Hz
In «Graphics Support»
Disabilitare NVIDIA RIVA se si usano driver Nvidia proprietari.
In «Block layer -> IO Schedulers» lasciare solo «CFQ I/O scheduler», otterrete una migliore performance.
In «Kernel hacking» deselezionare «Kernel debugging».

Terminata la fase di personalizzazione, passiamo alla compilazione; digitiamo questi comandi:

sudo make-kpkg clean

sudo make-kpkg --append-to-version=-custom --initrd kernel_image kernel_headers
modules_image

Entrare nella cartella superiore:

cd ..
E installare i pacchetti appena creati (dovrebbero essere due). Da terminale digitare:

sudo dpkg -i kernel-image-[VERSIONE_DEL_KERNEL].deb

sudo dpkg -i linux-headers-[VERSIONE_DEL_KERNEL].deb

Grub verrà aggiornato automaticamente.
Riavviare e all'avvio scegliere il nuovo kernel installato.
Se ci sono problemi, riavviare la macchina e utilizzare il vecchio kernel.

X maggiori info potete anche visitare il progetto italiano sulla ricompilazione del kernel.

Commenti»

1. Marco - marzo 27, 2007

Voglio solo segnalarvi che se vi da un errore riguardo l’ EFI vuol dire che dovete disbilitare anche i framebuffer MAC

2. Andrea - novembre 7, 2007

e se da un errore del tipo:
make[2]: *** No rule to make target `arch/i386/kernel/asm-offsets.c’, needed by `arch/i386/kernel/asm-offsets.s’. Stop.
make[1]: *** [prepare0] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.22-14-generic’
make: *** [debian/stamp-kernel-conf] Error 2

Qualcuno ha qualche idea?
Grazie

3. dade - marzo 9, 2008

stesso identico errore..

4. dade - marzo 12, 2008

la scompattazione automatica dei sorgenti eseguita da apt-get corrompe alcuni link simbolici, elimina tutta la directory e riscompattala con tar, vedrai che funziona, avevo lo stesso errore dopo e’ andata

5. Kappe - gennaio 7, 2009

Ciao, ho seguito la guida, poi compila per 10 minuti ma esce con questo errore:

chmod -R og=rX /usr/src/linux-2.6.28/debian/linux-image-2.6.28-custom
chown -R root:root /usr/src/linux-2.6.28/debian/linux-image-2.6.28-custom
dpkg –build /usr/src/linux-2.6.28/debian/linux-image-2.6.28-custom ..
dpkg-deb: costruisco il pacchetto `linux-image-2.6.28-custom’ in `../linux-image-2.6.28-custom_2.6.28-custom-10.00.Custom_i386.deb’.
dpkg-deb: la directory di controllo ha dei permessi non validi: 2755 (devono essere >=0755 e <=0775)
make[1]: *** [debian/linux-image-2.6.28-custom] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.28′
make: *** [binary/linux-image-2.6.28-custom] Error 2

ho dato a /usr/src i permessi 0755 o 0775 con “chmod -R ecc..” ma nulla…. che roba è? avete idea?

6. fabiuz84 - febbraio 11, 2009

devi eseguire il seguente comando nella cartella dove hai i sorgenti del kernel:

find -type d -exec chmod g-s {} \;

anche io avevo il tuo stesso problema e così ho risolto tutto

7. simomis - dicembre 3, 2010

Alla fine della compilazione mi da questi errori :

make[1]: Leaving directory `/usr/src/linux-2.6.36.1′
test ! -e scripts/package/builddeb || mv -f scripts/package/builddeb scripts/package/builddeb.kpkg-dist
test ! -e scripts/package/Makefile || test -f scripts/package/Makefile.kpkg-dist || (mv -f scripts/package/Makefile scripts/package/Makefile.kpkg-dist && (echo “# Dummy file “; echo “help:”) > scripts/package/Makefile)
COLUMNS=150 dpkg -l ‘gcc*’ perl dpkg ‘libc6*’ binutils make dpkg-dev |\
awk ‘$1 ~ /[hi]i/ { printf(“%s-%s\n”, $2, $3) }’> debian/buildinfo
uname -a >> debian/buildinfo
echo using the compiler: >> debian/buildinfo
grep LINUX_COMPILER include/linux/compile.h | \
sed -e ‘s/.*LINUX_COMPILER “//’ -e ‘s/”$//’ >> debian/buildinfo
grep: include/linux/compile.h: No such file or directory
echo applied kernel patches: >> debian/buildinfo
echo done > debian/stamp/build/kernel
/usr/bin/make -f ./debian/rules debian/stamp/binary/pre-linux-image-2.6.36.1-custom
make[1]: Entering directory `/usr/src/linux-2.6.36.1′
====== making target debian/stamp/install/linux-image-2.6.36.1-custom [new prereqs: ]======
This is kernel package version 11.015.
echo “The UTS Release version in include/linux/version.h”; echo ” \”\” “; echo “does not match current version:”; echo ” \”2.6.36.1-custom\” “; echo “Please correct this.”; exit 2
The UTS Release version in include/linux/version.h
“”
does not match current version:
“2.6.36.1-custom”
Please correct this.
make[1]: *** [debian/stamp/install/linux-image-2.6.36.1-custom] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.36.1′
make: *** [kernel_image] Error 2

che ne dite?
come posso risolvere?
Ciao e grazie!!!

8. 3 inch height increasing insoles - dicembre 8, 2012

Seems bewildered

9. free email signature templates - giugno 6, 2013

Nice post. I learn something totally new and challenging
on sites I stumbleupon on a daily basis. It
will always be useful to read articles from other authors and use a little something from their web sites.

10. Sarita - ottobre 3, 2013

Does your blog have a contact page? I’m having problems
locating it but, I’d like to shoot you an email.
I’ve got some recommendations for your blog you might be interested
in hearing. Either way, great site and I look forward to seeing it improve over time.


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...