sabato 12 marzo 2011

ricompilare il kernel : for dummies


Nonostante il nome e nonostante io  provi a spiegare le operazioni passo passo questa guida è consigliata ad un utente smaliziato o aspirante paraculo.Prima di tutto sfatiamo il mito , ricompilare il kernel adattandolo alla propria macchina è una buona idea , un kernel più piccolo sarà anche caricato più velocemente al boot, tuttavia i moderni kernel generici danno ottime prestazioni e ricompilare il kernel non darà chissà quali vantaggi in termini  prestazionali.Gli utenti Apple ci marciano molto su questo falso mito che phoronix ha sfatato ,confrontando su un apple, un ubuntu generico e OS X preinstallato ,ubuntu molto spesso è più veloce.......(fonte) .
Per ricompilare il kernel linux dobbiamo prima di tutto procurarci ciò che ci servirà , prima di tutto i sorgenti dell'ultimo kernel stabile scaricabili da www.kernel.org ,e oltre questo se state usando una debian scarichiamo il pacchetto kernel-package con il comando 
                                            sudo apt-get install kernel-package

 perfetto ora copiamo il kernel, che abbiamo appena scaricato, nella cartella /usr/src con il comando cp nel mio caso dalla cartella "scaricati" a quella /usr/src e la sintassi del comando è questa :
                              sudo cp /holocube/Scaricati/linux-2.6.38-rc8.tar.bz2 /usr/src
se volete lo potete spostare direttamente dal desktop ma dovrete aprire la cartella /usr/src come root .Ora scompattiamo il pacchetto possiamo farlo anche in questo caso via grafica oppure testuale con il comando :
                                            sudo tar xvfj linux-2.6.38-rc8.tar.bz2  
Quindi spostiamoci nella cartella appena creata nell esempio sarà linux-2.6.38-rc8  (porta quindi il nome del kernel...capitan ovvio) .A questo punto dovete fare una bella cosa ossia attaccare al computer tutti i device che utilizzate , questo perchè nelle ultime versioni dei sorgenti è stato aggiunto localmodconfig che scansiona automaticamente i moduli caricati , quelli non rilevati saranno rimossi,in questo modo verrà creato un kernel più leggero e perfettamente funzionante .Lanciamo nella sopracitata cartella il comando

                                                                make localmodconfig

saranno poste comunque delle domande che possono riguardardare videoediting , touchscreen touchpad joystick , debug e molto altro cercate di rispondere bene ma se avete dubbi su cosa vi stia chiedendo premete semplicemente invio tranquilli tra un pò rivedremo bene il tutto.

Adesso ,sempre restando nella cartella dei sorgenti lanciamo il comando:
                                        make xconfig (se utilizziamo kde)
                                        make gconfig  (se si usa gnome o xfce)
Apparirà un interfaccia come questa:

se state usando kde ed esce un messaggio di questo tipo :

 CHECK   qt
* Unable to find the QT4 tool qmake. Trying to use QT3
*
* Unable to find any QT installation. Please make sure that
* the QT4 or QT3 development package is correctly installed and
* either qmake can be found or install pkg-config or set
* the QTDIR environment variable to the correct location.
*
Allora dovete installare qmake e qt3-dev-tools se volete ad operazione finita potrete eliminarli.

Adesso vi ritroverete con un interfaccia grafica in cui sono indicati tutte le caratteristiche del kernel bene vediamo un pò ....molte voci sembrano arabo........certo un pò è l'hardwere che in se è complesso un pò sono gli informatici che come tutti i professionisti sulla faccia della terra (quale che sia la professione) hanno un gergo tecnico, come fare?
Un aiuto a capire cosa c'è scritto e cosa  realmente ci serve dopo la prima scrematura ci viene da questo sito :
                                              http://kmuto.jp/debian/hcl/

bene la prima cosa che attirerà la vostra attenzione è un riquadro con sotto due pulsanti ed è quello che ci interessa.Lasciamo aperta la pagina web e contemporaneamente , tenendo attaccati al computer tutti i device che usiamo solitamente , apriamo un'altra console e lanciamo il comando
                                               lspci -n
ora quello che uscirà lo dovrete copiare e incollare nel riquadro come in figura:


Quindi premiamo su cerca e ci verrà mostrata una pagina in cui appare un elenco di tutto il nostro hardwere così come viene identificato dal kernel e questo ci aiuterà a districarci tra le mille voci :) . A questo punto una precisazione conviene caricare i moduli della macchina come statici , questo consente una maggiore reattività da parte del kernel , se usate KDE il simbolo di caricamento statico è la linguetta mentre quello dinamico è il puntino nero.Ritorniamo sull'interfaccia di configurazione del kernel e cerchiamo le varie voci togliendo quelle che si riferisco ad hardwere che non usiamo , attenzione a non lasciarvi prendere la mano , togliendo cose utili potreste causare un kernel panic , se questo dovesse avvenire tramite grub ritornate sul vecchio kernel funzionante e riprovate.Ad ogni modo vediamo in generale alcune voci insieme , un ulteriore aiuto ci viene da questo sito :
                         http://www.slacky.eu/wikislack/index.php?title=Kernel_Menuconfig

Massimo rispetto per chi usa slack anche se ora è più semplice che pria comunque ,da qui è possibile ricavare una descrizionwe in italiano con consigli sulle singole voci , non è aggiornatissima ma è ancora valida .Ora tocca a voi e a tutte le informazioni raccolte
qualche consiglio........hmmm vediamo , togliamo tutte le voci di debugging .Per ottenere il meglio dal processore , andimo alla voce ---> processor type and features ----->processor family e scegliamo l'architettura della nostra cpu
come nella figura e sempre tenendoci su processor type and features cerchiamo timer frequency e selezioniamo 1000 HZ per un uso desktop

Per quanto riguarda la voce graphic support cercate i moduli che si riferiscono alla vostra scheda video e caricateli come dinamici non statici altrimenti non partirà X (alemno con Nvidia).
La voce paravirtualized può essere disabilitata se non si usa la virtualizzazione.
Sulla colonna di sinistra se non sono già state tolte dalla prima fase automatica eliminiamo
in Power manager --battery e altro se non stiamo usando dei dispositivi portatili
Amateur radio support --se non state usanndo il computer per programmi radio
IrDA                           ---per porte infrarossi
bluetooth                     --se non lo usate toglietelo
wimax                         -- nuova teconologia di comunicazione forse già superata dall'LTE
machintosh device driver --togliamolo se non stiamo usando questo tipo di macchina
in Network device potrete togliere ISDN se non usate questo tipo di connessione

se non si usa la cattura video eliminiamo da multimedia support --remote controller e --videocapture adapters
                                                                                   --radio adapters se non usaimo supporti di questo tipo

In file system mettete come staticoil fs che intendete usare e eliminate i fs inutili lasciate fuse (può servire)
e alla voce dos/fat/nt se usate anche windows lasciate ntfs lasciamo abilitata la voce VFAT perchè questo filesystem è usatyo da molte pennetteUSB.

kernel hacking --potete disabilitarlo
virtualization --togliamolo se non usiamo la virtualizzazione
Appena avete finite andate su file (in alto a sinistra )--save e quindi quit.


e ora compiliamo sempre nella cartella /usr/src/linuxX.X.X

                                                  make-kpkg clean

CONCURRENCY_LEVEL=X deve seere modificato per il numero di core presenti ,su un pc pentium o single core lanciamo:

CONCURRENCY_LEVEL=1 sudo fakeroot make-kpkg --append-to-version=-custom --initrd kernel_image kernel_headers

per un computer quadcore lanciamo il comando

CONCURRENCY_LEVEL=4 sudo fakeroot make-kpkg --append-to-version=-custom --initrd kernel_image kernel_headers

ora andiamo nella cartella /usr/src e troveremo due file.deb bene , installiamo prima header e poi image

                                            sudo dpkg -i linux-headers-2.6.X.....
                                            sudo dpkg -i linux-image-2.6.X....
Quindi riavviamo e nella schermata di grub scegliamo il nuovo kernel se tutto è andato bene non avremmo messaggi di errore , altrimenti :) leggete di cosa si lamenta il kernel e riavviate con una vecchia configurazione del kernel funzionante.
Ho provato con questa guida a toccare i punti salienti di questa complessa operazone in rete ci sono moltissime guide anche molto buone io vi consiglio:

vedi anche :

letture consigliate :


3 commenti:

Anonimo ha detto...

Buona guida ma manca qualche comando tipo un " cd /usr/src/ " tra i comandi sudo cp e sudo tar...apparte questo...very good...ciao

TOM ha detto...

ciao! qualcuno saprebbe dirmi perchè appare questo??

tom@ubuntu:/usr/src/linux-2.6.38.2$ make localmodconfig
HOSTCC scripts/basic/fixdep
scripts/basic/fixdep.c:432: fatal error: opening dependency file scripts/basic/.fixdep.d: Permission denied
compilation terminated.
make[1]: *** [scripts/basic/fixdep] Error 1
make: *** [scripts_basic] Error 2

grazie!!

Antonio ha detto...

@TOM
molto semplicemente perchè devi essere root
lancia
sudo make localmodconfig

e passa la paura