mercoledì 29 aprile 2009

[HOWTO] Installare kqemu su debian

Visto che in un post precedente avevo accennato a module-assistant, dedico un rapido post al suo utilizzo per installare kqemu.

kqemu è il modulo del kernel necessario per avere prestazioni migliori usando qemu.
Installarlo con module-assistant è rapidissimo:


erakis:~# m-a prepare
erakis:~# m-a clean,get,build kqemu
erakis:~# m-a install kqemu


Il primo comando prepara il pc alla compilazione (installando build-essential, i kernel headers etc etc..). Il secondo prima fa pulizia da eventuali compilazioni precedenti, poi scarica i sorgenti di kqemu e li compila, creando il .deb per il pc in questione. Infine lo si installa.. meglio di così..

lunedì 27 aprile 2009

Driver Nvidia ufficiali su debian (64 bit)

Non mi ricordo mai i parametri ottimali.. per ora mi sembra siano questi, per cui me li segno qui sul blog:


erakis:/usr/src# CC=gcc-4.1 sh NVIDIA-Linux-x86_64-173.14.12-pkg2.run --update --accept-license --kernel-source-path=/usr/src/linux --no-precompiled-interface


== Spiegazione
Come prima cosa imposto il compilatore giusto (per il kernel che ho) poi lancio NVIDIA-Linux-x86_64-173.14.12-pkg2.run , che è la versione del driver che avevo già in locale. Usando --update scarica l'ultima versione, non mi chiede di accettare la licenza ( --accept-license), non mi chiede di cercare versioni precompilate (--no-precompiled-interface) e si compila allegramente il modulo.

Ah, prima di lanciare il tutto consiglio di usare module-assistant facendo

erakis:/usr/src# m-a prepare


Giusto per avere l'ambiente pronto con tutti gli strumenti necessari per compilare

giovedì 23 aprile 2009

ffmpeg+ "Seems stream 0 codec frame rate differs from container frame rate"

Incredibile, dopo mezz'ora di tentativi ho scoperto che il problema era che il file di input era in audio 5.1 .. dico "incredibile" per il fatto che l'errore di ffmpeg di certo non aiutava, per cui non ho ben capito come ho fatto a risolverlo.. cmq il comando che uso ora per fare l'encoding di filmati per lo smartphone (che spiegavo qui) è diventato:

ffmpeg -i $input -s qvga -vcodec wmv2 -r 25k -acodec wmav2 -ar 22050 -ab 64k -ac 2 $output.wmv


con l'aggiunta di ac 2 per forzare la modalità stereo..

mercoledì 22 aprile 2009

Il suicidio continuo di Tilda

Come detto, sul portatile vecchio semidistrutto ho messo in autostart firefox e tilda, per avere il web ed una console sempre a portata di mano.

Ultimamente tilda rappresenta unicamente una rottura di palle. Per qualche motivo assurdo ogni tot si auto-sputtana il file di configurazione (~/.tilda/config_0) per cui sono costretto a cancellare la cartella e a riconfigurarlo..

Non ho ancora avuto tempo di indagare, ma per ora questo suo suicidio continuo in segmentation fault è abbastanza fastidioso.

Ho trovato che il problema era il file di configurazione lanciando tilda con strace, da cui ho visto che l'ultima syscall, prima di lanciare SIGSEGV, era una open sul file di configurazione..

che roba

domenica 19 aprile 2009

[HOWTO] aircrack ed intel 3945

Come dicevo nel precedente post ( Giocando con la Wireless ), avevo qualche problema ad usare la wireless con aicrack sulla scheda del mio portatile:


shatsar@erakis:~$ lspci | grep -i wireless
02:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)


il problema è che nel driver ufficiale non è prevista la modalità "Monitor" (nel senso che in realtà non sniffa niente) nè la possibilità di effettuare injection.

Quindi sono andato a scovare la pagina di aircrack-ng.org relativa alla mia scheda nella cache di Google (pare che oggi il sito sia giù):

Bisogna usare ipwraw, un modulo sostituitivo che permette queste funzionalità. La homepage è questa: http://homepages.tu-darmstadt.de/~p_larbig/wlan/

quindi, dopo aver verificato l'installazione dei prerequisiti (apt-get install linux-headers-`uname -r` build-essential libssl-dev ):

shatsar@erakis:/tmp$ wget http://homepages.tu-darmstadt.de/~p_larbig/wlan/ipwraw-ng-2.3.4-04022008.tar.bz2
shatsar@erakis:/tmp$ tar -xjf ipwraw-ng-2.3.4-04022008.tar.bz2
shatsar@erakis:/tmp$ cd ipwraw-ng/
shatsar@erakis:/tmp/ipwraw-ng$ make
shatsar@erakis:/tmp/ipwraw-ng$ su
Password:
erakis:/tmp/ipwraw-ng# make install
erakis:/tmp/ipwraw-ng# make install_ucode
erakis:/tmp/ipwraw-ng# echo “blacklist ipwraw” >> /etc/modprobe.d/blacklist
erakis:/tmp/ipwraw-ng# modprobe -r iwl3945
erakis:/tmp/ipwraw-ng# modprobe ipwraw
erakis:/tmp/ipwraw-ng# airodump-ng wifi0


Breve spiegazione: scarico i sorgenti, compilo ed installo sia il modulo che il firmware. Poi metto il modulo ipwraw in blacklist, perchè non è da usare normalmente, quindi non deve essere caricato all'avvio.
poi sostituisco il modulo attualmente caricato e lancio airodump..

Una volta finito di giocare, va reimpostato il driver in uso, quindi modprobe -r su ipwraw e modprobe su iwl3945

Enjoy

sabato 18 aprile 2009

Giocando con la wireless

Mi sono preso un sabato di pausa.. abbastanza svacco ed un po' di smanettamenti vari..
Il dubbio da risolvere era questo: sul portatile nuovo, airodump vede le reti, riceve i beacon ma non sniffa neanche un po' il traffico dati. Volevo capire se era un caso o ha problemi il driver.

Quindi ho pensato di crearmi l'ambiente ideale a casa da bucare. Sul mio pc vecchio (quello che ora è una postazione internet) ho quindi deciso di riattivare la wireless.

Vado a cercare i driver che usavo per l'interruttore della wireless, l'fsam7400. Scopro che ormai sono obsoleti, ed è tutto molto ma molto più comodo:

> modprobe wistron_btns

premere il tasto hotkey della wireless.
Fatto.
Bello.
Parto, mi connetto alla rete e comincio a generare traffico: dall'altro portatile: airodump vede zero traffico. Scheda: intel 3945.
Pare ci siano dei problemi con i driver delle schede wireless Intel..

Ho anche un adattatore wireless usb, il dlink g122. Ora vedo quale dei due riesco a far funzionare senza perderci sopra il weekend..

lunedì 6 aprile 2009

HOWTO installare OpenSolaris come immagine QEMU

Ho deciso di usare un po' OpenSolaris, visto che potrebbe essere la scelta per i server di un progetto molto molto interessante nel quale sto entrando.

Come primo tentativo di avvicinamento, direi di usarlo come immagine qemu..Proseguo quindi con la lista di post su qemu.


> shatsar@erakis:~$ wget http://dlc.sun.com/torrents/info/osol-0811.iso.torrent
> shatsar@erakis:~$ rtorrent osol-0811.iso.torrent


Dopo che ha finito il download dell'immagine iso (scaricabile anche in altri modi dal sito ufficiale..) preparare l'immagine:


shatsar@erakis:~$ qemu-img create -f qcow2 /home/shatsar/opensolaris.img 3600M
Formatting '/home/shatsar/opensolaris.img', fmt=qcow2, size=3686400 kB


Infine far partire l'installazione. Ovviamente si riesce ad evitare di masterizzare.. io pensavo di dover montare in loop device l'immagine iso, invece è ancora più semplice:


shatsar@erakis:~$ qemu -hda opensolaris.img -boot d -cdrom osol-0811.iso -m 512 -localtime


Ovviamente questa procedura, dopo aver visto che l'iso è sufficiente per far partire l'installazione, può essere usata per qualsiasi sistema operativo..

lunedì 23 marzo 2009

Windows XP su QEMU: Avvio ed Ottimizzazione

Finalmente riesco a scrivere qualcosa riguardo QEMU.
Come già detto, ho installato windows xp come immagine di qemu.
Il passo successivo è quello di avviare la macchina con interfaccia di rete abilitata:
Il comodo metodo di default è :

> shatsar@erakis:~$ qemu -hda xp.img -boot c -m 512 -localtime -net nic -net user

In questo modo crea un'interfaccia di rete con una configurazione basilare (con dhcp e nat) per far uscire la macchina virtuale su internet.

Se (per caso) ci fossero problemi con versioni trial/attivazioni, c'è la possibilità di passare un ulteriore parametro (startdate) per far credere alla macchina virtuale di essere in altre "coordinate temporali":

> shatsar@erakis:~$ qemu -hda xp.img -boot c -m 512 -localtime -startdate 2009-03-03T10:01:21 -net nic -net user

Magari il tempo di acquistare una licenza o trovare il crack, ma io questo non l'ho detto, sia chiaro..

== Ottimizzazioni
Avendo poco spazio su disco e poca ram bisogna lavorare un po' sull'ottimizzazione, contando che questa macchina verrà usata solo per task ridotti (se volete usarla di più dovrete darle in pasto ben più di 2.5GB e 512m di ram), ecco quello che ho fatto:
tasto destro su risorse del computer --> proprietà --> avanzate --> prestazioni (Impostazioni)
* effetti visivi: su "Regola in modo da avere prestazioni migliori"
* page file: di default viene istanziato come il 150% della RAM.. se vi sembra che dare un range da 768MB a 1.5GB al file di paging su 2.5GB totali di disco sia quantomeno limitante, dalla scheda avanzate si può cambiare l'impostazione della memoria virtuale scendendo a valori ragionevoli
* disinstallare le applicazioni inutili: da pannello di controllo --> installazione applicazioni --> installazione componenti di windows ho tolto tutto tranne explorer (che poi, in realtà, per alcuni componenti, quello che si va a togliere è solo il link nel menù start..)
* ho tolto l'impostazione di esplora risorse che "Cerca automaticamente cartelle e stampanti di rete" da strumenti --> opzioni --> visualizzazione.
* ho tolto l'immagine di sfondo
* già che c'ero ho fatto anche un bel defrag..

Non ho voluto apportare troppe modifiche all'installazione attuale, quindi niente software esterni per ottimizzazione/caching nè ho eliminato i font..

domenica 22 marzo 2009

TeXlipse

Chi mi conosce da tempo sa che uso spesso LaTeX; l'ho usato per scrivere diversi documenti e anche qualche presentazione. Avevo iniziato anche a scrivere qualcosa su LaTeX per ArabianFenix, tra l'altro..e tutt'ora lo uso per diverse cose: per esempio, stanco del modello europeo, sto scrivendo anche il Curriculum Vitae in LaTeX..

Inoltre, il fatto che il sorgente sia in forma di file di testo, mi permette un versionamento ottimale, con un diff sensato ed utilizzabile, cosa che, ovviamente, decade con formati binari quali odt e doc. Per questo motivo è in LaTeX sia la documentazione dei miei progetti opensource (che sto tralasciando da un po', ma riprendo tutto tra un paio mesi) che la mia tesi specialistica (che ormai è praticamente finita) che è poi sotto repository subversion locale.

Ho sempre scritto documenti latex con vi per poi compilare con script shell (per il semplice fatto che per gestire bene i riferimenti interni, bisogna compilare più di una volta). Per un breve periodo avevo usato altri editor. Alcuni erano un po' troppo visuali per i miei gusti, mentre kile, in assoluto il mio preferito, semplicemente è scritto con le QT, mentre io uso Gnome, quindi diventava un po' lento.. convincendomi a tornare a vi.

Comunque, dovendo già usare eclipse per il codice su cui ruota la mia discussione, ho provato a cercare una plugin per latex: ed è così che ho trovato TeXlipse, uno strumento che mi sta agevolando parecchio il lavoro di scrittura della tesi.

Ora, con questa plugin di eclipse, è tutto molto più rapido: ho impostato texlipse in modo da compilarmi ad ogni modifica i sorgenti .tex e di dare in output in formato pdf.

Un'altra caratteristica che mi sta aiutando parecchio, oltre, ovviamente, al fatto che mi segnala subito gli eventuali errori nelle direttive latex, è il partial building:
per esempio, avendo un .tex "master" che include tutti i capitoli (con la direttiva \include), quando sto lavorando massicciamente su un capitolo, non ha senso che mi ricompili tutto.. per cui attivando la compilazione parziale, texclipse mi crea un file .tex temporaneo che ha la struttura del mio documento master, ma include solamente il capitolo su cui sto lavorando.

E, come si sa, gestire un file più piccolo ha sempre i suoi vantaggi..

martedì 17 marzo 2009

[HOWTO] PL/SQL: cursore dinamico (con parametro)

Dato che in rete non avevo trovato nulla di veramente chiarificatore a riguardo, posto qualche riga di PL/SQL su come ho risolto il problema di fare un cursore dinamico. Il codice seguente ovviamente è una versione semplificata di quello che ho scritto realmente, ma è giusto per far capire il concetto..

visto che non è possibile dichiarare un cursore senza inizializzarlo, ho creato due cursori nel seguente modo:

CREATE OR REPLACE FUNCTION calcolaQualcosa RETURN NUMBER IS
  cursor categorie is select categoria from catalogo where;
  cursor prodotti(p_param varchar2) is select distinct prodotto from prodotti where categoria = p_param;
BEGIN
...


e all'interno del codice si usa semplicemente così::

for i in categorie loop
  for j in prodotti(i.categoria) loop
    dbms_output.put_line('Categoria: ' || i.categoria || 'Prodotto: ' || j.prodotto);
  end loop;
end loop;