Cambiare Kernel

Il kernel e' il cuore del sistema operativo linux, contiene tutti i driver necessari per far funzionare le periferiche, e il codice per far funzionare un processore come un vero pc.

Molte volte le nostre periferiche, come modem o scanner, necessiteranno di un kernel piu' aggiornato o al piu' modificato. Innanzitutto per sapere che kernel si possiede basta digitare:

 $ uname -a
 Linux linux 2.4.24 #8 SMP dom mar 21 11:40:42 CET 2004 i686 unknown

Come vedete il comando ha dato come output che il mio computer usa il kernel 2.4.24.

Cambiare il kernel e' molto semplice ma i comandi da eseguire sono diversi se si utilizza un kernel della serie 2.4.x (ad esempio 2.4.18), oppure un kernel della serie 2.6.x (ad es. 2.6.9).

Il primo passo e' quello di riuscire a procurarsi il kernel piu' aggiornato, sia le riviste linux che sul sito http://www.kernel.org. Su altri siti potete trovare dei kernel con delle modifiche inserite, ma la cosa migliore se non si e' degli esperti e' affidarsi ad un kernel puro (o vanilla come dicono gli americani).

Fino al kernel 2.4.x

Una volta ottenuto il kernel, va scompattato in una cartella qualunque, dopo averlo scompattato, bisogna pulirlo da eventuali file che potrebbero non c'entrare nulla ma essere presenti nel pacchetto per svariati motivi (debug, controllo, errore, vecchie configurazioni, ecc.), per far questo digitate:

 $ make mrproper

Il comando make mrproper non andra' digitato piu', anche se ricompileremo piu' volte lo stesso kernel.

Il prossimo passo riguarda la configurazione del kernel, si puo fare in svariati modi (config, menuconfig, xconfig), per fare questo io consiglio di digitare

 $ make xconfig

Nel menu che apparira' bisogna settare quale e' il nostro processore, e per quali periferiche deve essere predisposto, quindi cercate di scoprire con quali pezzi e' composto il vostro computer (processore, scheda video, scheda audio, altri tipi di schede...), per ogni voce potete scegliere o di caricarla direttamente nel kernel o di richiamarla durante l'uso del computer rendendola un modulo caricabile. Sinceramente consiglio di caricare tutto quello che serve direttamente nel kernel, richiamarlo dopo e' solo un inutile spreco di tempo. Una volta fatto cio' potete salvare, uscire dal menu' e lanciare:

 $ make dep

Con questo comando appena digitato, verranno preparati i file da compilare e quelli da tralasciare, poi digitate

 $ make bzImage

Ora se tutto e' andato bene, troverete dentro la cartella arch/i386/boot/ il file bzImage che e' il kernel compilato e pronto per essere usato. Per avviare il sistema operativo con il nuovo kernel dovete leggere la documentazione del boot loader che usate. Il file System.map va messo sempre nella stessa cartella del kernel dove viene utilizzato.

Per esempio con lilo mote volte bisogna copiare System.map e bzImage in /boot/, chiamando bzImage vmlinuz, e poi lanciare da root il comando lilo.

 # lilo

Se qualcosa non va', tipo errori di compilazione o altro, ricominciate da make xconfig e provate a cambiare le voci che danno errori, rendendoli moduli o eliminandoli.

Se avete reso qualche voce un modulo, dovete ancora eseguire due comandi prima di poter utilizzare il nuovo kernel. Il primo e':

 $ make modules

Il secondo va lanciato da root (ed e' l'unico che vada lanciato da root) ed e':

 # make modules_install

Complimenti, ora sapete tutto su come si cambia il proprio kernel.

Se volete cambiare la risoluzione dello schermo terminale, quello all'avvio con le scritte DONE verdi, se avete un kernel con inferiore o uguale al 2.4.19 vi basta mettere come opzione al bootloader vga=xyz dove xyz e' un numero di 3 cifre tipo 791 oppure 777 oppure vedete un po' voi sulla guida del boot loader. Se invece avete un kernel superiore del 2.4.19, allora dovete usare l'opzione video=radeon:800x600-60 per esempio, cioe' video seguito dal tipo di scheda (se non sapete qual e' mettetici vga), dalla risoluzione e dalla frequenza verticale di aggiornamento del monitor. Per sapere quali sono le modalita' disponibili del vostro sistema vi basta leggere il file /etc/fb.modes, chiaro?

Dal kernel 2.6.x in poi (anche 3.x e 4.x)

Diventate root (usate sux, perche' probabilmente vi fara' comodo la grafica), scompattate il kernel in /usr/src/. Digitate, per pulire il kernel:

 # make mrproper

Poi per configurare il kernel potete scegliere tra:

  • make menuconfig : Se volete usare il terminale e le ncurses.
  • make xconfig : Se volete la grafica attraverso le librerie QT.
  • make gconfig :Se volete la grafica attraverso le librerie GTK.

.

oppure potete semplicente la confgurazione giĆ  presente

 $ cp /boot/config-$(uname -r) .config

digitate cio' che preferite.

 # make xconfing

Una volta scelte tutte le opzioni salvate e uscite.

Ora digitate:

 # make

Se avete anche messo qualche opzione come modulo allora digitate:

 # make modules_install

Ora se tutto e' andato bene, troverete dentro la cartella arch/i386/boot/ se avete un PC a 32bit, mentre in arch/x86_64/boot se avete un PC a 64 bit, il file bzImage che e' il kernel compilato e pronto per essere usato. Per avviare il sistema operativo con il nuovo kernel dovete leggere la documentazione del boot loader che usate. Il file System.map va messo sempre nella stessa cartella del kernel dove viene utilizzato.

Per esempio con lilo mote volte bisogna copiare System.map e bzImage in /boot/, chiamando bzImage vmlinuz, e poi lanciare da root il comando lilo. mentre se usate Grub leggete qui oppure...

le ultime versioni permettono anche di lanciare

 # make install

e aggiornera' grub2 automaticamente.

N.B.: il vecchio make modules non si usa piu'.