Visualizzazione post con etichetta dual. Mostra tutti i post
Visualizzazione post con etichetta dual. Mostra tutti i post

sabato 14 novembre 2009

Ubuntu: personalizzare il kernel

Verifichiamo la release correntemente installata con il comando
uname -r

sul mio sistema l'output del comando e'
2.6.31.4-custom

ma ovviamente puo' variare su ogni sistema, continueremo ad usare questo come esempio per questo post.
Installiamo ora i sorgenti del kernel (ricordatevi di cambiare numero di versione se necessario)
sudo apt-get install linux-source-2.6.31 kernel-package libncurses5-dev fakeroot

I sorgenti vengono installati (come file tar compresso) nella directory /usr/src
D'ora in poi lavoreremo con credenziali di amministratore, lanciamo quindi il comando
sudo -s

Ora ci spostiamo nella directory contenente il kernel e lo scompattiamo (e' necessaria l'utility bunzip2 contenuta nel pacchetto bzip2):
cd /usr/src
bunzip2 linux-source-2.6.31.tar.bz2
tar xvf linux-source-2.6.31.tar
ln -s linux-source-2.6.31 linux

Facciamo una copia della configurazione del kernel in esecuzione per velocizzare il processo di configurazione del nuovo kernel (attenzione al carattere ` , non e' un apice singolo, bensi' un apice inverso che sulla tastiera italiana si ottiene con AltGr+' e corrisponde al codice ASCII 96):
cp /boot/config-`uname -r` /usr/src/linux/.config

Lanciamo l'utility che ci consente di personalizzare (o customizzare) il vostro kernel:
cd /usr/src/linux
make menuconfig

Prima di tutto scendete in fondo al menu e selezionate la voce
Load an Alternate Configuration File

seguite le istruzioni per caricare il file .config (basta premere INVIO)
Potete quindi cominciare a configurare il vostro kernel abilitando o disabilitando funzioni o moduli. Quando avete finito selezionate la voce
Exit

e salvate la configurazione quando richiesto.
Eseguiamo un make clean per verificare che tutto sia a posto:
make-kpkg clean

Lanciamo finalmente la compilazione:
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

ATTENZIONE!!! Se avete un dual core, un quad core o un sistema multiprocessore, potete ottimizzare la compilazione utilizzando la variabile di ambiente CONCURRENCY_LEVEL settata al doppio del numero dei processori o dei core.
Per sapere quanti processori/core ci sono sul nostro sistema possiamo lanciare il comando:
grep -c '^processor' /proc/cpuinfo

nel mio caso (dual core) ottengo un 2 quindi devo settare la variabile CONCURRENCY_LEVEL a 4.
Rivediamo il comando di compilazione del kernel alla luce di quanto appena detto:
CONCURRENCY_LEVEL=4 fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Questo processo genera due file .deb nella directory /usr/src (al posto degli asterischi troverete il numero di versione del kernel compilato):
linux-image*****.deb
linux-headers*****.deb

potete installare entrambi i pacchetti con il comando (torno al mio esempio):
dpkg -i linux-image-2.6.31.4-custom_2.6.31.4-custom-10.00.Custom_amd64.deb
dpkg -i linux-headers-2.6.31.4-custom_2.6.31.4-custom-10.00.Custom_amd64.deb

ATTENZIONE!!!

Quello appena installato viene configurato dal sistema come il kernel di default, se con questo la macchina non partisse dovete riavviare e premere ESC all'apparire di GRUB per poter selezionare il kernel precedente.

lunedì 14 gennaio 2008

Swap per dualboot di piu' distribuzioni Linux


Nel mio precedente articolo "Resume da suspend bloccato: colpa dello swap" avevo accennato al fatto che l'installazione di debian dopo quella di Ubuntu aveva modificato la partizione di swap impedendo al sistema un corretto resume dallo stato di suspend"

Ebbene non e' solo la fase di installazione a causare questo problema che quindi si e' riproposto.

Il consiglio e' quindi, in caso di piu' sistemi Linux installati sulla stessa macchina, di prevedere partizioni di swap separate, per consentire la corretta esecuzione del ciclo suspend/resume in tutti i sistemi installati.