12 dicembre, 2007

Bash: Come richiedere una password senza mostrarla sul terminale

In bash per richiedere l'input dell'utente si usa la funzione read. Ad esempio:

read -p "Inserisci il nome utente:" username

L'utente batte sulla tastiera il suo nome utente che verrà visualizzato a video e quando premerà il tasto invio la stringa verrà assegnata alla variabile shell $username. Cosa succede se vogliamo però richiedere una password? Di certo non vogliamo che questa venga visualizzata sul terminale. In questo caso è possibile usare il comando stty in questo modo

stty -echo #disabilitiamo l'output sul terminale
read -p "Inserisci la password:" password
stty echo #riabilitiamo l'output sul terminale

14 novembre, 2007

Guitar Rig perfettamente funzionante su linux! E' possibile?

Sono un linuxaro convinto e lo uso praticamente per tutto. Una cosa ancora mi lega al dual boot con windows: i software audio! In questi giorni però ho fatto un grande passo avanti per colmare questa lacuna. Grazie a wine e a wineasio una estensione per wine che ho scoperto da poco, uno dei software ai quali tengo di più, gira perfettamente sulla mia Ubuntu Gutsy. Ho deciso quindi di postare un breve tutorial per mostrare come ottenere l'ambito risultato.
I passi da seguire sono i seguenti:

  1. Installare il software necessario alla compilazione di wineasio
  2. Scaricare e compilare wineasio
  3. Configurare wine
  4. Installare Guitar Rig
  5. Suonare con la bava alla bocca godendo come un porco nel vedere il Guitar Rig sulla nostra Ubuntu box
  6. Ripetere periodicamente il passo 5 :)
Per compilare wineasio abbiamo bisogno dei pacchetti di sviluppo di wine e di jack che sono rispettivamente, wine-dev e libjack-dev. Dopo aver installato questi pacchetti preleviamo l'ultima versione dei sorgenti di wineasio da http://people.jacklab.net/edogawa/files/wineasio/
Estraiamo i pacchetti in una directory temporanea a digitiamo il comando make. Se la compilazione non da errori possiamo installare il pacchetto con il comando:
sudo make install
Ora dobbiamo configurare wine in modo che utilizzi i driver corretti per l'audio. Prima di tutto eseguire il comando:
regsvr32 wineasio.dll

Lanciamo il comando winecfg e impostiamo i parametri per l'audio in questo modo:


Bisogna selezionare il driver jack e quello alsa. Ora avviamo jack. Quindi non ci rimane che installare il Guitar Rig e impostare come driver audio wineasio. Per ottenere migliori prestazioni è conveniente installare il kernel realtime (linux-image-rt in Gutsy).

03 novembre, 2007

Tip: vim e indentazione del codice python

Spesso il codice python che troviamo in rete è indentato usando 4 spazi piuttosto che ad esempio un carattere di tabulazione. Io generalmente preferisco la tabulazione agli spazi. Convertire dall'una all'altra indentazione è in realtà piuttosto semplice, così semplice che ci ho pensato davvero tardi ouch ;)
Basta infatti una semplice sostituzione con vim:


:%s/    /\t/g


Ecco, tutto qui :)

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.

17 luglio, 2007

Lode a Mark

Di solito non sono uno a cui piace idolatrare e l'ho fatto davvero pochissime volte ma in questo caso una persona merita tutta la mia ammirazione: Mark Shuttleworth.

Quest'uomo infatti non solo ha creato una delle migliori distribuzioni libere in circolazione che ha conquistato (e sta conquistando) il favore di un numero sempre crescente di utenti, ma sembra essere l'unico personaggio di rilievo del mondo open source in grado di fare sempre le mosse giuste per diffondere "di violenza" il software libero. Questo senza nulla togliere agli altri grandi nomi che hanno dato notevoli contributi allo sviluppo e alla diffusione dell'etica e della filosofia libera, ma l'approccio di Mark si sta rivelando decisamente più vincente.

A volte le sue scelte sono state molto criticate (come quella di includere i drivers proprietari in Ubuntu) ma io ho sempre creduto nella sua buona fede e nelle sue idee lungimiranti.

Nascono così progetti importanti come quello di Dell, Gobuntu e il Laptop Libero che vogliono quasi intimare alle varie aziende: "Si ubuntu usa i drivers proprietari ma solo per non fare un torto ai suoi utenti. State attente perché stiamo lavorando al modo di boicottare i vostri prodotti chiusi!"

Le guerre si combattono con le politiche aggressive (per quanto sia possibile naturalmente) e non con idee timide e poco flessibili.

Forza Mark, hai tutto il mio appoggio!

21 giugno, 2007

Tip: Bash, no alla history!

La shell bash mantiene nella nostra home un file chiamato .bash_history nel quale memorizza gli ultimi comandi digitati. La history può risultare molto comoda in alcuni casi ma può essere sconveniente e mantenere informazioni sulla nostra privacy in altre.

Esempio: l'utente tizio ha un account shell su un sistema remoto e non vuole che nessuno (neppure l'amministratore) venga a conoscenza dei comandi che ha eseguito su quel sistema (consideriamo l'utente in buona fede :) ). Ma i comandi sono memorizzati tutti nel file dalla history!

Per fortuna bash permette di impostare il numero dei comandi mantenuti nella history. Per farlo basta impostare la varibile d'ambiente HISTSIZE. Nel nostro caso (per eliminare proprio la history) basta impostare la HISTSIZE a zero.

11 giugno, 2007

VirtualBox, la virtualizzazione a portata di tutti?

Oggi ho fatto un po di test sulle varie soluzioni disponibili per far girare alcune applicazioni windows su linux come ad esempio Microsoft Office (in modo particolare Access) e Adobe Writer. Si lo so che esistono le alternative, ed io non sento proprio la mancanza di questi software, ma mi è stato richiesto di valutare le possibili soluzioni al problema. I nuovi documenti verranno creati utilizzando software libero ma dove lavoro vogliono essere sicuri di avere piena compatibilità con quelli esistenti. Quando si parla di applicazioni windows su linux, la prima soluzione che viene in mente è wine. Allora ho provato ad installare office 2003 sotto wine, ma l'installazione non è andata a buon fine e non c'è stato verso di farlo funzionare. Ho tentato con la versione trial di cross over ma anche qui con successo marginale. Nonostante la versione 2003 è menzionata tra quelle supportate infatti, (anche se il supporto non include Access), sia Word che Excel mi sono sembrati non molto stabili. L'unica soluzione che rimane (almeno che io sappia) è virtualizzare l'intero sistema operativo e installarci su i vari software.

A questo punto le alternative sono due: Vmware, o VirtualBox. Confesso di aver usato sempre Vmware ma visto che VirtualBox è GPL ho deciso di dargli una possibilità.

In realtà sul sito di VirtualBox è possibile scaricare solo il sorgente in GPL mentre i pacchetti binari sono sotto una licenza non libera (chissà poi perché e soprattutto perché non si trovano in giro pacchetti deb compilati dal sorgente e rilasciati sotto la GPL). In ogni modo se dovevo scegliere virtual box per la sua licenza non avrebbe avuto senso utilizzare i pacchetti precompilati e quindi ho deciso di compilarlo da me. Per fortuna la compilazione è filata liscia seguendo le istruzioni che si trovano sul sito ufficiale.

Lancio finalmente VirtualBox e mi accorgo che è effettivamente un software con grandi potenzialità. Purtroppo però ha ancora delle pecche che mi hanno riportato quasi (dico quasi perché ancora non sono del tutto convinto) a scegliere Vmware che nella versione Server è comunque gratuito (anche se non open source purtroppo):

  1. Avviando una sessione X in una macchina virtuale si hanno due puntatori del mouse che confondono molto il gatto e soprattutto l'utente.
  2. Non ho trovato le impostazioni del bios (come si hanno invece in vmware). Qui nessun fastidio per il gatto ma potrebbe essere utile all'utente.
  3. Perché per default è impostato il tasto Ctrl destro per ridare il focus alla macchina reale? Non lo sanno che molti portatili (se non tutti e compreso il mio) non hanno quel tasto? E come si imposta (se è impostabile) una alternativa? Non ho trovato una voce nei menù!
  4. Vmware offre maggiori possibilità nella configurazione della rete tra le macchine virtuali e la macchina reale.
VirtualBox è un gran bel software però per ora Vmware ha qualcosa in più!