Compilare il Kernel

Guides, tutorials & docs
Post Reply
User avatar
othoth-tux
Collaboratore
Collaboratore
Posts: 338
Joined: 4 February 2008, 19:55
OpenMandriva: OpenSuse 12.2
Kernel: 3.4.x
Desktop: Gnome3
country: Italy

Compilare il Kernel

Post by othoth-tux »

In questa guida spiegheremo come compilare il kernel e ottimizzarlo con i consigli e i trucchi del MIB.
Useremo il kernel 2.6.24-7, che è quello predefinito della MIB Live 2008.1 - SPack Agosto 2008.
La procedura comunque è la stessa per gli altri kernel.
Non perdiamo tempo, avviamo il kernel da compilare e cominciamo i preparativi.

Preparativi:

prima di ogni cosa dobbiamo assicurarci di avere installato tutti i compilatori necessari. Se avete installato la mandriva da Powerpack già li avete, altrimenti apriamo una konsole di root e diamo il comando:

Code: Select all

urpmi gcc
fatto questo dobbiamo entrare nella cartella /usr/src

Code: Select all

cd /usr/src
e verificare se la cartella con i sorgenti del kernel in questione è presente, altrimenti dobbiamo procurarceli con un semplice comando:

Code: Select all

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24-7.tar.bz2
ovviamente sostituite 2.6.24-7 com il kernel che avete avviato. Controllate per sicurezza con il comando:

Code: Select all

uname -a
al termine dello scaricamento scompattiamo il file scaricato

Code: Select all

tar -xvjf linux-2.6.24-7.tar.bz2
si creerà una cartella chiamata linux-2.6.24-7. Adesso dobbiamo creare un collegamento simbolico a questa cartella, e chiamarlo linux

Code: Select all

ln -s /usr/src/linux-2.6.24-7 /usr/src/linux
poi entrare dentro il collegamento

Code: Select all

cd linux
ok, adesso siamo pronti per customizzare il nostro kernel. Potete prendere fiato per un pò.:D:D


Configurazione:

per far apparire il menù di configurazione del kernel diamo il comando:

Code: Select all

make xconfig
si aprirà uma finestra piena di menù e opzioni da far quasi paura, ma noi andremo a toccare solo poche cose per far sfrecciare la nostra macchina. Nell'albero di sinistra individuiamo la voce Processor type and features, clicchiamoci e spostiamo lo sguardo verso il menù di destra.
Sotto la voce Processor family cercate il vostro processore o uno corrispondente, io ad esempio com un AMD ATHLON64 X2 ho scelto ATHLON64. Se il vostro processore non è presente nell'elenco allora scegliete quello generico: PentiumPro.

Sempre a destra scendendo ancora, sotto l'albero Preemption model, scegliamo Preemptible Kernel (Low-Latency Desktop) per avere un guadagno in velocità di risposta nelle applicazioni audio/video e multimediali generali.

Scendiamo ancora e spuntiamo la voce Preempt The Big Kernel Lock
assicuriamoci che la voce Timer Frequency sia impostata su 1000Hz

ultima cosa, torniamo a sinistra e cerchiamo l'albero Kernel Hacking, quindi a destra disattiviamo Kernel Debugging e tutti i relativi sottomenù.

Salviamo premendo l'icona del dischetto floppy o da File>Salva .
Ecco fatto abbiamo finito la fase di configurazione.



Compilazione:

La parte difficile è stata superata com successo. Adesso dobbiamo solo dare tre comandi, uno alla volta, aspettando che l'operazione relativa al comando sia stata completata.
I comandi sono i seguenti:

Code: Select all

make

Code: Select all

make modules_install

Code: Select all

make install
NB: quest'ultimo comando va dato da root.

Al termine dell'installazione non ci resta che riavviare e scegliere il nostro 2.6.24-7custom fiammante.

User avatar
Roberto_65
Collaboratore
Collaboratore
Posts: 516
Joined: 6 December 2007, 23:56
OpenMandriva: 2009.1
Kernel: i686 x86_64
Desktop: Gnome Xfce4
Location: Triangolo delle Bermude
Contact:

Re: Compilare il Kernel

Post by Roberto_65 »

Code: Select all

make -j3
Se si ha il dualcore !!!!
Roberto_65
Packager delle MIB-Live
Il creatore delle MIB-Live
L'inventore di MIB-LiveToFlash
Triangolo delle Bermude http://www.sitohd.com/siti/3209

User avatar
Roberto_65
Collaboratore
Collaboratore
Posts: 516
Joined: 6 December 2007, 23:56
OpenMandriva: 2009.1
Kernel: i686 x86_64
Desktop: Gnome Xfce4
Location: Triangolo delle Bermude
Contact:

Re: Compilare il Kernel

Post by Roberto_65 »

Code: Select all

make -j8 CC=distcc
Se si ha il clustering installato e configurato vedi: viewtopic.php?f=21&t=422

Ciao Roberto
Roberto_65
Packager delle MIB-Live
Il creatore delle MIB-Live
L'inventore di MIB-LiveToFlash
Triangolo delle Bermude http://www.sitohd.com/siti/3209

User avatar
SymbianFlo
Utente sostenitore
Utente sostenitore
Posts: 1493
Joined: 7 December 2007, 20:07
OpenMandriva: 2010.1 x86_64
Kernel: 2.6.33.5-nrj-69mib
Desktop: kde4.5.rc1
Location: Pordenone
Contact:

Re: Compilare il Kernel

Post by SymbianFlo »

ma de che ...a robe' ....tutto sto lavoraccio per nulla , a rega' se voleete ricompilarvelo facile facile , vi passo io un script MIO che lo fa per voi .,..si chiama " COMPILA" , si lancia da root e seguite il GUI
:lol: :lol: :lol: :lol: :lol:
TI HO FREGATO .... :twisted:
:D ciao ciao SymbianFlo :D
Image
Linus Torvalds only has to enter a room, and every Windows computer in it segfaults instantly.
http://video.linuxfoundation.org/video/1057

User avatar
supergiro
Utente junior
Utente junior
Posts: 28
Joined: 9 December 2007, 23:04

Re: Compilare il Kernel

Post by supergiro »

ciao scusa volevo chiederti un aiuto cioè quando vado x aprire xmenuconfig la konsolmi da un errore come se nn ci fosse il prog, mi dai un aiuto?
grazie
La mia macchina: Mainboard Asus p5ql-e; Processore, pentium core 2 duo 8400; Scheda video, GeForce 9400gt silent; Ram, 4Gb; OS, mdv 2009.0 i686

User avatar
othoth-tux
Collaboratore
Collaboratore
Posts: 338
Joined: 4 February 2008, 19:55
OpenMandriva: OpenSuse 12.2
Kernel: 3.4.x
Desktop: Gnome3
country: Italy

Re: Compilare il Kernel

Post by othoth-tux »

ciao,
il comando per aprire il menù di configurazione è

Code: Select all

make xconfig
devi darlo da dentro /usr/src/linux
devi prima installare il source del kernel ke vuoi compilarti che se non sbaglio è il 2.6.28.3 :D ,
basta dare in konsole

Code: Select all

urpmi kernel-source-latest
poi entri dentro /usr/src e crei il link simbolico "linux" come spiegato nella guida, e la continui a seguire,
è una procedura semplice ma delicata quindi non andare a toccare niente che non sai :D :D
se hai problemi io sto qua ciauu

User avatar
supergiro
Utente junior
Utente junior
Posts: 28
Joined: 9 December 2007, 23:04

Re: Compilare il Kernel

Post by supergiro »

mi da questo quando gli do make xconfig
[root@localhost linux]# make xconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTCC scripts/basic/hash
CHECK qt
*
* Unable to find the QT3 installation. Please make sure that
* the QT3 development package is correctly installed and
* either install pkg-config or set the QTDIR environment
* variable to the correct location.
*
HOSTCC scripts/kconfig/conf.o
sed < scripts/kconfig/lkc_proto.h > scripts/kconfig/lkc_defs.h 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
HOSTCC scripts/kconfig/kconfig_load.o
HOSTCC scripts/kconfig/kxgettext.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/lex.zconf.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
make[1]: *** No rule to make target `scripts/kconfig/.tmp_qtcheck', needed by `scripts/kconfig/qconf.o'. Stop.
make: *** [xconfig] Error 2
[root@localhost linux]# make xconfig
CHECK qt
*
* Unable to find the QT3 installation. Please make sure that
* the QT3 development package is correctly installed and
* either install pkg-config or set the QTDIR environment
* variable to the correct location.
*
make[1]: *** No rule to make target `scripts/kconfig/.tmp_qtcheck', needed by `scripts/kconfig/qconf.o'. Stop.
make: *** [xconfig] Error 2
La mia macchina: Mainboard Asus p5ql-e; Processore, pentium core 2 duo 8400; Scheda video, GeForce 9400gt silent; Ram, 4Gb; OS, mdv 2009.0 i686

User avatar
othoth-tux
Collaboratore
Collaboratore
Posts: 338
Joined: 4 February 2008, 19:55
OpenMandriva: OpenSuse 12.2
Kernel: 3.4.x
Desktop: Gnome3
country: Italy

Re: Compilare il Kernel

Post by othoth-tux »

dovresti avere sia pkg-config che i pacchetti delle qt già installate, controlla con installa e rimuovi software in caso li installi.
io sto seguendo la procedura con il kernel 2.6.28.2-desktop-69mnb su 2009.0 i686 e sta funzionando.
prova a seguire questo post di Symbianflo viewtopic.php?f=10&t=524 tra i vari comandi c'è COMPILA per il kernel.
ciauu

User avatar
supergiro
Utente junior
Utente junior
Posts: 28
Joined: 9 December 2007, 23:04

Re: Compilare il Kernel

Post by supergiro »

ma è x 86_64?
io ho i686
La mia macchina: Mainboard Asus p5ql-e; Processore, pentium core 2 duo 8400; Scheda video, GeForce 9400gt silent; Ram, 4Gb; OS, mdv 2009.0 i686

User avatar
SymbianFlo
Utente sostenitore
Utente sostenitore
Posts: 1493
Joined: 7 December 2007, 20:07
OpenMandriva: 2010.1 x86_64
Kernel: 2.6.33.5-nrj-69mib
Desktop: kde4.5.rc1
Location: Pordenone
Contact:

Re: Compilare il Kernel

Post by SymbianFlo »

supergiro wrote:ma è x 86_64?
io ho i686

Un consiglio A GRATIS :
Fatte questi esperimenti in una macchina virtuale , sopratutto te supergiro perche ti vedo molto confuso ......
Prima di ricompilarsi un kernel informatevi, leggete ....e poi fatte le prove in virtuale ......
:D ciao ciao SymbianFlo :D
Image
Linus Torvalds only has to enter a room, and every Windows computer in it segfaults instantly.
http://video.linuxfoundation.org/video/1057

User avatar
bat86
Utente junior
Utente junior
Posts: 69
Joined: 22 September 2008, 12:54
OpenMandriva: 2011.0
Kernel: 2.6.38.7
Desktop: KDE 4.6.5
country: ita

Re: Compilare il Kernel

Post by bat86 »

ho provarto a fare uno script per ricompilare i kernel instalalti con rpm, se qualcuno vuole provarlo e/o ha qualche suggerimento critica ben venga. Lo script può essere provato senza effettuare la compilazione commentando la riga 75

Code: Select all

make 2>error_${time}.txt && make modules_install 2>>error_${time}.txt && make install 2>>error_${time}.txt &&

Code: Select all

#!/bin/bash
time=$(date +"%Y-%m-%d")
ver=$(uname -r)
echo "------------------------------"
echo "|Ricompila il kernel Mandriva|"
echo "|          v1.0              |"
echo "|       kernel in uso        |"
echo "${ver}"
echo "------------------------------"
echo -n
echo "Ti verranno fatte delle domande"
echo "quando riportate delle opzioni tra scelte limitate" 
echo "come [xxx|yyyyy] scrivi esattamente una delle scelte possibili"
echo -n
echo "quando invece trovi [es yyyyy] attieniti ad una risposta come da esempio"
echo "in ogni caso usa  [crtl]+[z] per uscire"
echo "devi essere root (su - per mdv >2009.0)"
echo "sei root? [y|n]" && read risp0
case ${risp0} in
y) echo "Cominciamo" ;;
n) echo "esci e loggati come root" && exit 0 ;;
esac
#'Scarica i sorgenti del kernel'
echo "vuoi compilare l'ultimo kernel disponibile [y|n]?" && read risp1
case ${risp1} in
y) su -c "/usr/sbin/urpmi kernel-source-latest" > /dev/null && echo "kernel-source installato" ;;
n) echo "inserisci la versione dei sorgenti del kernel che vuoi scaricare [es 2.6.24.7-2mnb]" && read kver && su -c "/usr/sbin/urpmi kernel-source-${kver}" ;;
esac && cd /
#'Esegue backup dei dati importanti'
echo "Eseguo backup di /boot"
rm -f boot_${time}.tgz > /dev/null && tar -cz boot > boot_${time}.tgz
echo "Eseguo backup di /etc"
rm -f etc_${time}.tgz > /dev/null && tar -cz etc > etc_${time}.tgz
echo "versioni dei sorgenti trovati" && cd /usr/src/
ls | grep linux-
echo "inserisci la versione di kernel che vuoi compilare [es 2.6.28.4-4mnb] tra quelle sopra riportate" && read cus
echo "Eseguo backup di /usr/src/linux-${cus}"
if ls linux-${cus}_${time}.tgz >/dev/null 2>&1; then
rm -f linux-${cus}_${time}.tgz >/dev/null 
else echo 
fi
if ls *linux-${cus} >/dev/null 2>&1; then
cd /usr/src/linux-${cus} && tar -cz * > /usr/src/linux-${cus}_${time}.tgz 
else exit 1
fi
cd /usr/src/linux-${cus}
if ls .config >/dev/null 2>&1; then
echo "Eseguo backup di config" && cp .config .config.save
else
echo "config non trovato, copio config da /boot" && cp /boot/config .config && cp .config .config.save

	if ls .config.save >/dev/null 2>&1 ;then
	echo "eseguito backup di config"
	else
	echo "Controlla la tua installazione" && exit 1
	fi
fi
echo "Eseguo backup di Makefile"
cp Makefile Makefile.save 
#'Iniziano le fasi preparive compilazione'
echo "inserisci il tuo editor preferito [es kwrite,gedit, no vi!]" && read editor
su -c "/usr/bin/${editor} Makefile" > /dev/null
echo "impostazione parametri compilazione" 
echo "vuoi usare xconfig o menuconfig? [xconfig|menuconfig]" && read risp3
case ${risp3} in
menuconfig) make menuconfig ;;
xconfig) make xconfig >/dev/null ;;
esac
echo "inizio compilazione? [y|n]" && read risp2
case ${risp2} in 
y) echo "pronti, VIA!";; 
n) echo "andrà meglio la prossima volta" && exit 0 ;;
esac
#'Esegue compilazione'
make 2>error_${time}.txt && make modules_install 2>>error_${time}.txt && make install 2>>error_${time}.txt && 
echo "Kernel ${cus} ricompilato con successo"
echo -n
exit 0
Image
Image
Image

Post Reply