Home > Linux, Ubuntu > Ubuntu 10.04: Compilare Kernel 3.3.7

Ubuntu 10.04: Compilare Kernel 3.3.7

31 Maggio 2012

La procedura è sempre la stessa.

Apriamo il terminale: portiamoci in /usr/src e prendiamoci i diritti necessari alle prossime operazioni

cd /usr/src/
sudo -s

a questo punto scarichiamo la versione del kernel in oggetto con il comando:

wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.3.7.tar.bz2

Adesso dobbiamo scompattare l’archivio:

tar -xvjf linux-3.3.7.tar.bz2

una volta scompattato l’archivio, se necessario, sarà possibilie scaricare le patch (Se rilasciate ovviamente).
Dopo averle spostate all’interno della dir del kernel, si possono installare con:

bzcat PATCH.bz2 | patch -p1 --dry-run

Questo comando simula l’installazione della patch.
se non ci saranno errori, provvederemo all’applicazione della patch vera e propria, semplicemente eliminando dal comando precedente il parametro –dry-run:

bzcat NOME_DELLA_PATCH.bz2 | patch -p1

Ora recuperiamo (se esistente) un file di configurazione del vecchio kernel:
Per controllare tra quelli disponibili:

ls /boot/config-*

quindi facciamo una copia di quello vecchio prescelto e lo mettiamo nella dir del kernel scompattato:

cp /boot/config-2.6.32-28-generic linux-3.3.7/.config

Ora, dopo essere usciti dalla dir del kernel, creiamo un link simbolico della stessa:

cd ..
ln -s linux-3.3.7 linux

Entriamo nella dir (link) ed allineiamo le configurazioni rispondendo (sempre come suggerito se non con cognizione di causa assoluta) a tutte le domande inerenti le novità del kernel nuovo:

cd linux
make oldconfig

Ora possiamo anche personalizzare le impostazioni del nuovo kernel:

make menuconfig

Nota: In caso di errore installare il pacchetto libncurses5-dev

Nel caso si volessero informazioni sul proprio hardware disponibile, è possibile generare un report tramite lshw:

lshw -html > myhw.html

Le solite configurazioni raccomandate sono:

«General Setup»:
	scegliere in "Kernel Compression mode" > Gzip
        attivare "Support for paging of anonymous memory (swap)"
        attivare "Support for prefetching swapped memory" 


«Processor type and features»:
	«Processor family» scegliere il processore corretto.
        	attivare "Preemption Model-> Voluntary Kernel Preemption (Desktop)"
	«High Memory Support» scegliere:
		"off" (meno di 1 GB di RAM disponibili)
		"1GB Low Memory Support" (1GB di RAM disponibile)
		"4GB" (più di 1GB di RAM )
        «Timer frequency»: 1000 Hz 




«Block layer -> IO Schedulers»
        solo «CFQ I/O scheduler»

«Kernel hacking»
        deselezionare «Kernel debugging».

«Device Drivers -> Character devices»
        selezionare «Virtual terminal»


Una volta configurato a dovere, salvare ed uscire.
Prima di lanciare la compilazione vera e propria, ripuliamo il sistema da eventuali altre compilazioni precedenti:

make-kpkg --rootcmd fakeroot clean

Se siamo in dotazione di un sistema multiprocessore, decidiamo di utilizzare compilazioni parallele:

export CONCURRENCY_LEVEL=2

Ora lanciamo l’eterna compilazione:

make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers modules_image

Dopo aver fatto la spesa e tutte le commissioni possibili, potete tornare al termianale ed installare i nuovi pacchetti del kernel

cd ..
dpkg -i *.deb

Terminata l’installazione dei pacchetti, aggiorniamo l’initramfs:

update-initramfs -c -k 3.3.7

e aggiungiamo la rispettiva voce nel config del GRUB:

gedit /boot/grub/grub.cfg

ci portiamo nella sezione:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, con Linux 3.3.7' --class ubuntu --class gnu-linux --class gnu --class os {
	recordfail
	insmod ext2
	set root='(hd0,1)'
	search --no-floppy --fs-uuid --set 4e85fa69-f9bd-4c88-ad81-580e5f42f799
	linux	/boot/vmlinuz-3.3.7 root=UUID=4e85fa69-f9bd-4c88-ad81-580e5f42f799 ro   quiet splash nomodeset video=uvesafb:mode_option=1280x800-24,mtrr=3,scroll=ywrap
}

e come ultima stringa aggiungiamo (prima della ‘}’)

	initrd	/boot/initrd.img-3.3.7

salviamo e riavviamo.

A riavvio avvenuto, scegliamo nel grub il nostro fiammante kernel 3.3.7.
Possiamo controllare l’avvenuta installazione del nuovo kernel, anche da terminale, digitando:

uname -r

Alcune spiegazioni sui target del comando di compilazione del kernel:

“–initrd” (utilizzato nel comando di compilazione del kernel) crea un file immagine di una partizione speciale (initial ram disk).
All’avvio del sistema viene caricata nella ram, montata temporaneamente come directory root con tutti i moduli necessari all’avvio del sistema.
Poi verrà sostituita dalla partizione contenente il sistema vero e proprio.
L’immagine initrd è usata nei kernel ufficiali (pieni di chipset, file system ecc..) e anche per caricare il bootsplash.

“kernel_image” compila il kernel e tutti i moduli scelti nella configurazione, e crea un pacchetto .deb.
“kernel_headers” crea il pacchetto .deb con tutti i file includes (.h) necessari in futuro alla compilazione di moduli esterni.
“modules_image” compila i sorgenti dei moduli esterni scaricati a parte e posizionati in /usr/src/modules (es i driver video proprietari).

Categorie:Linux, Ubuntu Tag:
I commenti sono chiusi.