Chi sta accedendo al disco? Monitorare l’uso dell’I/O.

HardDisk icon by everaldo.com Una feature molto comoda del task manager di Windows è quella che permette di visualizzare quali processi stanno scrivendo su disco e in quale misura. È possibile ottenere queste informazioni anche su Linux. Un metodo rapido per ottenere un’informazione del genere è eseguire da root:

echo 1 > /proc/sys/vm/block_dump

Eseguendo dmesg sarà possibile avere un colpo d’occhio di quali processi stiano effettuando burst di scritture, con un output simile a questo:

[  409.805443] firefox-bin(4288): WRITE block 25335048 on sda7
[  409.805468] firefox-bin(4288): WRITE block 25335112 on sda7
[  409.805493] firefox-bin(4288): WRITE block 25335136 on sda7
[  409.805520] firefox-bin(4288): WRITE block 25335176 on sda7
[  409.805589] kjournald2(729): WRITE block 17053608 on sda7
[  409.805608] kjournald2(729): WRITE block 17053616 on sda7
[  409.805620] kjournald2(729): WRITE block 17053624 on sda7
[  409.805631] kjournald2(729): WRITE block 17053632 on sda7
[  409.805642] kjournald2(729): WRITE block 17053640 on sda7
[  409.810454] kjournald2(729): WRITE block 17053648 on sda7
[  409.963898] firefox-bin(4288): dirtied inode 3198 (places.sqlite-journal) on sda7
[  410.004105] pdflush(23): WRITE block 16922864 on sda7
[  410.004257] pdflush(23): dirtied inode 10220 (plasma_theme_default.data) on sda7
[  410.004291] pdflush(23): WRITE block 36789872 on sda7
[  410.004310] pdflush(23): WRITE block 36789880 on sda7

Piccola nota: pdflush è il demone che si occupa di scrivere su disco le scritture rinviate dal kernel per motivi di performance, kjournald(2) si occupa di mantenere aggiornato il journal del filesystem ed è normale che siano spesso presenti. Questo output tuttavia non è di comoda lettura. Una alternativa è data dal software iotop, installabile con Synaptic, aptitude o il packet manager della distribuzione che preferite. Avviandolo con:

iotop -o

Si otterrà un output di questo tipo:
che mostra i quattro processi che hanno effettuato operazioni di I/O nel periodo di campionamento. In questo caso sono il già citato pdflush e wget che hanno effettuato delle scritture, mentre svn ha effettuato una lettura.

Le colonne di iotop mostrano nell’ordine:

  • il PID del processo;
  • la velocità di lettura nel periodo di campionamento (di default 1 secondo);
  • la velocità di scrittura nel periodo di campionamento;
  • il tempo impiegato per lo swapping;
  • il tempo atteso per l’accesso all’I/O;
  • il nome del processo e i suoi argomenti.

Il manuale di iotop indica gli switch utili per un uso più mirato di questo ottimo strumento.

Kubuntu 9.04 Jaunty Jackalope

Desktop icon by everaldo.com Il 23 Aprile è stato rilasciato Ubuntu 9.04 Jaunty Jackalope. Le novità introdotte sono elencate sul wiki di Ubuntu e su quello di Kubuntu. Le principali condivise da tutti i “gusti” di (X/K/Ed)Ubuntu sono:

Per quanto riguarda Kubuntu le novità principali sono:

Problemi

Vi sono però già una serie di bug noti, elencati sulla pagina di rilascio di Kubuntu e su quella di Ubuntu. Quelli che mi hanno toccato direttamente sono due (forse tre).

Connessione alla rete (bug 330811, 339313 e 348275)

Il widget per la connessione di rete è sostanzialmente rotto: litiga con il software per la gestione delle password KWallet, non permette di connettersi alle reti WPA2, non accetta le password per le reti WEP.

La rete che sto utilizzando al momento utilizza WEP (e ammetto che sia male, evitate di farlo anche voi!). Il widget per la connessione di rete si rifiutava di accettare la password. Il “trucco” è stato quello di inserire la password in formato esadecimale invece che ASCII. Per convertire una stringa da ASCII in esadecimale aprite un terminale e eseguite:

python -c 'print "lamiapassword".encode("hex")'

Sostituendo alla stringa “lamiapassword” la stringa da convertire. Questo però è solo un workaround temporaneo e non risolve altri problemi. Una soluzione – speriamo temporanea in attesa di Kubuntu 9.04.1 – è installare il vecchio KNetworkManager o Wicd. I bug rilevanti su launchpad sono il 330811, 339313 e 348275.

Blocco del sistema

Saltuariamente il sistema si blocca completamente: mouse bloccato, schermo bloccato, qualunque attività sull’hard disk è interrotta. Putroppo la descrizione di questo problema comprende un po’ di tutto dai raggi cosmici ai riti voodoo avversi passando per server X che fa le bizze, kernel con bug, driver con bug, * con bug.

Nel mio caso gli imputati maggiori sono due.

Server X 1.6 e scheda video ATI (bug 348332)

Qui confluiscono due eventi:

  • Ubuntu utilizza il nuovo server X 1.6;
  • i recenti driver fglrx (proprietari) di ATI non supportano i chipset più datati.

Risultato netto:  X non parte o si blocca. Il problema è stato riportato da David Faure nel suo blog, il bug di riferimento è il 348332. Le possibili soluzioni sono effettuare il downgrade xserver-xorg alla versione 1.5, oppure si potrebbe aggiornare alle ultime release utilizzando i pacchetti sperimentali di Tormod Volder, disponibili sul suo PPA; ulteriori informazioni a riguardo sono disponibili sul wiki https://wiki.ubuntu.com/XorgOnTheEdge. Si faccia bene attenzione al fatto che in questo caso la pezza potrebbe essere peggiore del buco, quindi non lanciatevi in sperimentazioni strane se non sapete quello che state facendo. Nota a piè di pagina: probabilmente questo non è il mio problema, dato che chi ha questo bug riporta blocchi quasi immediati del sistema, mentre io posso utilizzarlo anche per ore. In effetti più leggo i bug report e più mi convinco che una volta tanto, almeno nel mio caso, la scheda ATI è innocente.

Soft lockup del kernel 2.6.28 su EXT4 (bug 330824)

Questo non è bello. Diversi utenti hanno riportato che durante le operazioni su una grande quantità di file il kernel ci può essere un soft lockup: il kernel non crasha ma non schedula nessuna operazione. Il risultato è un kernel vivo, ma in coma irreversibile. La causa precisa del bug non è chiara, ma chi ha effettuato i test riporta che è stato risolto da qualche parte tra la versione 2.6.29-rc6 e la 2.6.29-rc8. In generale sembra che il bug non sia più presente a partire dalla versione 2.6.29.

Per controllare se il bug è effettivamente questo sto utilizzando il kernel 2.6.29 pacchettizzato dal Kernel Team di Ubuntu. Si possono scaricare i .deb da questo indirizzo: http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.29.1/, scegliendo la versione a 32 o 64 bit. Una volta installato il kernel si aggiungera alle voci disponibili su grub all’avvio. Incrociamo le dita.

Aftermath

Questa release di Ubuntu, e in particolare di Kubuntu, ha qualche bug di troppo che si potrebbe considerare uno show-stopper. Adesso lo sto utilizzando senza problemi rilevanti, ma per un neofita forse è conveniente attendere che sui repository proposed e backport vengano aggiunti i pacchetti che risolvono i bug sopra esposti.

Nuovi hash cercasi

Il primo Novembre è terminata la prima fase del concorso indetto dal Natiolan Institute of Standards and Technology (NIST). È scaduto infatti il termine entro il quale presentare proposte di algoritmi di hashing per sostituire lo scricchiolante SHA-1 e creare il nuovo SHA-3. Non sono disponibili dati sul numero di “concorrenti”, ma si suppone che siano tra i 30 e i 50. Mentre scrivo sono disponibili le descrizioni di 20 algoritmi sul wiki dell’Institut für Angewandte Informationsverarbeitung und Kommunikation (IAIK, Institute for Applied Information Processing and Communications) dell’università tecnica di Graz.

Il concorso è stato indetto dal NIST nel 2007, per designare il successore dell’algoritmo di hashing SHA-1, ritenuto poco sicuro soprattutto a causa dell’attacco studiato da Xiaoyun Wang (王小云), che permette di trovare una collisione con 263 operazioni, contro le 280 operazioni che sarebbero necessarie. Il successore attuale di SHA-1 è SHA-2 e la sua famiglia (SHA-224, SHA-256, SHA-384 e SHA-512). Gli hash di SHA-2 sono però dello stesso tipo di SHA-1, per cui la comunità crittografica non ritiene saggio fidarsi sul lungo periodo di tali algoritmi. Per questo motivo si è deciso di creare il nuovo SHA-3, che dovrebbe essere annunciato nel 2012.

Tra le proposte più discusse c’è Skein, creato da Bruce Schneier – co-sviluppatore di Twofish – insieme a universitari e sviluppatori di Intel e Microsoft. L’algoritmo è estremamente veloce (500MiB/sec per core su un Core 2 Duo x64 3.1 GHz, veloce il triplo di SHA-512 e quasi il doppio di SHA-256) e snello (è possibile implementare Skein-512 con 200 byte di stato e Skein-256 con soli 100 byte), e utilizza primitive simili a quelle usate da SHA-2.

Degno di nota è anche MD6, sviluppato da un team del MIT guidato da Ron L. Rivest, noto per essere stato co-autore di RSA, MD4, MD5 e RC6 (uno degli algoritmi finalisti per lo standard AES). MD6 ha un design tradizionale, è relativamente lento (che può non essere solo uno svantaggio per un algoritmo di hashing) e è studiato per funzionare bene su sistemi paralleli.

La squadra Danese e Austriaca che ha progettato Serpent (finalista AES) e trovato vulnerabilità in SHA-1 e GOST ha inviato come proposta Grøstl, la cui architettura si discosta nettamente da quella di SHA, pur rimanendo veloce come SHA-2. Ci si attende una proposta anche da Joan Daemen e Vincent Rijmen, creatori di Rijndael (vincitore di AES), ma non sono ancora disponibili informazioni a riguardo.

Molte proposte sembrano di sviluppatori amatoriali. L’algoritmo WaMM è stato dimostrato vulnerabile in meno di 24 ore. Geoffrey Park, seguendo le idee di Stephen Wolfram, ha sviluppato un hash, NKS2D, interamente basato sugli automi cellulari, ma è inevitabilmente lento e non è possibile dimostrarne formalmente la sicurezza.

Non sono noti i criteri con cui verrà selezionao il vincitore. Il prossimo passo è la “SHA-3 Candidate Conference” che verrà tenuta a Febbraio 2009.

Webcam con driver gspca non funzionano su Intrepid Ibex

Oggi è stato rilasciato Ubuntu 8.10 Intrepid Ibex e non ho potuto fare a meno di aggiornare la mia Kubuntu. L’installazione è stata indolore come al solito. L’unico neo è che la mia webcam, una Trust wb 1200p, ha smesso di funzionare, mentre non aveva alcun problema su Hardy Heron 8.04. La webcam è identificata da lsusb come:

Bus 002 Device 004: ID 093a:2468 Pixart Imaging, Inc. Cammaestro 2.5DU/X-EYE/Orite SC-120/ICGear TravelCam/Easy Snap Snake Eye WebCam

Lo stesso identico bug, che impedisce di utilizzare la webcam con skype o ekiga, afflige molte webcam come la Logitech QuickCam, ClickSmart, OrbiCam e Zoom, Vimicro ZS0301, Philips SPC900NC. C’è una lunga discussione a riguardo su launchpad (bug 260918) dall’eloquente titolo: “needed: libv4l and associated application patches (or “gspca stopped working in 2.6.27″)”. In breve: con l’aggiornamento del kernel alla versione 2.6.27 il driver gspca, utilizzato da moltissime webcam, ha smesso di funzionare. Per risolvere il problema è necessario installare una versione di v4l uguale o successiva alla 0.5.2. Per evitare di compilarseli a mano, so possono aggiungere questi repository:

deb http://ppa.launchpad.net/lool/ubuntu intrepid main
deb-src http://ppa.launchpad.net/lool/ubuntu intrepid main

E eseguire sudo aptitude update e sudo aptitude upgrade.

Mozilla Ubiquity

L’assenza dalla rete per un mese non mi ha permesso di mantenermi al passo con le ultime novità, quindi sono in ritardo come le zucchine del 2002 che devono ancora uscire, ma mi è piaciuta molto l’idea di Mozilla Ubiquity, per cui posterò lo stesso il video che lo presenta:

L’ho installato e… devo dire che mi piace molto. Il fatto che abbia acquisito autonomamente i miei contatti nella rubrica di gmail mi ha inquietato un po’, spero che non vi siano falle di sicurezza nei dintorni.

Pimp My MPlayer

MPlayer è il player per video che uso di più in assoluto. Non è amichevole come Kaffeine o VLC, ma fa benissimo il suo lavoro. Martin Ankerl ha pubblicato sul suo blog un po’ di trucchi per personalizzare MPlayer. Riporto qui quelli che ho trovato più interessanti:

Evitare i salti

Se la CPU è sotto sforzo, il video di MPlayer potrebbe non essere fluido. La situazione è segnalata da questo messaggio:

Linux RTC init error in ioctl (rtc_irqp_set 1024): Permission denied
Try adding "echo 1024 > /proc/sys/dev/rtc/max-user-freq" to your system startup scripts.

Per risolvere il problema si può eseguire da una console di root (ottenuta con sudo -i su Ubuntu e derivate o con su su altre distribuzioni):

echo 1024 > /proc/sys/dev/rtc/max-user-freq

o, per mantenere permanentemente l’impostazione, modificate il file /etc/sysctl.conf e aggiungete questa riga:

dev.rtc.max-user-freq=1024

dopodiché eseguite:

sudo sysctl -p

o riavviate per usare le nuove impostazioni.

Streaming fluido

Guardando video in streaming o da DVD può capitare che il playback salti. Per rimediare si può istruire MPlayer affinché mantenga una cache più grande per il buffering. Modificate il file ~/.mplayer/config e aggiungete le seguenti righe:

cache=8192
cache-min=4

La prima riga specifica un buffer di 8MiB, la seconda indica a MPlayer che il buffer deve essere pieno almeno al 4% (circa 327KiB) prima di eseguire la riproduzione dello stream audio/video.

Output video

Usate xv come output video, è quello che permette una visualizzazione a schermo più veloce. Per farlo aggiungete al file ~/.mplayer/config:

vo=xv

Se non dovesse funzionare provate vo=gl2 oppure, se avete una scheda ATI con driver proprietari fglrx, fate riferimento a questo mio post: Problemi con MPlayer e ATI.

Aspect ratio

Se avete un monitor 16:10 aggiungete al solito file di configurazione la riga

monitoraspect=16:10

anche se in genere non dovrebbe essercene bisogno e MPlayer dovrebbe individuare correttamente l’aspect ratio del monitor.

Volume troppo alto o troppo basso

Si può fare in modo che MPlayer normalizzi il volume dello stream audio, utile quando la traccia è troppo bassa o troppo alta. Per farlo aggiungere a ~/.mplayer/config la riga:

af=volnorm

Font dei sottotitoli

Per cambiare il font dei sottotitoli, copiate il file .ttf del font che desiderate in ~/.mplayer/subfont.ttf. Ad esempio per usare DejaVu Sans eseguite:

cp /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf ~/.mplayer/config

Dimensione dei sottotitoli

Per cambiare la dimensione dei sottotitoli modificate ~/.mplayer/subfont.ttf aggiungendo:

subfont-text-scale=3

Provate valori diversi per trovare l’impostazione più di vostro gusto.

Tasti rapidi

Per l’uso comune:

  • f: attiva/disattiva la modalità fullscreen
  • ESC,q: termina MPlayer
  • barra spaziatrice,p: mette in pausa/riattiva il playback
  • j: cicla tra i sottotitoli
  • o: mostra/nasconde l’OSD (On Screen Display) con la posizione corrente
  • +,-: anticipa/ritarda lo stream audio rispetto al video, utile nei filmati con audio non in sync
  • [,]: diminuisce/aumenta la velocità di playback

Per spostarsi nello stream:

  • sinistra: indietro di 10 secondi
  • destra: avanti di 10 secondi
  • su: avanti di un minuto
  • giù: indietro di un minuto
  • PgUp (o Pag Su): avanti di 10 minuti
  • PgDn (o Pag Giù): indietro di 10 minuti
  • .: avanti di un frame (p per tornare al playback normale)

Da KDE 4.1 beta 2 a KDE 4.1 RC1

Sui repository PPA di Kubuntu (deb http://ppa.launchpad.net/kubuntu-members-kde4/ubuntu hardy main) sono disponibili i pacchetti aggiornati per KDE 4.1. Quando furono rilasciati i pacchetti per KDE 4.1 beta 2 li installai usando questo reposiotry, e poi eseguii l’installazione a parte del (meta)pacchetto kdepim-kde4, che contiene kontact, kmail, akgregator e così via. Oggi sono stati messi sui repository i pacchetti per KDE 4.1 RC1. Eseguendo il solito sudo aptitude dist-upgrade l’installazione falliva così:

Preparing to replace kde-icons-oxygen 4:4.0.83-0ubuntu1~hardy1~ppa5 (using .../kde-icons-oxygen_4%3a4.0.98-0ubuntu1~hardy1~ppa1_all.deb) ...
Unpacking replacement kde-icons-oxygen ...
dpkg: error processing /var/cache/apt/archives/kde-icons-oxygen_4%3a4.0.98-0ubuntu1~hardy1~ppa1_all.deb (--unpack):
trying to overwrite `/usr/lib/kde4/share/icons/oxygen/32x32/actions/appointment-new.png', which is also in package libkdepim4-kde4
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
/var/cache/apt/archives/kde-icons-oxygen_4%3a4.0.98-0ubuntu1~hardy1~ppa1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Questo errore impedisce l’installazione di kdebase-runtime, che a sua volta impedisce il funzionamento di praticamente tutti i programmi di KDE. La soluzione, trovata immediatamente chiedendo aiuto al canale #kubuntu-kde4 su freenode è eseguire:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/kde-icons-oxygen_4%3a4.0.98-0ubuntu1~hardy1~ppa1_all.deb

Fatto questo, forzando la sovrascrittura di alcuni file, è possibile riavviare il processo di upgrade, che si spera vada a buon fine :)

Il problema è dovuto al fatto che non è ancora disponibile sui repository il pacchetto kdepim RC1, il che porta a questo conflitto di versioni.

Twitter da bash

Usate Twitter e da bravi nerd/geek volete utilizzarlo direttamente da bash? Ecco uno script che usa cURL:

#!/bin/bash
#
# Twitter Update
#
# Requires: cURL http://curl.haxx.se/
# By Guillermo Antonio Amaral Bastidas < gamaral@guillermoamaral.com >
#

### CONFIGURE ###

declare -rx USERNAME="YOUR_USERNAME"
declare -rx PASSWORD="YOUR_PASSWORD"

### DONT MODIFY ###

declare -x STATUS="$@"

curl 'http://twitter.com/statuses/update.xml' \
    -u ${USERNAME}:${PASSWORD} \
    -d "status=${STATUS}" > /dev/null 2> /dev/null

# EOF

Inserite il vostro nome utente e password nelle apposite variabili, rendetelo eseguibile con chmod u+x twitter.sh e usatelo:

./twitter.sh Frase da inviare a twitter

Uso perverso:

PROMPT_COMMAND='/path/di/twitter.sh $(history | tail -n 1)'

così potrete davvero far sapere cosa state facendo in questo momento! (Attenzione: era un geek joke, se lo capite vuol dire che ora di fare una passeggiata fuori).

Chiavi OpenSSL deboli per Debian e derivate

Qualche giorno fa il bollettino di sicurezza di Debian dsa-1571 ha pubblicato un bug scoperto da Luciano Bello. Per evitare che i programmi che utilizzano OpenSSL venissero riportati come buggati da Valgrind, i packager di Debian hanno rimosso una istruzione dal codice di md_rand.c, con il risultato di inficiare pesantemente sul seeding del PRNG che genera le chiavi asimmetriche.

LA conseguenza è che data una certa dimensione di chiave OpenSSL non riesce a generare tutte le chiavi possibili, ma solo una tra 32768. Questo vuol dire che i server amministrabili via SSH sono suscettibili agli attacchi brute force anche se autorizzano l’accesso solo con chiavi asimmetriche (metodo storicamente considerato più robusto di semplici passphrase).

Le chiavi generate tra Settembre 2006 e il 13 Maggio 2008 sono da considerarsi vulnerabili e devono essere rigenerate. Sono deboli le chiavi SSH, OpenVPN, DNSSEC, le chiavi nei certificati X.50 e le chiavi di sessione in connessioni SSL/TLS.

H. D. Moore (il creatore di Metasploit) ha scritto un ottima panoramica tecnica sull’argomento: http://metasploit.com/users/hdm/tools/debian-openssl/.

Look nativo su Skype

La versione per Linux di Skype è costruita sul toolkit Qt, per cui si integra particolarmente bene nel look & feel di KDE. Skype però forza il tema “cleanlooks”, mentre le versioni più recenti di Kubuntu usano il tema Plastic (su KDE 3.5.9) o Oxygen (su KDE 4), per cui l’aspetto finale “stona” un po’ con il tema di default. Per fortuna si può costringere Skype a utilizzare il look & feel predefinito del sistema. Per farlo è sufficiente lanciarlo aggiungendo lo switch --disable-cleanlooks:

skype --disable-cleanlooks

L’aspetto di Skype su KDE4 è quello che potete vedere nello screenshot qui sotto.