Posts Tagged ‘kernel’

h1

Compilare il kernel su ubuntu feisty

settembre 20, 2007

Esistono diversi modi per ricompilare un kernel. La procedura descritta di seguito illustra come ricompilare un kernel su ubuntu feisty 7.04 in pochi passi. Verrà usato il kernel 2.6.22 ma è possibile usare qualsiasi altra versione del kernel con eventuale patch. Inoltre consiglio di non eseguire nessuna operazione da utente root; per questo motivo aggiungeremo l’utente che vogliamo usare al gruppo src.

Per prima cosa aggiornate la lista dei pacchetti e installate i pacchetti necessari alla compilazione.

$ sudo apt-get update

$ sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot wget bzip2

Al posto di tuonomeutente aggiungete l’utente che volete usare per la compilazione. Quest’ultimo sarà aggiunto al gruppo src.

$ sudo adduser tuonomeutente src

Effettuate un logout e rieffettuate il login. Fino ad allora non farete effettivamente parte del gruppo src. Dopodicchè controllate con il comando groups se fate parte del gruppo.

Spostatevi nella directory /usr/src e scaricate l’archivio del nuovo kernel; in questo caso useremo il 2.6.22.

$ cd /usr/src

$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2

Scompattate l’archivio del kernel e create un link simbolico alla nuova cartella.

$ tar xjf linux-2.6.22.tar.bz2

$ ln -s linux-2.6.22 linux

Spostatevi nella directory dei sorgenti e fate una copia della configurazione del kernel. Quest’ultima tornerà utile se non vogliamo rischiare di commettere errori ed avere kernel panic al riavvio.

$ cd /usr/src/linux; cp /boot/config-`uname -r` .config

Configurate il kernel con il tool menuconfig. Questo è il passo più delicato. Intanto caricate il file di configurazione salvato in precedenza selezionando la voce “Load an Alternate Configuration File” e scegliendo “.config”. Se è la prima volta che ricompilate il kernel, sarebbe meglio esaminare con attenzione tutti i moduli con i relativi help, includendo soltanto i moduli strettamente necessari per il vostro hardware; otterrete così un kernel più snello e di conseguenza più performante.

$ make menuconfig

Dopo avere scelto i moduli da includere salvate la configurazione e uscite da menuconfig. Prima di procedere con la compilazione pulite i sorgenti con il comando seguente.

$ make-kpkg clean

Adesso iniziamo la compilazione. Questo processo potrebbe impiegare molto tempo, a seconda del vostro hardware e del numero di moduli inclusi in fase di configurazione. Il comando fakeroot serve a simulare un ambiente root.

$ fakeroot make-kpkg –initrd –append-to-version=-custom kernel_image kernel_headers

Da sottolineare che dopo “–append-to-version=” è possibile scrivere qualsiasi stringa che aiuti ad identificare il nuovo kernel ma deve iniziare sempre con un meno (-) e non deve contenere spazi bianchi.

Esempio: –append-to-version=-mio_kernel

Tornate alla directory /usr/src e controllate se sono stati generati i due pacchetti .deb.

$ cd /usr/src; ls -l

Passate a root, installate i pacchetti generati dalla compilazione e riavviate il sistema

$ su

# dpkg -i linux-image-2.6.22-custom_2.6.22-custom-10.00.Custom_i386.deb

# dpkg -i linux-headers-2.6.22-custom_2.6.22-custom-10.00.Custom_i386.deb

# reboot

Il vostro kernel verrà visto automaticamente da grub. In caso contrario vi bastarà dare il seguente comando

$ sudo update-grub

Al riavvio verificate la versione del kernel

$ uname -r

Se tutto è andato a buon fine dovreste avere un output simile a questo: 2.6.22-mio_kernel

Ho scritto questa miniguida perchè in rete c’è tanta di quella documentazione da far confondere le idee, soprattutto per chi usa il pinguino da poco. Spero di essere stato di aiuto a qualcuno. Ciao e alla prossima.

 

 

Annunci