24 settembre, 2007

Tip: Disabilitare il bip della console!

A lavoro non ho il mio laptop ma un vecchio desktop che ho riportato a nuova vita con Ubuntu naturalmente ;)

Da un bel po di tempo ero infastidito dal maledetto bip del terminale che veniva emesso ogni volta che un mio dito (uno qualsiasi :) ) andava a premere sul tasto tab.

Oggi mi son deciso a trovare una soluzione e la scrivo qui sul blog, magari sarà utile a qualcuno di voi. Basta usare il comando:

$ xset b off

nel terminale. Per farlo eseguire in modo automatico ogni volta che apriamo una console è consigliabile aggiungere una riga alla fine del file ~/.bashrc con il suddetto comando.

16 settembre, 2007

Come compilare una release candidate del kernel

Ho da qualche giorno installato la gutsy aggiornando la mia perfettamente funzionante feisty e purtroppo il kernel 2.6.22 fornito con la gutsy mi ha dato qualche noia di non poco conto. Per qualche strano motivo, avviando il pc usando questa versione del kernel dopo qualche minuto la macchina si spegne "violentemente" come se venisse a mancare tutto ad un tratto l'alimentazione. Il problema sembra sia causato dalla gestione dell'acpi nel kernel. Infatti passando il paramentro acpi=off al boot, il problema non si pone. Ma disattivare l'acpi significa rinunciare ad alcune importanti funzionalità come ad esempio la gestione dello scaling della frequenza della cpu, funzionalità fondamentale per il mio laptop. In ogni modo ho segnalato il bug su launchpad nella speranza che venga risolto prima della release ufficiale della gutsy.

Comunque tornando all'oggetto del titolo del post, per verificare se il problema è stato risolto nella versione di sviluppo del kernel ho deciso di compilare la versione di sviluppo corrente (nel momento in cui scivo la 2.6.23rc6).

Di cosa ho bisogno?

Prima di iniziare assicurarsi di aver installato i pacchetti bulid-essential, kernel-package e fakeroot. Il primo è necessario alla compilazione vera e propria mentre gli altri due serviranno a renderci la vita un po più semplice. A questo punto occorre scaricare l'ultima versione stabile del kernel e la patch per la versione di sviluppo. Nel mio caso l'ultima versione stabile è la 2.6.22.

N.B.
La patch può essere applicata solo al ramo principale! In pratica non può essere usata ad esempio la versione 2.6.22.6 ma solo la 2.6.22.

La versione corretta da scaricare e sulla quale applicare la patch è in genere linkata a destra della patch con la lettera B.

Quindi procediamo e scarichiamo il file linux-2.6.22.tar.bz2 e la patch cioè il file patch-2.6.23-rc6.bz2

Come procedo per la compilazione?

Prima di tutto occorre estrarre l'archivio con i sorgenti del kernel e applicare la patch. Creiamo una directory nella nostra home che chiameremo tmp e estraiamo i sorgenti del kernel. A questo punto avremo la directory ~/tmp/linux-2.6.22. Decomprimiamo la patch e copiamola all'interno di ~/tmp/linux-2.6.22. Applichiamo la patch con:

patch -p1 < patch-2.6.23-rc6  
A questo punto è fortemente consigliato importare la configurazione del kernel correntemente in uso o dell'ultima versione installata. Per farlo basta copiare il file

cp /boot/config-2.6.22-11-generic ~/tmp/linux-2.6.22/.config
Nel vostro caso la versione potrebbe essere differente.

A questo punto basta usare il comando:

make-kpkg --rootcmd fakeroot kernel_image

Probabilmente nella release candidate del kernel saranno state aggiunte nuove opzioni di configurazione non presenti nel file che abbiamo copiato dalla directory /boot. Per queste nuove opzioni vi verranno poste delle domande. In genere se non si hanno esigenze particolari è conveniente mantenere i valori di default.

Se tutto va a buon fine al termine dell'esecuzione del comando dovreste ritrovarvi un file .deb con il nuovo kernel pronto ad essere installato.

Nel mio caso purtroppo il problema non è stato risolto :( Non mi resta che confidare nei valorosi sviluppatori di Ubuntu.

Buona sperimentazione ;)

P.S.
Dopo aver installato il kernel è necessario generare l'immagine del disco ram iniziale con il
comando:

update-initramfs -c -k 2.6.23-rc6

e quindi aggiornare la voce relativa nel file di configurazione di grub in /boot/grub/menu.lst

In realtà quest'ultima operazione avrebbe dovuto essere automatica ma evidentemente per qualche motivo non ha funzionato.