sabato 22 ottobre 2011

Rivoluzione del concetto di fotografia

Alcune delle tecnologie digitali che usiamo non sono nient'altro che la trasposizione di altre equivalenti esistenti nel mondo analogico. Ad esempio una e-mail non è molto diversa concettualmente da una lettera di carta. Lo stesso può dirsi per una fotocamera digitale: alla fine funziona esattamente con il principio di  una vecchia analogica tranne per la pellicola che è stata sostituita da un sensore. In questi casi quello che fa la differenza è la dematerializzazione che consente velocità e quantità prima impossibili: provate a pensare a quante lettere avevate mandato prima di avere una e-mail e quante foto avete scattato con la vostra vecchia macchina fotografica a pellicola... e ora?
La premessa era solo per sottolineare come, a volte, le novità introducano invece concetti nuovi: è il caso della fotografia con sensori light-field che, pur esistendo da un po' di anni, entrerà nei prossimi mesi in un prodotto commerciale ad un prezzo "abbordabile" (anche se altino). Che cos'è? Un sensore che misura il campo luminoso, cioè la quantità e il colore della luce che arriva in un punto anche in funzione della direzione da cui arriva. E cosa cambia in pratica? Che non sarà più necessario mettere a fuoco una fotografia perché è come se registrasse tutte le possibili messe a fuoco e si potrà scegliere successivamente quale usare. Il risultato è che hanno prodotto un oggetto (possiamo chiamarlo ancora "macchina fotografica?) che ha un solo pulsante per scattare la foto, un cursore per lo zoom e nessun'altra regolazione. I tempi di scatto sono brevissimi, grazie all'assenza della messa a fuoco e poi, grazie ad un software apposito (purtroppo solo su Mac per ora!) si può scegliere la messa a fuoco migliore ed eventualmente trasformarla in una foto "normale" oppure anche mantenerla così e lasciar scegliere a chi la guarda.

Purtroppo la forma non sembra molto comoda... ma potrebbe anche essere solo questione di abitudine: io penso che nei prossimi anni tutte le macchine fotografiche adotteranno questa tecnologia.

sabato 8 ottobre 2011

Più veloci della luce?

Le recenti notizie hanno risvegliato il fisico che è in me. L'avrete sentito tutti perché l'hanno spiegato in qualche modo anche i telegiornali: in un esperimento tra il CERN di Ginevra e i laboratori del Gran Sasso è stata misurata la velocità dei neutrini, e risulterebbe superiore a quella della luce di circa lo 0,001 % (che sulla distanza CERN - Gran Sasso fanno circa 60 miliardesimi di secondo). Nessuno degli scienziati si è sbilanciato a prevedere quali ricadute potrebbe avere questo risultato sulle teorie fisiche elaborate finora, ma con grande umiltà e prudenza hanno condiviso il lavoro con la comunità scientifica cercando qualcuno che possa o scoprire un errore nell'esperimento o ripeterlo altrove per confermare la cosa.
Per cercare di capire cosa è stato fatto mi sono letto l'articolo originale: certo non dico di averlo compreso completamente, però devo dire che mi sono chiarito abbastanza le idee.
Partiamo dall'inizio.

Cosa sono i neutrini? Particelle elementari, cioè "mattoncini" che compongono e "fanno funzionare" tutto l'universo. Alcuni tipi di questi "mattoncini" sono più noti: protoni, neutroni, elettroni,... I neutrini, come si può intuire dal nome, sono elettricamente neutri e sono "piccolini". Queste caratteristiche li rendono le particelle più "sfuggenti" tra quelle note, perché non interagiscono praticamente con nulla: noi stessi siamo costantemente "bombardati" da un flusso di neutrini provenienti dal Sole che attraversano tutta la Terra come se fosse trasparente. Se ipoteticamente avessi 100 neutrini e volessi costruire una barriera che ne fermi almeno 50 dovrei costruire un muro di piombo spesso un anno luce cioè circa 10000000000000 Km (sono 13 zeri)!

In cosa consiste l'esperimento? In questo: al CERN hanno un "cannone a neutrini" e un orologio, "sparano" e si segnano l'ora, al Gran Sasso hanno un rivelatore di neutrini e un altro orologio, quando rilevano un neutrino segnano l'ora. Dopo aver misurato la distanza tra il CERN e il Gran Sasso basta dividerla per il tempo misurato e si ottiene la velocità. Semplice no? Beh, a parte gli scherzi è più o meno quello che hanno fatto tranne che la natura sfuggevole dei neutrini e i piccolissimi tempi in gioco rendono necessari un po' di accorgimenti.

Come funziona il "cannone"? Come si può immaginare non è così semplice prendere i neutrini e spararli, per questo si sfrutta un espediente. In uno degli acceleratori di particelle presenti al CERN  che si chiama SPS (non è il famigerato LHC: l'SPS è stato costruito negli anni '70 e misura solo7 km, confronto ai 27 km dell'LHC, viene infatti usato come iniettore di protoni per l'LHC) viene accelerato un fascio di protoni (molto più facili da "maneggiare" rispetto ai neutrini). Dall'acceleratore vengono estratti dei "proiettili", cioè delle porzioni del fascio neutronico della durata di 10 milionesimi di secondo. I "proiettili" di protoni attraversano un bersaglio di grafite spesso 2 m e generano mesoni, una famiglia  di particelle instabili, che hanno cioè una vita brevissima, infatti decadono in pochi miliardesimi di secondo trasformandosi in elettroni e neutrini. La trasformazione avviene in un tunnel lungo circa 1 km successivo al bersaglio di grafite e orientato verso il laboratorio del Gran Sasso. Dalla fine del tunnel il "proiettile" di neutrini viaggia nella crosta terrestre.

Come si rivelano i neutrini? Proprio per la loro capacità di attraversare la materia senza interagire i neutrini sono molto difficili da rilevare. I rivelatori di neutrini sono infatti generalmente composti da grosse quantità di materiale nel quale ci sia una certa probabilità (bassissima) che il neutrino interagisca e da sensori sensibilissimi in grado di identificare anche le poche interazioni che avvengono. Per questo i sensori devono essere schermati il più possibile da fonti esterne, infatti si trovano in cavità sotterranee. Il rivelatore usato in questo esperimento si chiama OPERA, si trova sotto il massiccio del Gran Sasso, negli omonimi laboratori, ed è composto da 150000 mattoncini formati da una pellicola di emulsione fotografica e una lastra di piombo. Per avere un'idea del numero di neutrini rilevati rispetto a quelli spediti  basti sapere che sono stati conteggiati 16111 eventi a fronte di circa 100000000000000000000 (20 zeri) protoni sparati dal CERN.

Come si misura la distanza di circa 730 Km con un margine di errore di 20 cm? Proprio per la piccolissima differenza misurata è necessario che la distanza sia nota con una imprecisione più bassa possibile. Il miglior sistema per misurare una distanza così grande è il GPS, infatti con i ricevitori usati è possibile misurare una distanza con un errore inferiore a 2 cm. Tuttavia il GPS funziona solo all'aperto e in questo caso sia il punto di partenza che quello di arrivo si trovano sottoterra. Per questo le posizioni sono riportate ad un punto all'aperto utilizzando metodi più "classici", la composizione degli errori porta ad un errore di 20 cm. La distanza è stata misurata continuamente nei tre anni in cui si è svolto l'esperimento, infatti, a causa dei movimenti della crosta terrestre, essa è variata di circa 10 cm. Interessante notare che dei 10 cm, 7 sono stati misurati in un solo giorno durante il terremoto dell'Aquila del 2009.

Come si misura il tempo tra la partenza e l'arrivo dei neutrini? Questa probabilmente è la parte più complessa. Come detto all'inizio vengono usati 2 orologi che, oltre ad essere precisi fino al miliardesimo di secondo (e questo si ottiene "facilmente" con un orologio nucleare) devono essere altrettanto sincronizzati tra di loro. Senza entrare nei dettagli i due orologi sono sincronizzati e verificati da istituti metrologici indipendenti entro 2 miliardesimi di secondo. La misura del tempo impiegato ha però un altra difficoltà intrinseca: non è possibile rilevare un neutrino al CERN, mettergli un cartellino con un numero e poi rilevarlo di nuovo al Gran Sasso come si farebbe per un corridore... quindi si procede con metodi statistici. Al CERN esiste un rilevatore del flusso di protoni posto appena prima del bersaglio di grafite, mediante questo sensore si può misurare con grandissima precisione la variazione nel tempo del flusso di protoni, che come si è detto, è un brevissimo impulso (l'ho chiamato "proiettile") ma ha pur sempre una durata piuttosto lunga rispetto ai tempi in gioco. Con una piccola forzatura possiamo dire che si misura la "forma" del proiettile di protoni. A fronte di un "colpo", al Gran Sasso saranno rilevati pochi eventi (o a volte anche nessuno). Ripetendo il "colpo" molte volte si è arrivati, in 3 anni dal 2008 al 2010, a raccogliere 16111 neutrini anche questi riportati con precisione sul grafico rispetto al tempo misurato con l'orologio sincronizzato. Ora riportando su un grafico la media di tutte le "forme" del proiettile, spostate in avanti di tanto tempo quanto impiegherebbe la luce a percorrere i 730 Km e confrontandole con il grafico dei neutrini rilevati ci si aspetterebbe che i due grafici coincidano, invece quello dei neutrini è anticipato di circa 60 miliardesimi di secondo!



sabato 20 agosto 2011

Rinnovamento

Una mano di pittura al blog... spero di trovare il tempo per scrivere un po' di cose che ho in mente.

mercoledì 6 gennaio 2010

Sostituzione di un hard disk senza re-installazione del sistema

Situazione iniziale: un pc con hard disk da 120 Gb partizionato con NTFS (30 Gb) e ext3 (70 Gb) + altre piccole partizioni per swap linux e recovery di sistema. Il sistema ha un dual boot sulla partizione ext3 (con ubuntu) e sulla prima partizione NTFS (Windows Vista inizialmente preinstallato sul pc ma non più usato).
L'HD segnala tramite S.M.A.R.T. molti settori danneggiati quindi decido di sostituirlo con uno nuovo da 160 Gb. Situazione finale che vorrei ottenere: hd da 160 Gb partizionato con ext3 interamente + una partizione di swap da 1Gb. Vorrei copiare il sistema linux interamente senza reinstallarlo e mantenendo quindi esattamente gli stessi dati presenti nel HD da sostituire. La partizione windows NTFS non è più necessaria (eventualmente tenterò di avviarla con una macchina virtuale ma questa è un'altra storia). Non possedendo una "scatoletta" per contenere un hd SATA come quello da sostituire sono obbligato ad effettuare l'operazione in due passi: prima copierò la partizione su un HD esterno USB, poi sostituirò il disco e la copierò su quello nuovo.
Ecco la procedura che ho seguito: 1. Avvio il pc con il cd di Ubuntu avviando il sistema dal CD. 2. Dal terminale copio la partizione ext3 da 70 Gb (sda6) sul disco esterno USB (montato in /media/LACIE) comprimendola con gzip (vediamo quanto si guadagna): sudo dd if=/dev/sda6 | gzip - >/media/LACIE/sda6.gz 3. Spengo il pc, sostituisco il disco e riavvio da cd 4. Creo due partizioni primarie sul nuovo disco con fdisk (sda1 e sda2). 5. Copio i dati della vecchia sda6 in sda1 (non la riempiranno completamente ma per ora va bene così): sudo gunzip -c /media/LACIE/sda6.gz | sudo dd of=/dev/sda1 6. controllo che la partizione sia stata generata correttamente: sudo e2fsck -f /dev/sda1 7. Ridimensiono del filesystem in modo che occupi tutta la partizione sudo resize2fs /dev/sda1 8. Installo il boot loader:
Prima devo montare la partizione perché voglio installare la versione di grub presente su quella p sudo mkdir /mnt/temp sudo mount -t ext3 /dev/sda1 /mnt/temp/
Poi installo grub sudo grub-install --root-directory /mnt/temp/ /dev/sda
Finito. Riavvio il sistema dopo aver tolto il CD ed è fatta.

lunedì 4 gennaio 2010

Un tarlo su internet

In questi giorni mi sono imbattuto, grazie ad un articolo del Fatto Quotidiano (faccio un po' di pubblicità...) in un sito che non conoscevo: anobii (nome che deriva da Anobium punctatum, il "tarlo della carta"). Era un po' di tempo che cercavo qualcosa per gestire i libri che ho in casa (più che altro per mia moglie), tenere traccia di quelli letti, il costo, la provenienza, ecc... e l'applicazione utilizzabile gratuitamente sul sito ha proprio le funzionalità che cercavo. Ma non solo. In realtà quello che ho trovato è enormemente di più: un vero e proprio social network letterario in cui si possono conoscere persone con gli stessi gusti, scoprire nuovi libri interessanti, scambiare recensioni e anche, perché no, libri. Il tutto con una interfaccia essenziale ma ricchissima di funzionalità in vero stile Web 2.0. Io consiglio a tutti di iscriversi.
L'articolo del Fatto Quotidiano ipotizzava, come provocazione, che non ci sarà più bisogno dei critici letterari perché con applicazioni di questo tipo sarà semplice leggere e valutare le critiche di tutti i lettori. In fondo, se mi permettete una piccola riflessione, è uno degli aspetti più belli di internet: la grande democraticità. Chiunque ha la possibilità di esprimere un parere e di essere letto anche se non è un raccomandato o una persona importante, è solo quello che scrive che lo rende più o meno importante. Penso che questa impostazione sarà una rivoluzione anche in altri campi.

mercoledì 30 dicembre 2009

Parole, parole, parole

Vi segnalo questa applicazione interattiva pubblicata su Repubblica online che analizza i testi dei discorsi di fine anno di tutti i presidenti della repubblica. È vero che le parole visualizzate in questo modo non rendono giustizia al discorso intero ma è interessante l'approccio "scientifico" e la visualizzazione: la "word cloud" (penso si possa chiamare così) dice anche molte cose implicite e non comprensibili con una lettura lineare. Tecnica da tenere presente anche per altre situazioni. Bella idea. Aggiornamento: Ecco l'applicazione usata per generare i "word cloud" http://www.wordle.net/

mercoledì 25 marzo 2009

Super javascript

In questi giorni ho scoperto una evoluzione, per me nuova, di html e javascript che la dice lunga sulla direzione che sta prendendo questa tecnologia: da semplice sistema per la creazione di ipertesti si sta trasformando sempre più in una vera e propria "piattaforma" per la programmazione di applicazioni che non hanno nulla da invidiare a quelle "classiche" che abbiamo installato sul pc. In particolare ho scoperto che le ultime specifiche dell'HTML5 prevedono la gestione diretta della grafica mediante javascript: in parole semplici è possibile avere una "tela" su cui disegnare quello che si vuole. Il tutto dipende dall'introduzione del tag <canvas> (che significa appunto "tela") e di alcune funzioni javascript per disegnare linee, rettangoli, cerchi, ... ma anche immagini nei formati supportati dal browser. Il tag è supportato, per ora, solo dalle più recenti versioni di Firefox, Safari, Opera e, ovviamente, Chrome. Internet Explorer, anche nella versione 8 (che è uscita recentemente in beta) non lo supporta.

Il funzionamento è procedurale, non dichiarativo; in pratica il disegno viene costruito "dicendo" al browser come deve procedere per farlo: "sposta la matita qui", "traccia una linea da qui a là", "cambia il colore della matita", "fai un cerchio", "riempi il cerchio di colore", ... Non voglio entrare in discussioni (filosofiche) sul fatto se sia meglio un approccio dichiarativo o procedurale ma voglio fare subito alcuni semplici esempi per capire.

Per iniziare c'è bisogno di una semplicissima pagina html con un tag <canvas> al quale associamo un attributo "id" per poterlo identificare semplicemente. Inserirò poi nella pagina una funzione javascript disegna() che viene eseguita al caricamento della pagina stessa (onload) e "disegnerà" nel canvas. Questo è il codice di base della pagina:

<html> <head> <title>Test canvas tag</title> <style type="text/css"> #mycanvas {border-style:solid; border-width:1px; border-color:black;} </style> <script> function disegna() { //Qui inseriremo le istruzioni per fare il disegno } </script> </head> <body onload="disegna();"> <canvas id="mycanvas" width="200" height="200"> Tag &lt;canvas&gt; non supportato da questo browser </canvas> </body> </html>

Notare che qualsiasi contenuto del tag <canvas> non verrà visualizzato se il browser lo supporta: scrivere al suo interno è quindi un ottimo sistema per informare l'utente che sta usando un browser a cui manca questa funzionalità.

Faccio qualche prova di codice javascript nella funzione disegna().

Prima di tutto occorre ottenere l'oggetto che permette di disegnare e metterlo in una variabile:


var foglio = document.getElementById('mycanvas').getContext('2d')


Notare che il metodo getContext() per ora supporta solo il tipo '2d' (disegno bidimensionale) ma in futuro potrebbe anche supportare grafica in uno spazio tridimensionale (3d).

La tela è come un piano cartesiano con le coordinate che hanno origine nell'angolo in alto a sinistra, quindi il punto (0,0) sarà l'angolo in alto a sinistra, il punto (200,200), nel caso di esempio, sarà invece l'angolo in basso a destra.

la funzione moveTo permette di spostare la "matita" senza disegnare

foglio.moveTo(0,150)

La funzione lineTo disegna una linea retta fino al punto indicato

foglio.lineTo(200,150)

La funzione stroke() visualizza le linee fatte

foglio.stroke()

Cambio il colore della matita, ne prendo una rossa:

foglio.strokeStyle = 'red'

Inizio una linea (spezzata)

foglio.beginPath()

Mi sposto (senza disegnare)

foglio.moveTo(50,50)

Faccio due linee...

foglio.lineTo(150,50) foglio.lineTo(100,0)

E "chiudo" la linea spezzata sul punto di partenza:

foglio.closePath() foglio.stroke()

Riprendo la matita nera:

foglio.strokeStyle = 'black'

Disegno un rettangolo (i primi due parametri indicano il punto di partenza (angolo in alto a sinistra) e gli altri due indicano rispettivamente la larghezza e l'altezza del rettangolo

foglio.strokeRect(50,50,100,100)

Imposto il colore per lo riempimento delle figure:

foglio.fillStyle = 'brown'

Disegno un rettangolo colorato:

foglio.fillRect(100,120,20,30)

Il risultato, mettendo tutto insieme, è in questa pagina (visualizzate l'HTML per vedere com'è). Vi sembra banale? Allora guardate questo esempio fatto sfruttando (anche) l'elemento canvas: http://www.chromeexperiments.com/hosted/gravity/index.html

oppure quest'altro:

http://deanm.github.com/pre3d/monster.html

sabato 28 febbraio 2009

Reale e virtuale mescolati

Importanti "rivoluzioni" in campo informatico sono avvenute, in passato, con l'evoluzione delle interfacce tra la macchina e l'uomo. I primi computer comunicavano con schede perforate, poi si è passati a monitor e tastiera con il "prompt dei comandi" (i primi computer che ho usato io erano ancora così); la vera rivoluzione fu però l'avvento del mouse e dei sistemi "a finestre" (Mac, poi Windows, senza entrare in dispute sull'attribuzione dei meriti); attualmente sono già diffusissimi i sistemi "touch screen" (chi ha uno smartphone sicuramente li usa quotidianamente) o addirittura "multitouch" (iPhone) dove viene riconosciuto il tocco di più dita contemporaneamente.
E domani?
Raccolgo qui un po' di notizie già "vecchie" di qualche mese, che secondo me, dipingono bene verso cosa stiamo andando. Alcune sembreranno scomode e inutilizzabili o vi faranno esclamare: "Io una cosa del genere non la userò mai!". Prima di fare questi pensieri, però, provate ad andare indietro con la mente di una decina di anni: com'erano i cellulari, vi ricordate quegli oggetti "enormi" che "ma a cosa serve?, ne posso fare tranquillamente a meno!"? Io ero tra quelli che la rensavano così. Non ne avete forse uno in tasca ora?
Veniamo alle novità. Il denominatore comune sembra quello di mescolare la realtà con il mondo virtuale portando il virtuale nel reale o viceversa. Ma meglio guardare gli esempi: valgono più di mille parole
.
Un bell'esempio di tecnologia multitouch alla Microsoft
Computer "indossabile" costruito al MIT
CamTrax, un software (gratuito!) che permette, tramite la webcam, di usare una cosa qualsiasi per controllare il pc
La "realtà aumentata" che cita Paolo Attivissimo in un suo post
e siamo solo all'inizio!

mercoledì 11 febbraio 2009

Recupero accesso di amministratore

Recupero dell'accesso di amministratore (root) in un sistema linux Ubuntu e riflessione sulla sicurezza dei dati.
Vi racconto un'altra esperienza di "recupero" di un danno dovuto, questa volta, ad un errore umano e non ad un guasto hardware. Non è nulla di particolarmente "innovativo" ma spero possa servire a qualcuno che si dovesse trovare nella stesa situazione. Cercherò di spiegarlo con parole semplici, senza dare nulla per scontato.
Premessa. In un sistema linux esiste un "super utente" che ha la possibilità di vedere e modificare ogni file, si chiama "root". L'utente con cui normalmente si accede al sistema è, invece, generalmente, meno privilegiato e può modificare solo alcuni file. Per le operazioni di configurazione del sistema o l'installazione dei programmi è necessario connettersi con l'utente root.
Veniamo ora ad un altro concetto: i "gruppi". Ogni utente può appartenere a uno o più gruppi. Un gruppo non è altro che un modo per assegnare ad un insieme di utenti i permessi per certi file relativi ad un unico ambito. Esempio: il gruppo "lp" permette di utilizzare tutte le funzionalità relative alla porta parallela: tutti gli utenti che appartengono al gruppo lp possono usare la porta parallela. Mi scusino gli esperti per questa descrizione ultra-semplificata ma è necessaria per capire quanto segue.
Le distribuzioni Ubuntu hanno, per impostazione predefinita, l'utente "root" disabilitato, nel senso che non ha una password impostata per cui non è possibile accedere direttamente al sistema come "root" ma solo con il proprio utente definito in fase di installazione. Come è possibile allora effettuare le operazioni di configurazione ed installazione? Risposta: con il comando sudo (Super User DO). In pratica un utente "normale" può scrivere sul terminale "sudo" seguito da un qualsiasi comando ed esso verrà eseguito come se fosse l'utente root. Sudo prevede generalmente, come misura di sicurezza, il reinserimento della password dell'utente. Anche se non utilizzate il terminale dei comandi in Ubuntu vi sarete certamente imbattuti nella versione "grafica" dello stesso comando che vi richiede la password ogni volta che tentate di eseguire una operazione "riservata". Chi può usare il comando sudo? Certo non chiunque, altrimenti non ci sarebbe la possibilità di impostare dei livelli di sicurezza. Gli utenti che abilitati a sudo sono quelli definiti nel file /etc/sudoers (che ovviamente può essere modificato solo da un utente che possa già, a sua volta, effettuare sudo). In Ubuntu sudo è configurato in modo da dare la possibilità di utilizzarlo a tutti gli utenti del gruppo "admin" e generalmente, in una installazione standard, viene creato un solo utente con il proprio nome e che appartiene anche al gruppo admin (se cè solo un utente non può essere che lui l'amministratore!).
Cosa succederebbe se inavvertitamente (o meglio stupidamente) un utente si auto-eliminasse dal gruppo admin? Ebbene, è proprio quello che ho fatto. Ovviamente è sempre possibile togliersi dal gruppo ma solo un utente amministratore può aggiungere qualcuno allo stesso. Siccome l'unico utente ero io non c'era più (quasi) niente da fare: è stato un po' come chiudersi fuori casa lasciando le chiavi dentro!
La soluzione? La chiavetta USB che ho usato per il recupero dati (vedi post precedente). Avviando Ubuntu "live" dalla chiavetta, il disco rigido è leggibile e scrivibile, quindi è possibile ripristinare i gruppi modificando il file /etc/group (è il file dove vengono salvate tutte le impostazioni dei gruppi). Procedura pratica:
Aprire un terminale
Digitare
sudo mkdir -p /mnt/disco
(crea una directory "disco" dove monteremo l'hard disk; notare che "sudo" funziona perché ora stiamo lavorando nel sistema caricato dalla chiavetta e non su quello installato)
sudo mount /dev/sda1 /mnt/disco
(monta la partizione del disco nella directory appena creata. Attenzione:  sda1 è la prima partizione del primo disco scsi (o SATA), per un disco IDE la prima partizione del primo disco sarà hda1, se il disco è sul secondo canale IDE sarà hdb1, se la partizione non è la prima sarà hda2, hda3, ecc...)
sudo cp /mnt/disco/etc/group- /mnt/disco/etc/group
Ho visto che il vecchio file dei gruppi (contenente la versione in cui il mio utente apparteneva al gruppo admin) è stato salvato in un file con un "-" alla fine. Quindi al posto di modificare il file /etc/group l'ho semplicemente sovrascritto con la versione vecchia.
Riavviare e togliere la chiavetta in modo che parta il sistema dal disco rigido: se tutto è andato bene il problema dovrebbe essere risolto.
Una riflessione finale. Notate come sia semplice leggere dati da un computer anche con un sistema sicuro come linux e protetto da password. Se è impostato il boot da usb (oppure se il BIOS non è protetto da password, quindi chiunque può modificarlo) è sufficiente inserire una chiavetta con Ubuntu, avviare il PC e montare il disco: tutti i dati sono leggibili!
Mettere una password al BIOS potrebbe già essere una sicurezza in più ma è sempre possibile che qualcuno stacchi fisicamente l'hard-disk collegandolo ad un altro PC e montandolo come descritto. Probabilmente la soluzione più sicura sarebbe quella di utilizzare filesystem criptati ma il loro uso al momento è decisamente poco frequente in ambito casalingo.

venerdì 9 gennaio 2009

Recupero di dati da un volume FAT32 corrotto

Racconto di un'esperienza di recupero di dati da una partizione FAT32 con l'intestazione danneggiata
Inizio il nuovo anno con un bel problema. Il "vecchio" pc fisso (un Olidata con processore AMD da 1.8GHz ) non ne vuole più sapere di ripartire: è vero lo stavo usando molto poco negli ultimi mesi, siccome il portatile è molto più comodo, ma non pensavo mi abbandonasse così!
I sintomi sono questi: all'accensione parte il boot loader (uso grub perché ho windows 98, windows XP e Ubuntu linux in multi boot: pessima scelta, ma è un altro discorso), si blocca con "error 17" ancora prima di presentare la lista delle opzioni. Quasi sicuramente il problema è (solo?!) l'hard disk. L'occasione è buona per un esperimento di recupero dei dati.
Occorrente:
  • Un PC con hard disk danneggiato
  • Una chiavetta USB da almeno 1Gb
  • Un hard disk esterno USB con abbastanza spazio libero da contenere i dati da recuperare.
  • Un altro PC funzionante con connessione a internet.

Avvio del sistema

Il primo passo è accedere al PC senza sfruttare l'hard disk: scarico l'immagine ISO dell'ultima versione di Ubuntu (la 8.10, versione desktop), la masterizzo e tento il boot da CD. Purtroppo i guai non vengono mai da soli: il lettore CD aveva già dato segni di cedimento in passato (questo PC è proprio da buttare!) ma questa volta non ne vuole proprio sapere di partire; emette strani suoni e dopo alcuni tentativi falliti decido di tentare un altra strada. Il secondo tentativo ha esiti migliori. Scarico UNetbootin, un software che permette di creare una installazione di una distribuzione linux avviabile da chiavetta USB. L'interfaccia grafica è chiarissima: infilo la chiavetta USB da 1G, seleziono l'immagine ISO appena scaricata e in pochi minuti la mia chiavetta è pronta. Dal BIOS del PC danneggiato imposto la sequenza di avvio in modo che tenti, come prima cosa, l'avvio da chiavetta, resetto ed ecco finalmente Ubuntu Linux. La versione che parte è "live", cioè viene eseguita senza essere installata sull'hard disk, ma le funzionalità presenti dovrebbero essere sufficienti per una verifica dei problemi del disco e per un eventuale recupero dei dati. Il caricamento è piuttosto lento, probabilmente a causa delle porte USB versione 1.1, ma non è la velocità che mi interessa. Durante l'avvio il sistema cerca di montare le partizioni presenti sul disco rigido e infatti vedo scorrere diversi errori: è la conferma che il problema è proprio l'hard disk.

Verifica dei problemi

Una volta avviato il sistema (interfaccia grafica con diverse applicazioni), imposto nel menù System la tastiera italiana (il default è quella americana) e apro un terminale. Il disco viene visto e riconosciuto dal sistema come /dev/sda e l'MBR è leggibile in quanto il comando
sudo fdisk /dev/sda
(seguito poi dall'istruzione 'p') stampa correttamente la tabella delle partizioni.
È una buona notizia.
L'hard disk è suddiviso in diverse partizioni. Mi interessa recuperare i dati di una partizione formattata con FAT32 che si chiama /dev/sda6. Tento di montarla:
sudo mkdir /media/hd
sudo mount -t vfat /dev/sda6 /media/hd
mi risponde:
mount: /dev/sda6: can't read superblock
questa non è una buona notizia.
Provo a eseguire il programma di verifica e riparazione del filesystem FAT32
sudo fsck.vfat -v -l -r /dev/sda6
Risponde:
Read 512 bytes ad 0: Input/output error
Altra brutta notizia: non è possibile nemmeno leggere i primi 512 bytes del volume, quelli dove si trova l'header del filesystem (vedi specifiche FAT32). Voglio capire esattamente quali parti della partizione sono corrotte, uso badblocks, un programma che generalmente viene utilizzato automaticamente dalle varie versioni di fsck quando richiamate con l'opzione -c; in questo caso lo eseguo manualmente impostando una dimensione arbitraria dei blocchi a 512 bytes:
sudo badblocks -s -v -c1 -b 512 -o badblocks.out /dev/sda6
mi restituisce nel file badblocks.out una lista di 32 blocchi danneggiati, precisamente i primi 32. Questa volta c'è una notizia buona e una cattiva: la buona è che il settore contenente i dati è sicuramente oltre il 32mo blocco, cioè i dati sono tutti leggibili; la cattiva notizia è che è illeggibile tutta l'intestazione del filesystem e probabilmente una parte della prima copia della FAT, inoltre, siccome è essenziale per il funzionamento del filesystem e non può essere allocata altrove, il filesystem non è riparabile nel punto in cui si trova.
Riesco a dedurre (come ho fatto lo spiegherò in un altro post altrimenti mi dilungo troppo) che in realtà la prima copia della FAT inizia al 33mo blocco quindi entrambe le copie sono intatte: devo solo ricostruire l'intestazione.

Recupero dei dati

Una grande possibilità dei sistemi linux è quella di montare un file come se fosse una partizione fisica, sfruttando i "loop device". Ho a disposizione un hd esterno usb, completamente formattato con NTFS, con 30 Gb liberi, a me ne bastano 20 (la dimensione del volume danneggiato). L'hd viene riconosciuto automaticamente da Ubuntu ed è subito disponibile. Prima di tutto travaso tutto il contenuto del volume in un file sostituendo la parte illeggibile con degli zeri:
dd ibs=512 obs=512 skip=32 seek=32 if=/dev/sda6 of=sda6.data
(ci vuole un bel po' di tempo, probabilmente sempre a causa dell'USB1.1)
Poi creo su questo file un filesystem di tipo FAT32:
mkfs.vfat -F 32 -s 32 -S 512 -v sda6.data
una spiegazione dei parametri:
-F 32 indica di creare un fs di tipo FAT32 (esiste anche FAT16 FAT12)
-S 512 indica di considerare settori da 512 byte
-s 32 indica che ogni cluster (unità di allocazione minima di un file) è composto da 32 settori (cioè 512 * 32 = 16Kb). Il fatto che i clusters debbano essere di 16 Kb l'ho ricavato da considerazioni sui dati che spiegherò in un altro post.
-v è solo per avere un output più prolisso
Fatto questo provo a montare il file, solo per vedere se è corretto; non vedrò ancora i miei dati ma solo un filesystem vuoto siccome le FAT sono state sovrascritte da mkfs:
sudo mount -o loop -tvfat sda6.data /media/hd
Bene funziona. Lo smonto di nuovo.
sudo umount /media/hd
Ora che ho in sda6.data un filesystem vuoto con un header corretto provo a sostituire le due copie delle FAT vuote con quelle piene presenti nella partizione originale e, come abbiamo visto, integre.
La dimensione di una FAT del mio volume è di 5118 Kb (come faccio a saperlo lo spiego nell'altro post che farò), le due copie occupano dunque 10236 Kb e partono dopo 16 Kb dall'inizio del volume (32 blocchi da 512 byte di header danneggiati). In realtà oltre a copiare le FAT devo anche copiare i cluster contenenti la root directory che sono stati sovrascritti quando ho generato il filesystem. La root directory è verosimilmente contenuta nei primi clusters dopo le FAT (essendo la prima creata) quindi abbondo un po' e prendo 30000 Kb. Notare che avrei potuto ricopiare nuovamente tutto il volume per maggior sicurezza, ma siccome ci vuole molto tempo evito di farlo.
Le estraggo in un file:
sudo dd bs=1024 count=30000 skip=16 if=/dev/sda6 of=sda6.fat
e inserisco il file nel punto corretto all'interno di sda6.data.
Per fare questo non sono riuscito a trovare un comando unix (se qualcuno lo conosce mi "faccia un fischio"), ma ho usato uno script python di poche righe (la versione live di Ubuntu comprende anche l'interprete python)
f=open('sda6.fat')
fat=f.read()
f.close()
f = open('sda6.data', 'r+')
f.seek(16384) #inizio a scrivere dopo i primi 16 Kb
f.write(fat)
f.close()
ora monto nuovamente il volume
sudo mount -o loop -tvfat sda6.data /media/hd
ls /media/hd
e...
EUREKA!
ecco tutti i miei dati: non mi resta che copiarmeli e sono salvi.

domenica 21 dicembre 2008

memoria storica di internet

Ho trovato questo interessante sito web.archive.org che mantiene vecchie versioni di tantissime pagine internet. Volete vedere come si presentava un sito 5 o addirittura 10 anni fa? Allora andate su web.archive.org, digitate il nome del sito e cliccate su "Take me back". La visualizzazione è piuttosto lenta ma dopotutto non è ottimizzato per un uso quotidiano...
Penso che sia una importante iniziativa per mantenere la memoria storica di tutte le informazioni digitali su internet: si possono tenere giornali stampati e riguardarli tra 10, 20, 100 anni... ma sarà lo stesso per le informazioni che si trovano solo sui siti internet?

domenica 23 novembre 2008

Un occhio su internet

Ecco una nuova frontiera delle ricerche che esce dai laboratori per diventare qualcosa di "usabile". Riporto la notizia che ho letto in un post dell'ottimo blog di Paolo Attivissimo: un motore di ricerca per immagini che si chiama TinEye. Non si tratta di una copia della "ricerca immagini" che troviamo su Google e molti altri motori di ricerca. Questi motori cercano le immagini in base al testo che le circonda, in questo caso invece viene sftuttata una una tecnologia che "vede" le immagini in internet e le trova per somiglianza come faremmo noi con i nostri occhi. In pratica è possibile inserire un immagine nel motore (o il suo indirizzo internet) e in pochi decimi di secondo verrano ricercate tutte quelle simili. Attualmente il numero di immagini indicizzate non è altissimo ma ho fatto alcune prove e il risultato è molto buono. Ad esempio cercando questa immagine:
Si trovano anche queste:
Che sono ovviamente ricavate dalla prima con ritagli e ritocchi; a prova del fatto che l'algoritmo di ricerca è abbastanza elaborato.
Un altro utilizzo che mi viene in mente è quello di cercare eventuali pubblicazioni di foto fatte da noi: qualcuno sta usando le vostre foto su internet senza avere una vostra autorizzazione? Con TinEye dovreste riuscire a trovarle. Oppure un giornale documenta fatti recenti con immagini di repertorio? Basta inserire l'immagine nel motore di ricerca e subito potremo vedere se è già stata usata altrove. Penso che questo tipo di ricerca si evolverà velocemente e sarà sempre più usata: staremo a vedere gli sviluppi.

domenica 2 novembre 2008

Riflessione sui social network

In questi giorni sta diventando disponibile per gli utenti di blogger il gadget "Lettori" con l'elenco degli utenti che seguono il proprio blog. Una funzionalità che rende la piattaforma di Google più vicina ad un social network, cioè permetterà di rendere più evidenti gruppi di interesse ed amicizie tra gli utenti.
In questi ultimi mesi le piattaforme di social network, e parlo soprattutto di Facebook, stanno letteralmente spopolando. Non dico questo basandomi su statistiche ufficiali, ma riporto l'impressione che ho avuto parlando con diverse persone che conosco e sperimentando io stesso Facebook: ho trovato tantissime persone che conosco, molte più che tra i blog, i siti o i forum. Ormai quello che viene comunemente chiamato "Web 2.0" non è più il futuro ma la realtà.
Mi chiedo: perché  investire tempo e denaro in queste piattaforme? Perché spingere sempre di più le persone a "vivere" i loro rapporti, esprimere opinioni, raccontare se stessi sul web? Una parziale risposta l'ho avuta indirettamente ad un seminario a cui ho partecipato settimana scorsa: il futuro della pubblicità e anche delle indagini di mercato è su internet, e soprattutto sulle piattaforme di social network. Provate ad immaginare: un software molto complesso analizza tutto ciò che scrivete, valuta le vostre amicizie, considera le cose che preferite guardare e... può proporvi spazi pubblicitari ultra personalizzati oppure può stabilire se alcuni prodotti vi piacciono oppure li odiate. Queste sono tutte cose che nell'economia attuale valgono un sacco di soldi! Software di questo tipo non sono solo esperimenti ma esistono e funzionano già oggi: si basano soprattutto sull'analisi semantica (capacità di comprendere il significato delle parole e delle frasi) e diventeranno sempre più precisi. Un esempio "rudimentale" di software che si basa sull'analisi semantica (con altri scopi) lo possiamo trovare da diversi anni nel correttore grammaticale di Word, ma in futuro saranno sempre più importanti e  a breve avremo a che fare spesso con programmi di questo tipo. Infatti quello che già oggi viene chiamato "Web 3.0" sarà, dicono gli analisti, basato sulla semantica: ad esempio sarà possibile fare una domanda ad un motore di ricerca, proprio come la faremmo ad una persona, ed ottenere una risposta. Vedremo se il tempo confermerà la previsione.
P.S. Non è che voglia demonizzare queste cose mettendole in una luce negativa: come al solito sono strumenti e dipende dall'utilizzo che ne facciamo, inoltre le cose è sempre bene saperle!

martedì 9 settembre 2008

Old news

Mi trovo ancora una volta a scrivere di Google e di come stia "invadendo" con il suo stile moltissimi campi in cui la ricerca delle informazioni è cruciale. L'ultima notizia è l'inizio di un lavoro di digitalizzazione di vecchi giornali ricercabili da google news. Ecco un esempio che ho trovato.
Ovviamente per ora sono disponibili solo alcune testate negli U.S.A. ma chissà se prima o poi si vedrà qualcosa del genere anche in Italia.
Molto interessante la ricerca del testo evidenziata direttamente nelle immagini (già usata da Google in altre applicazioni come Books o nella ricerca dei brevetti)
Colgo l'occasione per una riflessione.
Da una parte sembrerebbe  che Google voglia concorrere con Microsoft nella fornitura di software (vedi Chrome, Google Docs, Picasa) ma sono convinto che il suo vero obiettivo sia il possesso delle informazioni, a partire da quelle condivise (giornali, siti web, mappe, ...) fino a quelle personali (posta, documenti, fotografie, diario...): la logica è: "ti fornisco un software gratuito ma tu mi lasci informazioni su di te".
Con questo non voglio dire che Google sia in malafede perché le possibilità di ricerca che fornisce sono utilissime a tutti e io, personalmente, non ho problemi a lasciare le mie foto o i miei documenti sui server di Google, anche se verranno utilizzati per tracciare il mio profilo ed inviarmi pubblicità "mirata" ...ma bisogna saperlo!

mercoledì 3 settembre 2008

Google lancia il suo nuovo browser: Chrome

Non scrivo da tanto tempo ma meglio raramente che mai! Ieri sera Google ha reso disponibile il download del nuovo browser Chrome: l'ho installato subito per curiosità e perché sono sempre interessato alle novità di Google. Risparmio le discussioni sulle caratteristiche e racconto solo la mia
 esperienza sottolineando le cose che più mi hanno colpito.
La prima nota positiva è che il download e l'installazione sono rapidissimi, l'applicazione è leggera ed essenziale come nello stile di Google. La prima cosa che ho notato è che l'indirizzo e i pulsanti di navigazione sono sotto i tab delle schede e non sopra come in Firefox e IE, cioè nel punto più "logico" (ogni scheda ha un indirizzo diverso e una diversa storia di navigazione...).
La casella dell'indirizzo è una vera e propria casella di ricerca: non è più necessario digitare precisamente l'indirizzo della pagina ma sono sufficienti alcuni indizi (parte del nome ,titolo) e vengono mostrati "al volo" molti suggerimenti sia dalla cronologia che dalla ricerca in Google. In realtà questa funzionalità c'era già in Firefox3 ma implementata da Google, che è maestra nelle ricerche, funziona molto meglio.
Altra nota positiva è il considerare le schede come vere e proprie applicazioni (esiste anche un task manager che indica l'utilizzo di memoria e di CPU). Questo proietta il browser in un futuro (ma forse già presente) di un web che non è più un insieme di pagine di testo e immagini ma una vera e propria piattaforma di applicazioni.
Tra le funzionalità per sviluppatori ho notato una bella "console javascript" che sembra molto potente, ma mi riservo di provarla.
Bella la traduzione in italiano che, rompendo un po' gli schemi, ha adottato un linguaggio molto vicino a quello parlato tutti i giorni, ad esempio le schede delle opzioni sono "Impostazioni di base", "Piccoli ritocchi" e "Roba da smanettoni". Sono anche riusciti ad essere simpatici!
Veniamo alle cose negative.
Il primo problema fastidiosissimo è il malfunzionamento della scroll bar se si usa, come me, un touchpad synaptic: funziona lo scroll verso il basso ma non verso l'alto! Il bug è già segnalato
ma potevano accorgersene prima del rilascio!
Altra nota negativa è, paradossalmente, la mancanza della Google Toolbar che uso molto e che mi manca: ho verificato che non è installabile su Chrome.
In sintesi mi piace ma è ancora una beta, comunque penso che inizierò ad usarlo, sicuramente crescerà molto (e vedremo tra qualche mese come saranno le percentuali di utilizzo dei vari browser!)

giovedì 10 gennaio 2008

Macchina virtuale per VMware "da zero" (parte II)

Provo ora a costruire un hard disk virtuale. La prima buona notizia è che, a differenza del file di configurazione vmx, il file vmdk, che definisce i dischi, ha una documentazione ufficiale scaricabile dal sito di VMware. Mi sembra abbastanza chiara. Prima di tutto viene definito cosa è un disco virtuale. In generale un disco può essere composto da una catena di link dove il primo elemento è il disco base e tutti i successivi (collegati in catena) sono i delta link che vengono creati ogni volta che viene generato uno snapshot (cioè una foto istantanea) del disco. Questa architettura permette di avere quindi delle istantanee in momenti precisi e poter eventualmente ripristinare il disco a questi punti. A me per ora interessa creare solamente un "disco base", quindi cercherò di evitarmi complicazioni in questo senso. Ogni link è composto da uno o più extent, un extent è uno spazio "fisico" nel quale sono memorizzati i dati e generalmente è un file del sistema "reale" (ma potrebbe essere anche un hard disk reale o una partizione di un hard disk reale)
  • il link può utilizzare un singolo extent oppure l'insieme di più piccoli extent
  • lo spazio utilizzato può essere allocato tutto in fase di creazione del disco, oppure può crescere dinamicamente nel momento in cui c'è l'esigenza di archiviare i dati.
La struttura di link di un disco virtuale è definita in un file di configurazione ("descriptor file", cioè un file di testo con estensione .vmdk) Dopo questa premessa (essenziale per capire) inizio a creare il file di configurazione (xubuntu.vmdk) secondo le specifiche. Prima di tutto la versione che è 1:
version = 1
Successivamente devono essere inseriti due parametri che definiscono un identificativo univoco del link (CID) e l'identificativo del link padre (parentCID). Gli identificativi sono valori casuali a 32bit e nel file di configurazione sono espressi in forma esadecimale. Nel mio caso il disco base non ha un link padre, quindi parentCID deve essere impostato ad un valore predefinito che da specifiche è (~0x0) (cioè la negazione di uno zero che nella rappresentazione esadecimale diventa ffffffff). In pratica i parametri da impostare sono:
CID=fffffffe
parentCID=ffffffff
Il parametro successivo consente di definire il tipo di disco. Tra le varie opzioni possibili scelgo "twoGbMaxExtentSparse" che genera, per ogni link, diversi extent (con una dimensione massima di 2Gb ciascuno) e alloca lo spazio dinamicamente (così non ho bisogno di occupare effettivamente tutto lo spazio del disco virtuale. Scrivo quindi: createType="twoGbMaxExtentSparse" Ora devono essere definiti i singoli extent. Vorrei un disco da 10Gb, quindi lo costruisco con 5 extent di 2Gb l'uno. La sintassi per definire un extent è la seguente:
modalità dimensione tipo nome
modalità
indica se è in scrittura o in sola lettura, imposto RW (lettura e scrittura)
dimensione
è la dimensione dell'extent espressa in settori, 1 settore = 512 byte. Se voglio un extent da 2 Gb scrivo 2 * 1024 * 1024 * 1024 / 512 = 4194304
tipo
uso SPARSE che indica che lo spazio viene allocato solo quando serve
nome
è il nome del file che contiene i dati. Utilizzando la sintassi consigliata lo chiamo xubuntu-s0001.vmdk la "s" indica che è di tipo SPARSE mentre 0001 è un numero progressivo. Riassumendo scrivo:
RW 4194304 SPARSE "xubuntu-s0001.vmdk"
RW 4194304 SPARSE "xubuntu-s0002.vmdk"
RW 4194304 SPARSE "xubuntu-s0003.vmdk"
RW 4194304 SPARSE "xubuntu-s0004.vmdk"
RW 4194304 SPARSE "xubuntu-s0005.vmdk"
L'ultima parte del file di descrizione del disco definisce come sarà visto l'hardware dalla macchina virtuale. È necessario definire il tipo di interfaccia (adapterType) che imposto a "ide" e la geometria del disco; uest'ultima mi risulta un po' più complessa da capire, e deve essere coerente con la dimensione effettiva del disco. Un'altra volta proverò ad approfondire il significato dei parametri, per ora mi limito ad utilizzare questa tabella. Quindi, copiando, scrivo:
ddb.adapterType = "ide"
ddb.geometry.sectors = "63"
ddb.geometry.heads = "16"
ddb.geometry.cylinders = "16383"
Ora il file di configurazione dovrebbe essere completo. Mi resta solo un dubbio. I file del disco (xubuntu-s0001.vmdk) vengono generati direttamente da VMPlayer all'avvio o devono già esistere? Proviamo a partire senza. Niente: non parte! Proviamo a partire generando dei file vuoti... non parte! Probabilmente è necessario generare i file degli extent già nel formato corretto. La cosa è diventata un po' più complessa del previsto. Ma penso che questa sarà un'altra puntata!

mercoledì 9 gennaio 2008

OpenID

Da qualche tempo ho notato che è possibile autenticarsi per i commenti su blogger utilizzando un OpenID ed il nome mi ha incuriosito. L'idea è intrigante: un solo utente per tutto internet (almeno in teoria). Purtroppo c'è anche il rovescio della medaglia: nella definizione in inglese su wikipedia vengono sottolineati alcuni aspetti critici sul piano della sicurezza. Secondo me non è da trascurare nemmeno il problema della privacy: se ogni sito che supporta OpenID deve verificare le credenziali sul server del provider OpenID, indirettamente quest'ultimo può conoscere i siti visitati dall'utente. Comunque la cosa merita un approfondimento: prima o poi cercherò di capirci qualcosa in più.

sabato 5 gennaio 2008

Macchina virtuale per VMware "da zero" (parte I)

Mi trovo ad aver bisogno di un PC con linux ma non possiedo un hardware sul quale installarlo. Ho però un bel portatile con Windows Vista 1G di RAM e molto spazio sull'HD: vorrei provare ad installare Ubuntu su un server virtuale con VMWare. Nulla di particolare: ci sono molte guide in rete per questo tipo di operazione ma proviamo in diretta. Gli ingredienti sono:
  • VMWare Player (scaricabile dal sito di VMWare)
  • Immagine ISO del CD di installazione di XUbuntu Linux (Ho scelto la distribuzione Xubuntu al posto della "sorella maggiore" Ubuntu poiché è più leggera.
Prima di tutto è necessario generare una macchina virtuale da utilizzare per installare il sistema operativo. Su internet esiste un ottimo sito (EasyVMX) che permette di configurare online la propria macchina virtuale e scaricarla. Purtroppo, sebbene l'avessi già usato con buoni risultati altre volte, la macchina generata da EasyVMX non ne vuole sapere di funzionare: sembra che vada tutto bene ma poi dopo alcuni secondi l'applicazione non risponde più. Tempo sprecato. Decido di tentare un'altra strada: creare a mano i file di configurazione! Dopotutto è sufficiente un file di testo contenente la configurazione ed eventualmente i file di descrizione degli hard disk virtuali. È l'occasione per sperimentare qualcosa di nuovo! Per fortuna qualcuno ha già pensato di scrivere qualcosa sulla sintassi dei file di configurazione vmx! Seguirò le regole suggerite dall'autore del sito: "i file di configurazione piccoli sono meglio di quelli grandi" e "fatto in casa è meglio". Iniziamo. Creo il file xubuntu.vmx contenente il minimo indispensabile:
config.version = "8"
virtualHW.version = "6"
guestOS = "ubuntu"
Provo a far partire la macchina: non farà nulla ma almeno vediamo se parte. Tutto OK: mi dice che non trova il sistema operativo :). Dopo aver eseguito VMware Player con la configurazione creata, vengono aggiunte automaticamente alcune righe al file .vmx: in particolare
floppy0.fileName = "A:"
Questa non mi piace: ha impostato di default un lettore floppy mappato sul drive A: del mio PC reale, siccome non ho il floppy, per evitare problemi la sostituisco con:
floppy0.present = "false"
Inizio ad aggiungere "pezzi" alla macchina. Per la scheda di rete scelgo la modalità NAT che permette di condividere semplicemente la connessione a internet del PC reale e imposto "e1000" come modello di scheda siccome è consigliato per sistemi operativi "moderni":
ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "e1000"
ethernet0.connectionType = "nat"
La RAM (deve essere un multiplo di 4) la imposto a 256 Mb... meglio non esagerare, altrimenti mi occupa tutta quella reale!
memsize = "256"
La scheda audio (impostazioni minimali consigliate):
sound.autodetect = "TRUE"
sound.fileName = "-1"
sound.present = "TRUE"
Ora aggiungo il lettore CD-ROM mappandolo sull'immagine ISO di Xubuntu:
ide1:0.present = "true"
ide1:0.deviceType = "cdrom-image"
ide1:0.filename = "xubuntu-7.10-desktop-i386.iso"
ide1:0.startConnected = "TRUE"
Provo di nuovo ad avviare la macchina: manca ancora l'hard disk ma il CD di Xubuntu parte anche come "live CD" e posso comunque vedere se funziona. Anche questa volta la fortuna mi assiste: funziona perfettamente, compreso l'accesso a internet. Ora viene la parte che mi sembra più difficile: aggiungere un hard-disk. Nella configurazione aggiungo
ide0:0.present = "TRUE"
ide0:0.deviceType = "disk"
ide0:0.filename = "xubuntu.vmdk"
e dovrebbe essere sufficiente. Ora devo costruire il file di configurazione del disco (.vmdk)... ma meglio rimandare alla prossima puntata!

Iniziamo!

Ci provo un'altra volta. Dopo anni passati a "succhiare" informazioni dalla rete vediamo se riesco a mettere la mia esperienza a disposizione di chi ne dovesse avere bisogno. Gli argomenti di cui parlerò riguarderanno la tecnologia, principalmente informatica e simili... ma chi lo sa... potrebbero esserci anche altre cose. Mi auguro buona fortuna da solo!