UBUNTU 10.04: COMPILARE KERNEL 3.3.7

Transcript

UBUNTU 10.04: COMPILARE KERNEL 3.3.7
UBUNTU 10.04: COMPILARE KERNEL 3.3.7
La procedura è sempre la stessa.
Apriamo il terminale: portiamoci in /usr/src e prendiamoci i diritti necessari alle prossime
operazioni
1 cd /usr/src/
2 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:
1
1tar -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:
1bzcat 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:
1bzcat NOME_DELLA_PATCH.bz2 | patch -p1
Ora recuperiamo (se esistente) un file di configurazione del vecchio kernel:
Per controllare tra quelli disponibili:
1ls /boot/config-*
quindi facciamo una copia di quello vecchio prescelto e lo mettiamo nella dir del kernel
scompattato:
1cp /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:
1 cd ..
2 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:
1 cd linux
2 make oldconfig
Ora possiamo anche personalizzare le impostazioni del nuovo kernel:
1make 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:
1lshw -html > myhw.html
Le solite configurazioni raccomandate sono:
«General Setup»:
scegliere in "Kernel Compression mode" > Gzip
1
attivare "Support for paging of anonymous memory
2
3 (swap)"
4
attivare "Support for prefetching swapped
memory"
«Processor type and features»:
«Processor family» scegliere il processore corretto.
1
attivare "Preemption Model-> Voluntary Kernel
2
3 Preemption (Desktop)"
«High Memory Support» scegliere:
4
5
"off" (meno di 1 GB di RAM disponibili)
6
"1GB Low Memory Support" (1GB di RAM
7 disponibile)
8
"4GB" (più di 1GB di RAM )
«Timer frequency»: 1000 Hz
1 «Block layer -> IO Schedulers»
2
solo «CFQ I/O scheduler»
1 «Kernel hacking»
deselezionare «Kernel debugging».
2
1 «Device Drivers -> Character devices»
selezionare «Virtual terminal»
2
Una volta configurato a dovere, salvare ed uscire.
Prima di lanciare la compilazione vera e propria, ripuliamo il sistema da eventuali altre
compilazioni precedenti:
1make-kpkg --rootcmd fakeroot clean
Se siamo in dotazione di un sistema multiprocessore, decidiamo di utilizzare compilazioni parallele:
1export 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
1
1 cd ..
2 dpkg -i *.deb
Terminata l’installazione dei pacchetti, aggiorniamo l’initramfs:
1update-initramfs -c -k 3.3.7
e aggiungiamo la rispettiva voce nel config del GRUB:
1gedit /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 {
1
recordfail
2
insmod ext2
3
set root='(hd0,1)'
4
search --no-floppy --fs-uuid --set
5
4e85fa69-f9bd-4c88-ad81-580e5f42f799
6
e come ultima stringa aggiungiamo (prima della ‘}’)
1initrd /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:
1uname -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).
VirtualBox can't boot from the file 32bit ISO because PAE is not enabled by default
Se ottieni questo messaggio nel tentativo di utilizzare Ubuntu 12.04 su VirtualBox, è perchè la
versione di Precise utilizza di default il kernel PAE.
Per far sì che VB non si pianti al boot della iso, andare nelle impostazioni di sistema in Processore
ed abilitare “PAE/NX”.
Il tutto partirà senza problemi.