
Compilare il kernel su ubuntu feisty
settembre 20, 2007Esistono 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.
Pubblicato su Mondo linux, Ubuntu | Contrassegnato da tag feisty, kernel, linux, menuconfig, Ubuntu |
Grazieeeee!!! una guida davvero chiara e comprensibile!!
Continua così!!!
ma poi i .deb li posso eliminare giusto?
si li puoi eliminare anche perchè sono compilati per il tuo hardware specifico. in un’altra macchina probabilmente avresti kernel panic all’avvio.
magari per un noob è necessario commentare alcune righe e spiegare il significato delle stesse… io avrei paura ad eseguire un comando sulla mia distro di cui non sono a conoscenza delle conseguenze 😉
Per il resto, bravo.
Non preoccuparti, non puoi creare danni. L’unico problema potrebbe verificarsi nel caso in cui tu non abbia incluso i moduli corretti, necessari al funzionamento del kernel sul tuo hardware, ma ti basterebbe riavvarlo utilizzando il kernel precedente. Certo, se lo cancelli allora… 🙂
Sei grandeeeeeeee, non avevo mai visto una guida cosi dettagliata
Sei grandeeeeeeee, non avevo mai visto una guida cosi dettagliata
bravissimoooooooo, nn avevo mai visto 1 guida cosi dettagliata.
ciao da luigi
Grazie 😉