Debian, Ubuntu, Linux, Gnu, software libero Ubuntu, Quantal Quetzal, Raring Ringtail, Linux, Ubuntulandia, Giochi tag foto 3 Mandelbulber, grafica, multimedia, Linux, Ubuntulandia Conky, Ubuntu, Linux, Ubuntulandia, Quantal Quetzal, Raring Ringtail Python, Ubuntu, Linux, programmazione Ubuntu 13.04, Raring Ringtail, Canonical, Linux Android, Linux, Ubuntu Internet Explorer, Firefox, Chrome, Safari, internet browsers, Ubuntulandia Linux Mint, distribuzioni, Ubuntulandia

giovedì 30 settembre 2010

Fidonet è una rete ed un sistema interconnesso per lo scambio ed il trasporto file e messaggi usato dalle BBS, prima dell'esplosione del World wide web




Fidonet è una rete ed un sistema interconnesso per lo scambio ed il trasporto file e messaggi usato dalle BBS, prima dell'esplosione del World wide web, e venne istituito da Tom Jennings nel 1984. Successivamente vennero aggiunti altri software BBS che supportavano lo stesso protocollo.

Nel giugno 1984 Tom Jennings collegò la sua BBS a quella di John Madill: nacque così FidoNet, la prima rete di BBS. Essa salì da 2 a 50 nodi nel giro di tre mesi e per l'inizio dell'85 arrivò a 160. I primi nodi FidoNet utilizzavano PC IBM con DOS 2.0 e software distribuito gratuitamente che veniva velocemente migliorato e ottimizzato dagli stessi utenti per riuscire a scambiare più dati in meno tempo (e quindi risparmiare sul costo della linea telefonica). Si stima che nel 1991 i nodi FidoNet fossero più di 10.000, sparsi in tutto il mondo.

Era il tempo della telematica degli hacker, alla quale era difficile avvicinarsi se non si possedevano solide basi informatiche.

La gestione e le regole della rete erano lasciate completamente agli utenti, tanto che nella prima versione di FidoNet l'area messaggi pubblica fu chiamata "anarchia", con il preciso scopo di informare gli utenti che avrebbero potuto farne ciò che volevano. "Non offendersi e non lasciarsi offendere facilmente" divenne l'unica regola del network. Con FidoNet nacque la "telematica di base": lo scambio di informazioni fatto dal basso, dai cittadini, senza ubbidire a nessun ordine autoritario. Ai giorni nostri è possibile fare un lontano paragone tra la telematica di base e il fenomeno dei Blog d'informazione, che fanno rivivere lo sviluppo della rete fatto dal basso, dagli utenti.

Panoramica.
Fidonet è un sistema basato sul dialup, nel quale ogni nodo è connesso all'altro. Lo scambio di file avviene secondo un insieme di protocolli di rete. Dato che le connessioni utilizzano la stessa linea telefonica dell'utente della BBS, Fidonet effettua i trasferimenti solo in precise ore del giorno (Zone Mail Hour, tipicamente alle 4:00 del mattino).

Oggi Fidonet supporta uno standard proprietario chiamato Netmail (simile alle e-mail di Internet) per la posta, Echomail (News in stile Usenet), per le notizie ed il trasferimento file. Recentemente è stato definito uno standard per descrivere le modalità di trasferimento dei messaggi e dei file Fidonet mediante il protocollo TCP/IP, in questo modo è possibile interfacciare Fidonet con Internet.

Al giorno d'oggi sono ancora disponibili alcune conferenze Echomail di Fidonet nella gerarchia delle notizie Usenet; inoltre vi sono dei "portali" utilizzati per lo scambio di messaggi tra Internet e Fidonet.

Fidonet è una rete libera ed è principalmente utilizzata da appassionati di computer (molti di loro sono hackers e radioamatori).

I software normalmente usati includono un mailer, per lo scambio di file e messaggi tra sistemi; un tosser per creare "pacchetti" di messaggi, gestire il routing di base e a volte per interfacciarsi agli utenti finali; varie utilites quali compressori di files, editor di mail, ecc. Fidonet ha perso importanza a causa di Internet ma è ancora molto popolare in Russia.

Struttura.
Ogni BBS appartenente alla rete Fidonet è inquadrata in una struttura gerarchica ad albero ed ha un indirizzo numerico su base geografica: le BBS sono dei nodi della rete, mentre gli utenti sono punti, cioè foglie dell'albero. Ogni BBS Fidonet, comunque, riceve e spedisce messaggi solo per via gerarchica, cioè solo a BBS (nodi) di livello superiore (uplink) o inferiore (downlink) al suo, e mai direttamente fra pari livello tranne che per le BBS di livello più alto.

Ogni utente ed ogni BBS del sistema Fidonet ha un indirizzo interno che permette di inviare matrix (o netmail), la versione Fidonet della posta elettronica.

L'indirizzo Fidonet è composto di quattro numeri, della forma Z:NNN/HNN.P;
  • Z Zona; esistevano sei zone:
    1. USA, Canada e Caraibi;
    2. Europa e russia europea;
    3. Asia continentale e Australia;
    4. America Latina;
    5. Africa;
    6. Asia del Pacifico
  • NNN Net: per esempio l'Italia è divisa in cinque Net, da 331 a 335.
  • HNN Hub e Nodo: per ogni net possono esistere fino a dieci Hub che si occupano di ricevere, smistare e trasmettere messaggi e file ai Nodi.
  • P Point: il singolo utente. Anche se tecnicamente non fa parte di Fidonet, perché non collegato permanentemente, il nodo Fidonet a cui l'utente è registrato memorizza i messaggi a lui destinati, che l'utente scarica al momento della connessione con un software client apposito.
Ogni zona e ogni net hanno un responsabile che si occupa di gestire e far rispettare le policy di Fidonet. Nonostante il tempo delle BBS su linea telefonica commutata sia ormai finito da un pezzo in Europa e in America, la rete Fidonet non è morta, ma molti nodi si sono trasferiti su internet: per mandare una email ad un utente di un particolare nodo Fidonet si può usare un URL del tipo
nome.cognome@f.n.z.fidonet.org

Sotto il profilo della comunicazione elettronica, Fidonet ha un grande merito ed un grande demerito. Il grande merito è, storicamente, quello di aver sviluppato, in anni in cui l'accesso ad internet era privilegio di ambienti scientifici, accademici o militari, una tecnologia di comunicazione elettronica sostanzialmente accessibile a tutti. Bastano un computer (un 286 o anche meno), un disco da 20Mb, una presa telefonica ed un modem per gestire una BBS Fidonet, un nodo della rete. Il grande demerito è invece quello di non aver evitato i rischi di una lenta degenerazione burocratica al suo interno che, poco a poco, stanno soffocando lo sviluppo stesso della propria originale tecnologia. Ma, come cercherò di dimostrare, forse non si poteva fare altrimenti.

La Fidonet degli inizi è orgogliosamente anarchica ed utopistica ("la comunicazione elettronica abbatte i costi e scavalca le frontiere"), gioiosamente creativa nello sviluppo di una propria tecnologia il più possibile svincolata dalle varie piattaforme hardware, giustamente diffidente di qualunque forma di discriminazione nell'accesso alla rete.

Eppure già agli esordi, nel lontano 1985, i padri fondatori avevano felicemente intuito quale poteva essere il rischio più subdolo e pernicioso per una rete fondata solo sull'apporto volontario di hobbysti ed avevano fissato le due regole basilari del comportamento da tenere in Fidonet:
Thou shalt not excessively annoy others.
Thou shalt not be too easily annoyed.
che Giorgio Rutigliano, nella versione italiana della policy generale, traduce, in modo non proprio impeccabile, con:
Non si deve disturbare troppo gli altri.
Non ci si deve seccare troppo facilmente.
Sembra facile, e in effetti ai primordi della rete la cosa funziona abbastanza bene. Anche perché per fare il sysop ci vogliono ancora conoscenze tecniche non banali, perché gli utenti possono scrivere solo collegandosi in interattivo alle BBS e sopratutto perché in Fidonet ci si scambia solo netmail (matrix), quindi la comunicazione rimane da uno ad uno, e la velocità di trasmissione di questi messaggi (ricordiamoci che si parla di un'epoca in cui i modem a 1200 bps rappresentavano un lusso) non era nemmeno paragonabile a quella dell'e-mail di oggi.

Ma ci pensa un sysop texano, Jeff Rush, a inventare l'echomail e complicare le cose. Nella rete si apre subito un furioso dibattito: alcuni sysop paventano l'aumento vertiginoso dei volumi di mail (che ci si scambia su normali linee telefoniche nelle ore notturne) e profetizzano che con l'avvento dell'echomail "la rete crollerà sotto il suo stesso peso". Chiaramente non avviene nulla di tutto questo. Un po' perché i modem diventano sempre più veloci (US Robotics sta per commercializzare il suo mitico Courier 14400 HST), un po' perché ci si affretta a fissare la topologia di distribuzione e a varare una gerarchia parallela di coordinatori, il cui compito è appunto quello di tenere sotto controllo il flusso dell'echomail.

Per quanto riguarda l'aspetto che più ci interessa, la scelta di Fidonet è radicalmente diversa da quella di Usenet. Sono i sysop che pagano le bollette telefoniche, quindi il rapporto segnale/rumore delle conferenze echomail deve essere mantenuto a un livello sufficientemente alto. In buona sostanza si decide per la moderazione "a posteriori" (retro-moderazione) della stragrande maggioranza delle conferenze. E, nel corso degli anni, la figura del moderatore acquista un'importanza sempre maggiore anche perché tale figura, che deriva la sua legittimazione dal coordinamento echomail che almeno in Italia lo nomina e ne controlla l'operato, ha poteri sanzionatori sugli utenti potendo disporre di tutta una gamma di provvedimenti disciplinari che vanno dall'ammonimento formale allo sgancio di un nodo dalla conferenza. Secondo le regole fidonet, infatti, ogni sysop è responsabile del comportamento in rete dei propri utenti, a meno che non dimostri di aver compiuto ogni ragionevole sforzo per "educare" la propria utenza al rispetto delle regole.

Aggiungete a questo scenario offline reader sempre più evoluti e in buona sostanza auto-installanti e una facilità d'installazione del software di gestione delle BBS sconosciuta agli esordi, ed avrete abbastanza chiare le ragioni per le quali la rete Fidonet è cresciuta per anni in modo quasi esponenziale, almeno finché non è arrivato il grande boom di internet.

Malgrado tutto questo, Fidonet si è comunque ampiamente meritata, in alcuni periodi della sua storia, l'appellativo di Fight-o-net, perché comunque le tensioni rimangono latenti e prima o poi esplodono. Tra utente ed utente, tra sysop e sysop, tra coordinatore e coordinatore.



Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:


mercoledì 29 settembre 2010

Comandi Unix buffi: tar

Il comando tar – acronimo di Tape ARchive – è utilizzato per convertire un gruppo di file in un archivio. Un archivio è un file che contiene altri file e informazioni necessarie per recuperare la loro forma originaria.

Originariamente tar è nato per sopperire alla necessità di un sistema di memorizzazione su nastri magnetici (da quì il nome tar) ma può essere usato per archiviare file su qualunque tipo di filesystem.

Il comando
-T tmpdir


serve a specificare un'altra directory dove fare a scrivere i file temporanei di cui sort ha bisogno. In genere, infatti, viene usata /tmp, ma a volte può essere necessario spostarsi in caccia di posto libero. Tra l'altro, il GNU sort deve essere stato scritto da qualcuno abituato a lavorare sotto DOS: se infatti esso trova settata la variabile di ambiente TMPDIR, usa quel valore come directory di lavoro.


Questa volta tocca a tar. Il nome sta per "tape archiver", cioè archiviatore su nastro: ma oramai sei abbastanza smaliziato per sapere che le probabilità di usare il comando su un vero nastro sono ben poche. Intendiamoci: se il tuo sysadm ha configurato le cose per bene e tu hai un'unità nastro, puoi archiviarci i tuoi file scrivendo semplicemente tar c . (il punto è parte del comando, non finisce la frase!). Ma visto che tanto la risposta sarà più o meno

tar: can't open /dev/rmt0 : Permission denied


o qualcosa di simile, ti conviene lasciare perdere e metterti a leggere i veri usi del comando. Una nota: se non hanno migliorato la man page nelle ultime versioni, il GNU tar è proprio incomprensibile. Peccato.


Funzioni fondamentali.

Il comando mostrato sopra fa comunque già notare la prima peculiarità: non si usa il - davanti alle opzioni. Questo non è totalmente vero: in un impeto di bontà, nelle versioni attuali di tar è comunque possibile far precedere le opzioni dal carattere '-' senza che il sistema si preoccupi. In genere, comunque, la sintassi del comando è questa:

   tar {un gruppone di lettere} {un po' di parametri relativi     
alle lettere stesse} [ -I file_include ] file(s) [ -C directory file]
il che dice poco o nulla. Specificando qualcosa in più, scopriamo che alcune lettere del "gruppone" rappresentano le funzioni fondamentali del comando, e ce ne può essere una e una sola, che si mette in genere come primo carattere tanto per ricordarsi cosa si sta facendo. Le altre lettere possono essere presenti o no; se lo sono, e inoltre hanno dei parametri, questi sono indicati nello stesso ordine in cui la lettera corrispondente si trova nel gruppone. Non ci sono quindi problemi di parsificazione per il sistema; magari ne rimane qualcuno per il povero utente, che deve spostarsi avanti e indietro tra il gruppone e i parametri per capire chi si riferisce a cosa.

Il file non è un semplice nome, o per meglio dire una semplice espressione regolare come ad esempio "*": se infatti corrisponde a una directory, viene lanciata la ricorsione e quindi tar comincia a infilarsi nei meandri del file system riportando alla luce reperti imprevisti. La ricorsione è fatta per bene, e comprende anche i file i cui nomi iniziano con un punto e pertanto sono nascosti; insomma, se si vuole salvare tutto un sottoalbero basta partire da ".".


Le funzioni principali sono cinque: c, r, t, u, x.


  • c sta per crea: viene costruito un archivio con i file che si indicheranno nel resto del comando.
  • r sta per rimpiazza: i file che si indicheranno verranno aggiunti al fondo dell'archivio, che ovviamente deve esistere già. E se ce n'erano già con quel nome, ti chiederai? Nic problema! Per come funziona il comando, quando sono presenti più file con lo stesso nome ognuno viene scritto sul precedente, e quindi rimarrà solo l'ultimo.
  • t sta per testa: serve per vedere quali file sono presenti in un archivio.
  • u sta per update (aggiorna): è simile alla funzione r, ma se i file erano già presenti e non sono stati modificati si evita di sprecare spazio.
  • x sta per estrai: è la funzione che si usa per tirare fuori questi benedetti file dall'archivio! In realtà spesso non si dice nemmeno quali sono i file (anche per i problemi con path relativi e assoluti), e in questo caso si suppone che si vuole estrarre tutto.

il GNU tar, per non smentirsi, ne ha aggiunte altre due, che non sono comunque così necessarie almeno a mio parere:


  • A, che appende un altro file tar (e non un singolo file) all'archivio;
  • d, che verifica se ci sono differenze tra i file di un archivio e quelli che si trovano nella directory, in modo da sapere cosa è cambiato.

Ah, dimenticavo: il GNU tar permette sempre di scrivere per esteso i nomi delle funzioni, facendoli precedere da -- (due segni meno). Serve? non serve? per me è solo una perdita di tempo.


Funzioni modificanti.

Nel cosiddetto gruppone, ci sono davvero tante lettere. Parlerò qui solo delle principali, vista la mia solita pigrizia. Tanto non capita praticamente mai di usarle tutte! Come ho detto sopra, se la funzione ha un parametro, questo lo si trova bello ordinato dopo il gruppone stesso.

  • b nn indica quanti gruppi da 512 byte bisogna scrivere in un colpo solo (un blocco). Si usa solo quando si scrive su nastro, e in genere si lascia a 20 perché ottimizza la velocità di scrittura.
  • B costringe tar ad aspettare che sia completamente terminato il blocco di cui sopra, prima di scrivere. Se si usa tar come filtro, e lo si manda attraverso la rete, è facile che ci siano dei timeout e il sistema creda che i dati siano finiti: e ciò non è bello.l
  • f filename serve per dare il nome del file (vero o device che sia) da usare come archivio. Se non lo si scrive, tar comincia a controllare se la variabile di ambiente TAPE è settata a qualcosa. Sennò. si prende il valore di default, tipicamente /dev/rmt0. Se lo si scrive, si usa quello: caso speciale è il nome -, che sta per standard input o standard output a seconda di cosa sia più logico. In questo modo, il comando si trasforma automagicamente in un filtro, e i veri amanti di Unix si sentono immediatamente a casa.
  • h serve per dire a tar di leggere i file, o le directory, puntate dai link simbolici. In genere, infatti, viene semplicemente salvato il nome del link.
  • p permette di salvare, oppure di estrarre, informazioni supplementari sui permessi del file, come ad esempio il bit setuid. Tutto questo ovviamente se si è root: pensa altrimenti come sarebbe divertente creare programmi troiani!
  • v è la funzione "verbose", che dice tutto quello che vogliamo sapere quando creiamo un archivio o ne estraiamo dei file. Dopo un po', rimane una cosa talmente automatica che bisogna farsi forza per non aggiungerla quando non solo non è necessaria, ma anzi dà fastidio. Pensa che bello usare due tar uno accodato all'altro, come farò negli esempi, e vedere a video l'output di uno e dell'altro belli mischiati...
  • w serve per darci la possibilità di essere decisionisti. In pratica, tutte le volte che dovrebbe fare qualcosa, tar ci chiede conferma: se rispondiamo con una parola che inizia con y (minuscola), esegue l'azione, altrimenti lascia perdere.
  • X exclude-file indica il nome di un file dove si possono scrivere, uno per riga, tutti i file che non si vuole considerare con le funzioni c,t e x. Si possono avere più funzioni X, ciascuna corrispondente a un file. Due noticine: ricordati che quando salvi i file in un archivio, spesso i loro nomi cominciano con ./ ; e ricordati di inserire il nome stesso del file di esclusione al suo interno!

Tanto per darti un'idea, ho lasciato da parte le seguenti funzioni per il tar Solaris: e,F,FF,i,l,m,o. Il GNU tar ha invece le seguenti funzioni denominate con una lettera: F,G,g,i,k,K,L,m,o,O,R,s,S,T,V,W, oltre che un'altra dozzina per cui non si erano trovate lettere dell'alfabeto disponibili. Non è detto che le opzioni corrispondano: F,i, ed o sono infatti cose diverse. Esistono anche funzioni definite da una cifra tra 0 e 7, che serve a specificare un device file differente.

Alcune funzioni GNU sono però simpatiche, e vale la pena di darci un'occhiata.

  • l serve a dire di non cambiare file system, anche se la foga della ricorsione nella creazione di un archivio lo richiederebbe. La cosa non è peregrina come sembra: lo si vedrà negli esempi. Non è inutile fare notare che il tar Solaris ha una concezione completamente diversa di l; serve infatti ad arrabbiarsi se non esiste il file a cui un link simbolico punta.
  • M permette di creare un archivio in più parti, da usare se si vuole spezzare un file in più floppini.
  • P lascia la barra iniziale / nei nomi dei file che vengono salvati. Non è una bella cosa (infatti il GNU tar tipicamente la toglie), ma qualcuno può trovarla comoda.
  • z (e la sorellina Z) è però l'unica funzione per cui vale davvero la pena di installare il GNU tar se non lo si ha. Con questa infatti si può usare gzip (o rispettivamente compress) per comprimere e decomprimere gli archivi. Chi arriva dal mondo dos si è sempre chiesto perché sotto Unix ci sono due comandi distinti per archiviare e comprimere, e non un unico zip. Bene, a parte il fatto che così ce n'è uno solo, la vera ragione è che si comprime meglio un unico file che tanti pezzetti, anche se al prezzo di perdere tutto se il primo file risulta corrotto.

Funzioni separate.

Le due funzioni che se ne stanno da sole sono, come visto sopra, -I include_file e -C directory file. La prima funziona più o meno come X: si apre il file e si legge la lista di file su cui occorre operare. Attento a non usare spazi, che verrebbero considerati parte del file, e ricordati che se un file è contemporaneamente incluso ed escluso, quest'ultima condizione prevale.

La funzione -C è un po' più delicata. Viene usata solo con le funzioni c ed r, e richiede esattamente due parametri: il programma usa il primo come argomento di una chdir, e quindi si posiziona altrove, e il secondo indica quale file (ricorsivamente) salvare. In pratica, si ha la possibilità di salvare file sotto directory scorrelate senza dovere partire dalla radice e selezionare solo le parti che interessano. Meglio che niente anche in questo caso.


Esempi.

Un paio di esempi non fanno certo male. Cominciamo con la cosa più usuale: estrarre un pacchetto in formato .tar.gz. Il comando da darsi sotto GNU tar (magari dopo avere controllato con

tar tvzf pippo.tar.gz | head

se occorre lasciare il file in una directory propria oppure se la crea lui) è

   % tar xvzf pippo.tar.gz 
con la v facoltativa. Non si ha il GNU tar? nessun problema: la soluzione è allora
   % zcat pippo.tar.gz | tar xvf - 
in cui si vede anche con piacere il fatto che lo pseudofile - in questo caso indica lo standard input.

Se si vuole creare un file tar con la directory pippo e tutti i file sottostanti, la risposta è data da

   % tar cvf pippo.tar pippo 
(meglio che posizionarsi in pippo e scrivere tar cvf ../pippo.tar . - almeno a mio parere.

Se si vuole copiare un sottoalbero da un'altra parte in un solo colpo, non si può usare cp, come ormai sanno anche i bambini; tar è proprio quello che ci vuole, usato due volte in una pipe.

   % cd fromdir; tar cf - | (cd todir; tar xf -) 
Avendo una pipe, dobbiamo chiaramente usare lo pseudofile - in entrambi i casi; ci serve inoltre racchiudere il secondo comando in una sottoshell, perché dobbiamo essere certi che il file sia salvato nella directory corretta. Altrimenti, la pipe terminerebbe con il cd, si perderebbe tutto l'input e il secondo tar non saprebbe da dove prendere i dati.

Infine, un comando d'alta scuola: un tar in rete. Supponiamo di avere un nastro su un'unità remota e di volerlo utilizzare. Purtroppo non abbiamo la possibilità di copiare tutti i nostri file sul calcolatore remoto, e comunque siamo talmente innamorati delle pipe che vogliamo sfruttarle ad ogni pié sospinto. Bene: se sei stato attento, saprai che b e B dovranno servirci perché abbiamo un nastro e lavoriamo in rete, e rsh non è certo dimenticato. Tutto qui? No. Ovviamente non si può usare tar da ambo le parti. Ci si incasinerebbe con le dimensioni dei blocchi. Ma niente paura, c'è il nostro vecchio amicone dd! Ecco in primo luogo come si salva il sottoalbero che parte da pippo su un nastro remoto sulla macchina server1:

   % tar cvfb - 20 pippo | rsh server1 dd of=/dev/rmt/0 obs=20b 
Occorre che la dimesione del blocco per i due comandi sia la stessa. Oltre 20 non si può andare: accontentiamoci. L'operazione inversa è leggermente diversa:
   % rsh -n server1 dd if=/dev/rmt0 bs=20b | tar xvbBf 20 -  
In questo caso occorre da un lato dare entrambe le dimensioni dei blocchi a dd, dall'altra ricordarsi che il tar in ingresso riceverà dati a spizzichi e bocconi, e che occorrerà pertanto tranquillizzarlo un po' con la funzione B. Ma non preoccuparti più di tanto se te la dimentichi: un tar decente si accorge di essere in una pipe e te la potrebbe aggiungere di tuo!



Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:

martedì 28 settembre 2010

Make e Makefile, utility per rendere automatico non solo il lavoro di ricompilazione, ma qualsiasi altro processo che richieda di essere aggiornato.

Spesso vi sarà capitato di scompattare dei sorgenti di qualche programma disponibile per Linux e di trovarvi dentro un Makefile, e delle istruzioni di installazione che richiedevano comandi tipo:

make; make install.

Questi comandi sono invocazioni del comando 'make'.


Introduzione a make.

Quando si scrivono programmi composti di diversi file sorgenti, ci si trova di fronte al problema della ricompilazione degli oggetti e del linkaggio di questi ultimi per generare l'eseguibile. La cosa più conveniente da fare è individuare i file che sono stati modificati dall'ultima compilazione, e ricompilare soltanto questi ultimi.

L'utility make serve a determinare automaticamente quali pezzi di un programma hanno bisogno di essere ricompilati, e può generare i comandi necessari a farlo, seguendo alcune regole definite in un Makefile.


Sotto Linux e nella maggior parte dei sistemi UNIX, si usa generalmente il GNU make, scritto da Richard Stallman, iniziatore e leader del progetto GNU.


Utilizzo di make.

Generalmente make si utilizza per programmi scritti in C, ma può essere usato con qualsiasi altro linguaggio. Infatti, make è in grado di lanciare qualunque comando che può essere eseguito da shell, quindi in realtà può ricompilare anche file .tex, ricostruire database, o comunque eseguire qualunque serie di operazione che necessita di essere automatizzata.

Per utilizzare make, è necessario creare un file chiamato Makefile che descriva le relazioni esistenti tra i vari file, e i comandi da eseguire per aggiornare ognuno di questi.


Tipicamente, in un programma, si aggiorna un eseguibile partendo dai file oggetto, i quali vengono generati dai file sorgenti. Una volta creato un makefile appropriato, basterà digitare il comando


paci@fico# make

affinché automaticamente vengano ricompilati gli oggetti che sono stati modificati, e venga ricreato l'eseguibile.

Introduzione ai Makefile.


Supponiamo di avere un programma con 5 file scritti in C e tre header file, utilizzati dai sorgenti in C. Il programma make, quando andrà a ricompilare il programma, ricompilerà prima tutti i file sorgenti che sono stati modificati dall'ultima compilazione. Se sono cambiati gli header file, verranno ricompilati anche i file che li includevano. Infine, se qualche file è stato modificato, tutti i file oggetto, nuovi o vecchi, verrano linkati assieme per produrre l'eseguibile.

Un makefile consiste di alcune regole così descritte:

TARGET ... : DEPENDENCIES ...         COMMAND         ...         ... 
Di solito TARGET è il nome dell'eseguibile o del file oggetto da ricompilare, ma può essere anche una azione (es. clean). È un sorta di identificatore dell'azione da compiere: alla chiamata
paci@fico# make clean 
verrà eseguito il TARGET ``clean''.

Le DEPENDENCIES sono usate come input per generare l'azione TARGET e di solito sono più di una. Più genericamente vengono citati i file o le azioni da cui dipende la completazione di TARGET.


Un COMMAND è invece, il comando da eseguire; può essere più di uno, e di solito si applica sulle DEPENDENCIES


Per esempio, un makefile fatto su misura per il programma citato sopra, con 5 file .c e 3 header file, sarà:

prog_mio : main.o kdb.o video.o help.o print.o        cc -o prog_mio main.o kbd.o video.o \\        help.o print.o  main.o : main.c config.h        cc -c main.c -o main.o   kbd.o : kbd.c config.h        cc -c kbd.c -o kbd.o  video.o : video.c config.h defs.h        cc -c video.o -o video.o  help.o : help.c help.h        cc -c help.c -o help.o  print.o : print.c         cc -c print.c -o print.o  clean :        rm -f prog_mio        rm *.o        echo "pulizia completata" 
Notate l'uso della barra per dividere un unico comando in più righe, che ne facilita la lettura. A questo punto un semplice make eseguirà la prima azione citata nel makefile, che nel nostro caso è ``prog_mio'', il quale a sua volta chiama altre azioni, cioè i file oggetto da compilare. Potete anche specificare l'azione da eseguire usando il comando `make azione'. Nel nostro caso, un `make clean' avrebbe eseguito i comandi per rimuovere i file oggetto e l'eseguibile di prog_mio.

Conclusioni:


È evidente l'utilità di make, per chi è abituato a scrivere programmi di una certa complessità e dimensione. Non è altrettanto facile, rendersi conto delle potenzialità di questa utility; basterebbe spulciare nei makefile che di solito accompagnano i programmi freeware, per vedere come attraverso make si possa rendere automatico non solo il lavoro di ricompilazione, ma qualsiasi altro processo che richieda di essere aggiornato.

Consiglio caldamente la lettura della documentazione che accompagna questa utility, in modo da trarne i maggiori vantaggi possibili. In particolare è molto utile la lettura della documentazione info del programma, che anch'io ho usato come spunto per scrivere questo articolo.

Consiglio anche una URL dove trovare altre informazioni: http://www.dina.kvl.dk/DinaUnix/Info/make/make_toc.html


Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:


lunedì 27 settembre 2010

The Smokin’ Guns game: un gioco pensato per tutti coloro che hanno nostalgia del vecchio West.

Un gioco pensato per tutti coloro che hanno nostalgia del vecchio West.

E’ open-source, multipiattaforma ed è stato sviluppato sul motore di Quake III Arena di Id Software.

Tra le caratteristiche del gioco segnaliamo la possibilità di utilizzare un mucchio di armi “vecchio stampo” e di giocare con personaggi che veramente sembrano rivivere ancora una volta negli ambienti del West.

"Smokin’ Guns" ai suoi albori e al principio quando venne creato, prendeva il nome di "Western Quake".

In origine il game era sviluppato e curato da un team di sviluppatori conosciuto come "Iron Claw Interactive".

Nel lontano 2003, infatti, si occuparono di rilasciare WQ3 beta 2.0, ultima versione che svilupparono, in quanto dopo che tale release vide la luce gli sviluppatori interruppero i lavori riguardanti il game in questione.

A maggio del 2005, Western Quake suscitò l’interesse di un gruppo di sviluppatori, dei cowboys che si autodenominavano "The Smokin’ Guns" e che decisero di curare nuovamente il gioco collaborando con la vecchia squadra.

Nel 2008 dunque rilasciarono una nuova versione e ribattezzarono il game sotto il nome di " Smokin’ Guns".

Smokin’ Guns è stato progettato con l’intento di renderlo simulazione semi-realistica dell’atmosfera del cosiddetto "Old West’s" ed è stato basato e sviluppato sul Id Software’s Quake III Arena Engine.

Questa totale conversione comprende l’innovazione completa delle armi utilizzate all’interno del gioco create grazie all’ausilio di informazioni corrette di carattere storico che riguardano i danni creati, il tempo di ricarica, ecc.

Il team si è impegnato, inoltre, nella riprogettazione e creazione di altri elementi fondamentali come per esempio nuove modalità di gioco e mappe, il tutto per lo più ispirato ad alcuni film.

Tra le più importanti features che riguardano "Smokin’ Guns", vi ricordiamo:

* Arsenale di armi variegato e completo con design corretto dal punto di vista storico;
* Varietà di mappe in stile western e di modelli di giocatore;
* Sistema di danneggiamento realistico con punti differenti (testa, petto, gambe, ecc);
* Nuove modalità di gioco;
* Sistema economico che permette il rifornimento di armi;
* Semplicità ed immediatezza d’uso;
* Altre piccole migliorie che rendono il gioco completo in ogni sua parte;
* e molto altro ancora.

Screenshots.

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop







Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:



domenica 26 settembre 2010

Il Postscript; perché viene menzionato così spesso nel mondo Unix/Linux?

Che cosa è il Postscript? Perché viene menzionato così spesso nel mondo Unix/Linux?

La maggior parte degli utenti Linux pensa che il Postscript sia solo un passaggio obbligato per poter stampare (assieme o senza Ghostscript) e che se ci fosse un driver di stampa a livello di sistema operativo come in MacOS o Windows sarebbe lo stesso (o meglio).

Cerchiamo allora di spiegare perché viene usato il Postscript e che benefici comporta.

Il Postscript è un linguaggio di programmazione sviluppato per descrivere pagine di testo e grafica in modo indipendente dalla risoluzione e dal dispositivo di visualizzazione. Questo significa che una pagina di testo e grafica può essere distribuita e quindi visualizzata o stampata alla massima risoluzione consentita senza perdita di qualità.

Uno sguardo più approfondito.


Questo paragrafo tratta alcuni aspetti tecnici di Postscript: se non siete curiosi o interessati potete tranquillamente saltarlo.

Il Postscript è un linguaggio di programmazione che viene interpretato (dalla stampante, oppure da Ghostscript): potete quindi dare una occhiata ad un qualsiasi file (programma) Postscript con il vostro editor preferito oppure potete dare i comandi di esempio direttamente a ghostscript lanciandolo in modo interattivo da un xterm (usare in questo modo ghostscript facilita la programmazione perché nel prompt dell'interprete viene visualizzato il numero di elementi sullo stack). Il meccanismo di interpretazione, infatti, è basato sul concetto di stack: a mano a mano che un token viene letto l'interprete decide se farne un push sullo stack (nel caso di una variabile il valore di questa viene messo sullo stack) oppure se interpretarlo come un operatore ed eseguire perciò la funzione associata.

Un concetto importante in Postscript è il dizionario, cioè una struttura dati che associa un nome ad un determinato valore (sequenza di comandi, numero oppure testo).

In pratica, dato il simbolo tok, se è interpretabile come un numero, il numero viene messo sullo stack, se è il nome di una variabile il valore di questa viene messo sullo stack, se è lo mnemonico di un operatore, questo viene eseguito. Il nome di una variabile preceduto da slash (/tok) viene messo sullo stack tale e quale, cosl come i comandi racchiusi tra parentesi graffe. Esempio:
/square {dup mul} def 
In questo esempio il simbolo square viene messo sullo stack seguito dalla sequenza di comandi {dup mul}. A questo punto il token def viene riconosciuto come un operatore che inserisce nel dizionario la procedura square con la definizione {dup mul}.
La nuova procedura square può essere usata in questo modo:
5 square 
La sequenza di operazioni eseguite è questa:
  • 5 viene messo sullo stack
  • square viene cercato nel dizionario e sostituito dalla sua definizione
  • dup viene riconosciuto come un operatore che duplica il primo elemento dello stack
  • mul viene riconosciuto come l'operatore di moltiplicazione che prende due valori dallo stack, li moltiplica e mette il risultato di nuovo sullo stack
Per definire una variabile invece che una nuova funzione si immette sullo stack un numero:
/PI 3.1415 def 
oppure del testo (che in postscript viene racchiuso tra parentesi tonde):
/mystring (Articolo per il PlutoJ!) def 
Il linguaggio fornisce anche operatori per ruotare e scalare l'immagine. Grazie a questa flessibilità sono stati creati dei postprocessori, ovvero dei filtri che ricevono in input un programma postscript e lo modificano in modo da cambiare orientamento, posizione e dimensione delle pagine.

Esistono due sistemi di coordinate in postscript: lo spazio dell'utente e lo spazio del dispositivo. L'interprete usa una matrice di conversione tra i due sistemi di coordinate che può essere modificata utilizzando gli operatori scale, rotate e translate.

Le operazioni di disegno si eseguono definendo un percorso (path) e chiamando l'operatore stroke (che disegna una linea lungo il percorso) oppure l'operatore fill che riempie la zona racchiusa dal percorso con il colore selezionato. C'è anche una altro operatore che può essere applicato ad un path: l'operatore clip che limita l'output all'area descritta dal path. Un aspetto interessante è che può essere usato come path anche l'outline di un stringa di testo (con l'operatore charpath).

Ultima nota: l'interprete postscript mantiene anche uno stack di dizionari, e cerca di risolvere i simboli a partire dall'ultimo dizionario messo sullo stack: in questo modo è facile ridefinire il significato degli operatori standard (ad esempio l'operatore showpage che emette la pagina sul dispositivo grafico).

Ecco infine un esempio di codice che potete inserire direttamente al prompt di ghostscript o salvare in un file (in quest'ultimo caso la prima linea del file deve iniziare con %! ).
% ---cut cut--- /Times-Roman findfont 64 scalefont setfont /mystring (Pluto Journal) def newpath 100 100 moveto mystring show 200 200 moveto 2 2 scale 90 rotate mystring show showpage % ---cut cut--- 

E ora passiamo al sodo ...

Alcuni esempi di quanto sia utile postscript: quelli che hanno letto anche la precedente sezione sapranno perché tutto questo è possibile.
  • Descrizione indipendente dalla risoluzione
    Provate a vedere con ghostview il file tiger.ps che viene incluso con tutte le distribuzioni di ghostscript e ingrandite le ciglia dell'occhio della tigre: vedrete che, aumentando lo zoom (che è praticamente la stessa cosa che aumentare la risoluzione), i dettagli migliorano, sono più nitidi.
    Provate ora a fare la stessa cosa con una immagine bitmap, (un qualunque .gif oppure la stessa immagine della tigre trasformata in bitmap con il comando gs -sDEVICE=ppmraw -dNOPAUSE -SOutputFile=/tmp/t.ppm tiger.ps) e scoprite la differenza.
  • Ridimensionare ruotare e traslare
    Vi è mai venuta la voglia di stampare la documentazione di Linux ma vi siete scoraggiati pensando che richiede centinaia di pagine? Se avete le versioni postscript potete postprocessarle e riarrangiare le pagine in modo che ne vengano stampate due per pagine (o anche di più se avete una buona stampante e buona vista:-)).
    Naturalmente i programmi che fanno questo sporco lavoro sono gi` stati scritti (per esempio il pacchetto psutils della distribuzione Debian).
  • Distribuzione e qualità
    Un file postscript può essere distribuito (nessun problema di little o big-endian, dimensione di int e long etc:-)) e visualizzato al meglio delle possibilità del dispositivo finale: sia che si abbia una stampante a 9 aghi che una laser a 600 dpi la qualità della stampa dipende dalla stampante, non dal formato del file.

Naturalmente non è tutto oro quello che luccica: un file postscript non è facilmente editabile in modo visuale (tuttavia esistono dei programmi che trasformano postscript in un altro formato vettoriale o che consentono di editare direttamente il postscript con qualche limitazione come Tailor e Adobe Illustrator); le stampanti postscript costano di più (ma Ghostscript consente di stampare anche su stampanti non-PS); al postscript standard mancano istruzioni per la fusione di più immagini con vari livelli di opacità e ci sono altri limiti ancora legati alla natura di linguaggio di programmazione (ci sono anche gli operatori per cancellare e scrivere file, per cui è bene usare l'opzione -dSAFER di Ghostscript, per esempio).

Ci sono diversi siti sul WWW che trattano aspetti introduttivi della programmazione in postscript, è sufficiente fare una ricerca con parole chiave come postscript, guide, document, first etc.

fonte: Pluto


Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:


sabato 25 settembre 2010

Emulazione e virtualizzazione: eseguire uno o più sistemi operativi da un unico PC, in un ambiente protetto e monitorato.

Tramite virtualizzazione è possibile eseguire uno o più sistemi operativi (ed il relativo software applicativo) da un unico PC, in un ambiente protetto e monitorato che prende il nome di macchina virtuale (VM).


Il sistema operativo in cui viene eseguita la macchina virtuale, viene detto ospitante (host) mentre la macchina virtuale è chiamata ospite (guest). Il codice della macchina virtuale viene eseguito direttamente dal sistema ospitante, ma il sistema ospite "pensa" di essere eseguito su una macchina reale priva di emulazione o virtualizzazione hardware.


Si può ottenere virtualizzazione in vari modi:

  • Virtualizzazione completa (o nativa). In questo caso un ipervisore (hypervisor) implementa l'isolamento necessario a separare il sistema ospite dall'hardware fisico della macchina. In molti contesti si parla di virtualizzazione software. VirtualBox supporta questa forma di virtualizzazione.
  • Paravirtualizzazione. Nella paravirtualizzazione, il programma di controllo fornisce un'API (interfaccia di programmazione applicativa) per l'ipervisore, che viene utilizzata dal sistema ospite per interagire con l'hardware. KVM è un esempio di tale tipologia di virtualizzazione.
  • Emulazione. In questo caso l'hardware viene completamente emulato dal programma di controllo. Il processo di emulazione risulta più lento rispetto alle due forme di virtualizzazione precedenti, a causa della traduzione delle istruzioni dal formato del sistema ospite a quello del sistema ospitante.

Qemu.

QEMU è un emulatore di processore. Emula l'hardware del sistema ospitante esaminando dinamicamente il codice eseguito all'interno della macchina virtuale traducendolo in istruzioni comprensibili alla macchina ospitante.


QEMU è in grado di emulare numerose architetture hardware, tra cui x86, x86_64, ARM, SPARC, PowerPC, e MIPS. Il sistema ospitante è però vincolato alle architetture x86, x86_64 e PowerPC. Nel caso di architetture x86 esiste un acceleratore (kqemu) in grado di evitare la traduzione dinamica delle istruzioni, permettendo di raggiungere prestazioni attorno al 30-50% di quelle del sistema ospitante (con una emulazione non accelerata le prestazioni calano al solo 5-10%).


Per poter testare le funzionalità dell'emulature è necessario installare i pacchetti qemu, kqemu-common, kqemu-source e vgabios. Tali pacchetti possono essere scaricati ed installati con il comando sudo apt-get install qemu kqemu-common kqemu-source vgabios o utilizzando il gestore di pacchetti della propria distribuzione.


Di seguito vengono indicate alcune opzioni del comando qemu. Per maggiori informazioni vedere la pagina di manuale man qemu 1.


Parametro Significato
-fda file
-fdb file
Utilizza file come immagine del primo o secondo floppy. È possibile indicare /dev/fd0 come nome file, per utilizzare il floppy fisico.

-hda file
-hdb file
-hdc file
-hdd file
Utilizza file come immagine del disco.

-cdrom file
Utilizza file come immagine del cd-rom. È possibile utilizzare un dispositivo fisico indicando /dev/cdrom/ come file.

-boot [a|c|d|n]
Effettua il boot da floppy (a), disco fisso (c), cd-rom (d) o dalla rete (n)

-m mega
Imposta la RAM virtuale a megaMiB. Di default il valore è 128 MiB.

Tabella 1: Opzioni del comando qemu.

Di seguito vengono dati alcuni esempi che permettono di acquisire una maggior dimestichezza con l'emulazione offerta dal comando qemu. Come osservato QEMU è in grado di emulare architetture differenti, quindi può essere interessante sfruttare tali potenzialità per testare dei kernel linux per SPARC o MIPS. Dal sito di QEMU è possibile scaricare alcune immagini di test per tali architetture.


Nei vari esempi riportati, per "rilasciare" il controllo dalla macchina virtuale al sistema ospitante utilizzare la combinazione di tasti Ctrl+Alt.


Debian 2.6.18-3 per MIPS.

Per questo test è necessario scaricare il pacchetto http://bellard.org/qemu/mips-test-0.2.tar.gz dal sito di QEMU, e scompattare i file immagine in una cartella sul proprio sistema. Dopo aver fatto cd nella cartella appena creata, lanciare i comandi

qemu-img create mips_hda 1G qemu-system-mips \  -kernel vmlinux-2.6.18-3-qemu \  -initrd initrd.gz \  -append "console=ttyS0 init=/bin/sh" \  -nographic \  -m 128 \  -hda mips_hda 

Il primo comando qemu-img create serve per creare un'immagine da 1Gb da utilizzare come disco fisso per il sistema operativo emulato. Il secondo richiama una versione specifica di qemu per l'emulazione di architetture MIPS. Come parametri vengono passati l'immagine del disco fisso, la quantità di memoria RAM da utilizzare, ed i percorsi al file immagine del kernel ed alla relativa immagine di boot.

[Console Linux 2.6.18 MIPS]

Figura 1: Console Linux 2.6.18 MIPS (QEMU).


FreeDOS

Sempre dal sito di QEMU è disponibile l'immagine floppy di FreeDOS http://odin.fdos.org/odin2005/odin1440.img. In questo caso il test di virtualizzazione è più elementare, in quanto richiede unicamente di effettuare l'avvio dall'immagine floppy scaricata. Il comando è qemu -fda odin1440.img -boot a. Si osservi come venga utilizzata l'opzione -fda per impostare l'immagine del primo disco floppy, e come il parametro -boot indichi a QEMU di avviarsi da tale unità.

[FreeDos]

Figura 2: FreeDOS (QEMU).


Live CD.

Molte distribuzioni, rilasciano immagini live che è possibile provare avviandole da cd-rom. Qemu si presta bene ai test di tali distribuzioni, senza richiedere un riavvio del PC. Per provare è possibile, ad esempio, scaricare una variante di Ubuntu molto usata in attività di analisi forense: Helix. Una volta scaricata l'immagine iso del cdrom è possibile lanciare il comando sudo qemu -cdrom Helix2008R1.iso -boot d per avere all'interno del nostro sistema linux, una live cd pronta all'uso. In questo caso è stato utilizzato il comando sudo qemu in modo da ottenere l'accesso senza errori al file /dev/kqemu e sfruttare le potenzialità dell'acceleratore kqemu.

[Helix LiveCD]

Figura 3: Helix Live CD (QEMU).

Facendo alcuni test su diverse distribuzioni ed analizzando le prestazioni ottenute, si vedrà che purtroppo la velocità dell'emulazione offerta da QEMU non è paragonabile a quelle ottenibili da un sistema fisico non emulato. I limiti dell'emulazione risiedono principalmente nella necessità di traduzione delle istruzioni, e nell'emulazione dell'hardware.


KVM.

KVM (Macchine Virtuali basate su Kernel) è una soluzione di virtualizzazione completa per Linux, utilizzabile su architetture x86 dotate delle estensioni alla virtualizzazione hardware (Intel VT o AMD-V). Il componente kernel di KVM è disponibile dalle versioni 2.6.16 per AMD e 2.6.15 per Intel. Le opzioni dei comandi kvm e kvm-img sono analoghe a quelle di qemu e qemu-img. QEMU è un pacchetto richiesto per il corretto funzionamento di KVM.

Per l'installazione di KVM è necessario che il sistema supporti la virtualizzazione hardware, tramite svm per i processori AMD o le estensioni vt per i processori Intel. Per controllare che il proprio sistema supporti tali estensioni lanciare il comando egrep '^flags.*(vmx|svm)' /proc/cpuinfo, se appare qualcosa si può procedere con l'installazione del pacchetto kvm.


Una volta installato il pacchetto, KVM utilizzerà due moduli: il modulo kvm.ko fornisce funzionalità di base ed è comune ad entrambe le architetture (AMD ed Intel), ed un modulo kvm-intel.ko per processori Intel, o kvm-amd.ko per i processori AMD.


Nella sottosezione seguente si vedrà come installare un sistema Windows Xp Professional in una macchina virtuale sfruttando KVM.


Windows Xp Professional (KVM).

Come osservato in precedenza, i parametri utilizzabili per i comandi kvm-img e kvm, sono gli stessi che si possono utilizzare per QEMU. Il primo passo per la creazione di una nuova macchina virtuale è la creazione di un disco immagine da utilizzare come disco di avvio.

$ kvm-img create disk1.img 5G Formatting 'disk1.img', fmt=raw, size=5242880 kB 

Con questo comando viene creato un file immagine disk1.img in formato raw della dimensione di 5GB che verrà utilizzato come disco principale per l'installazione di Windows Xp. I formati utilizzabili per la creazione dei file immagine sono gli stessi di QEMU e vengono riportati nello schema seguente. Per maggiori informazioni consultare la pagina man di kvm-img.

Formato Descrizione
raw Si tratta del formato utilizzato se non viene indicato qualcosa di diverso con l'opzione -f. Il formato è semplice e facilmente esportabile verso altri emulatori. Ha il vantaggio di riservare spazio unicamente per i settori effettivamente scritti nell'immagine.

qcow2 Si tratta del formato immagine di QEMU, ed è quello più versatile. Da utilizzare se si vogliono creare immagini di minori dimensioni, utilizzare la cifratura AES o la compressione tramite zlib.

qcow Il vecchio formato immagine di QEMU. Esiste unicamente per compatibilità, quindi non andrebbe utilizzato.

cow E' l'unico formato per QEMU in grado di aumentare di dimensione, adattandosi dinamicamente. Si tratta anche in questo caso di un formato supportato per retro-compatibilità, e non andrebbe utilizzato. Non funziona sotto win32.

vmdk Formato immagine di VMware 3 e 4.

Tabella 2: Formati Immagine QEMU e KVM.

A questo punto si procede all'installazione.

kvm -hda disk1.img -cdrom it_winxp_pro_with_sp2.iso -smp 2 -m 1024 -boot d 

Il comando kvm viene utilizzato per effettuare l'avvio del sistema operativo, usando un'immagine iso del cd-rom di installazione ed il disco creato in precedenza. Trattandosi di un sistema dual core, si è utilizzata l'opzione -smp per richiedere l'uso di due processori.


Di seguito vengono allegate un paio di immagini che illustrano il processo di installazione.

[Windows xp installazione con kvm]

Figura 4: Windows Xp Installazione (KVM).

[Windows xp installazione con kvm]

Figura 5: Windows Xp Installazione (KVM).

Al termine della fase di installazione si ha a disposizione un desktop Xp completamente funzionante. Avviamo la macchina virtuale con:

$ kvm -hda disk1.img -smp 2 -m 1024 -boot c 

In cui viene utilizzato il disco disk1.img per effettuare l'avvio.

La virtualizzazione con KVM è sufficientemente intelligente da creare autonomamente una rete virtuale tra il sistema ospitante ed il sistema ospite. Per testare tale sottorete è possibile, ad esempio, lanciare il comando ipconfig /all in Windows Xp per individuare il gateway predefinito, e poi da start -> esegui digitare il comando \\GATEWAY\ per visualizzare le condivisioni di rete del sistema ospitante. Nel caso in figura, il sistema ospitante utilizza Samba per condividere le stampanti e le directory home degli utenti.

[Windows xp in rete con kvm]

Figura 6: Windows Xp Rete Virtuale (KVM).

La rete virtuale definita in KVM permette anche la condivisione dell'indirizzo IP del sistema ospitante ed il NAT è completamente automatico. Nella figura seguente si può osservare come la macchina virtuale navighi in rete, dato il fatto che il sistema ospitante è dotato di una connessione Internet attiva e funzionante.

[Windows xp in rete con kvm]

Figura 7: Windows Xp Rete Virtuale (KVM).


VirtualBox OSE.

VirtualBox è un ottimo software che permette la creazione e la configurazione di macchine virtuali in modo visuale tramite un'interfaccia grafica completa ed intuitiva.


Di seguito viene dato un elenco delle principali funzionalità offerte da questo programma


  1. Nessuna virtualizzazione hardware necessaria. VirtualBox non richiede la presenza di estensioni VT-x o AMD-V per poter generare macchine virtuali. Se non diversamente specificato il programma utilizza una completa virtualizzazione software monitorata dal programma di controllo. Questo permette la definizione di macchine virtuali su pc "datati", e non muniti di estensioni hardware per la virtualizzazione.
  2. Portabilità. Il programma supporta vari sistemi operativi come sistemi ospitanti (Windows, Linux, Mac OS e Solaris). Le macchine virtuali create sono facilmente portabili da un sistema all'altro, tramite una elementare operazione di copia/incolla.
  3. Aggiunte Ospite. VirtualBox permette l'installazione nella macchina virtuale di un'applicazione, denominata "aggiunte ospite", in grado di migliorarne le prestazioni. Tale pacchetto permette ad esempio il ridimensionamento automatico della finestra contenente la macchina virtuale, o la creazione di condivisioni di rete tra il sistema ospitante e quello ospite.
  4. Configurazione xml. Il programma utilizza file di configurazione xml, sia per la configurazione globale dell'applicazione che per quella delle singole macchine virtuali. L'uso di questo formato permette una miglior portabilità delle macchine virtuali su altri sistemi.
  5. Supporto hardware. VirtualBox supporta
    • ACPI. Supporta pienamente le specifiche di controllo dell'alimentazione di rete. Tramite questa funzionalità il sistema ospitante (su pc con alimentazione da batteria) è in grado di avvisare i sistemi ospiti di un calo di alimentazione, attivandone le funzionalità di risparmio energetico.
    • Multimonitor. Il programma permette di utilizzare nelle macchine virtuali risoluzioni video molto superiori rispetto a quelle del sistema ospitante. In questo modo è possibile "estendere" il video su più monitor collegati al sistema principale.
  6. Fotografie. VirtualBox permette di scattare delle "fotografie" di un sistema ospitato, e di riavviarlo nella condizione fotografata. Questa funzionalità è molto utile per riportare una macchina virtuale in uno stato precedente. Si può fotografare il sistema prima di un'operazione delicata, in modo tale da poterlo ripristinare facilmente in caso di errori o malfunzionamenti.

Per installare VirtualBox è possibile scaricare il pacchetto relativo alla propria distribuzione, direttamente dal sito. Per sistemi che utilizzano apt è possibile eseguire il comando:

sudo apt-get install virtualbox-ose 

In questo modo viene installato il pacchetto virtualbox-ose. Una volta installato si può lanciare il programma dal menu Applicazioni -> Accessori -> VirtualBox OSE.

[Schermata iniziale virtualbox]

Figura 8: Schermata iniziale (VirtualBox).

Windows Vista.

Per installare una nuova macchina virtuale, è necessario premere il pulsante "Nuova", quindi seguire i passaggi evidenziati dal programma. Come primo passo si rende necessario creare un disco virtuale che verrà utilizzato dal sistema ospite. Le immagini che seguono illustrano il processo di installazione.

[Creazione macchina virtuale Virtualbox]

Figura 9: Creazione nuova macchina virtuale (VirtualBox).

[Creazione macchina virtuala Virtualbox]

Figura 10: Riepilogo configurazione (VirtualBox).

Una volta creato il disco e la macchina virtuale è necessario accedere al pannello di configurazione della VM per eseguire l'avvio da cd o da una immagine iso del sistema operativo che si vuole installare. Il pannello di configurazione è accessibile cliccando l'icona "Impostazioni" in alto a sinistra. La figura seguente mostra come sia possibile configurare VirtualBox in modo che utilizzi un'immagine iso per effettuare l'installazione.

[Configurazione cdrom Virtualbox]

Figura 11: Configurazione CD-ROM (VirtualBox).

A questo punto basta avviare la macchina virtuale premendo sul nome della vm (inserito in una maschera precedente) nella finestra principale di VirtualBox, o premendo l'icona "Avvia" in alto a sinistra. L'installazione si avvia e la si può portare a compimento.

[Installazione Vista Virtualbox]

Figura 12: Installazione Vista (VirtualBox).

Una volta terminata l'installazione ed avviata la macchina virtuale è consigliabile installare il pacchetto "aggiunte ospite" dal menu Dispositivi -> Installa GuestAdditions. Questo pacchetto, come spiegato precedentemente, migliora sensibilmente le funzionalità e l'usabilità della macchina virtuale.

[Installazione Aggiunte Ospite Virtualbox]

Figura 13: Installazione "Aggiunte Ospite" (VirtualBox).

Xen.

Esistono soluzioni di virtualizzazione più performanti rispetto alle precedenti, che permettono la creazione di server dedicati alla virtualizzazione tramite l'uso di kernel modificati. Una soluzione rilasciata sotto licenza GPL, che permette una virtualizzazione di questo genere è Xen.


In Xen ogni macchina virtuale ospitata viene detta Dominio. Esistono due domini principali: il Dom0 è riferito al kernel principale con supporto alla virtualizzazione, in cui vengono creati e gestiti gli altri domini. I domini DomU sono invece associati alle macchine virtuali ospitate da Xen. Il solo Dom0 è in grado di accedere direttamente all'hardware fisico del server.


Una volta installato Xen (dai pacchetti della propria distribuzione o dai sorgenti disponibili sul sito http://www.xen.org) è necessario effettuare l'avvio dal nuovo kernel. Nell'esempio che segue viene indicato come creare una nuova macchina virtuale Xp. In primo luogo si crea una cartella per memorizzare le macchine virtuali, ed un Disco Virtuale da utilizzare per l'installazione.

$ mkdir -p /home/xen/vm/winxp $ sudo dd if=/dev/zero of=/home/xen/vm/winxp/disk.img bs=1M count=4096 

A questo punto bisogna creare un file di configurazione in /etc/xen/, ad esempio /etc/xen/winxp.cfg, ed aggiungervi la descrizione della nuova macchina virtuale:

kernel = '/usr/lib/xen/boot/hvmloader' builder = 'hvm' memory = '1024' device_model='/usr/lib/xen/bin/qemu-dm'# Disks disk = [ 'file:/home/xen/vm/winxp/disk.img,ioemu:hda,w','file:$PERCORSO_ISO/winxp.iso ,ioemu:hdc:cdrom,r' ]  # Nome della macchina virtuale name = 'winxp'  # Rete vif = ['type=ioemu, bridge=xenbr0']  # Comportamento boot='d' vnc=1 vncvi 

Molti dei parametri di configurazione sono abbastanza intuitivi. Si osservi che Xen utilizza una tipologia di virtualizzazione nota come HVM (Macchine Virtuali Hardware) in grado di sfruttare le estensioni VT e AMD-V. Il parametro vnc=1 serve per consentire l'accesso alla macchina virtuale tramite il comando vnc winxp, ed è molto utile pensando al controllo di un server dedicato alla virtualizzazione.

Una volta editato il file di configurazione, è possibile lanciare la macchina virtuale e proseguire con l'installazione. Al termine dell'installazione si dovrà modificare il parametro di boot (in 'c') per consentire l'avvio da disco e non da cd. Il comando per avviare la macchina virtuale è xm create /etc/xen/winxp.cfg.


.

Come si può immaginare, in questo articolo abbiamo solamente "graffiato" la superfice di un argomento complesso come la Virtualizzazione dei sistemi operativi. Per ragioni di spazio e tempo non sono state considerate tutte le problematiche relative alla configurazione delle reti virtuali, o dei backup in sistemi virtualizzati.

Abbiamo però evidenziato parecchi vantaggi della virtualizzazione :

  1. In primo luogo il ritorno di investimento dovuto all'utilizzo di un server di virtualizzazione. Spesso i server non lavorano a pieno carico, e tramite virtualizzazione è possibile ottenere un miglior sfruttamento delle risorse hardware.
  2. Le macchine virtuali create tramite QEMU, KVM o VirtualBox possono essere facilmente spostate da un PC a un'altro, dando un nuovo significato alla mobilità degli utenti ed alla portabilità dei sistemi operativi
  3. Tramite l'emulazione è possibile eseguire applicativi o sistemi non più supportati, oppure creati per differenti architetture hardware.
  4. Sfruttando la virtualizzazione dei sistemi possiamo dimenticarci dei sistemi dual boot e lavorare direttamente su più sistemi. Si pensi alla comodità di effettuare operazioni di copia/incolla tra diverse macchine virtuali, una funzionalità avanzata offerta da VirtualBox.

Di certo la virtualizzazione sarà sempre più presente nel futuro di tutti.

fonte: Pluto


Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:


giovedì 23 settembre 2010

Amarok il celebre lettore multimediale offre interessanti funzionalità e comodi strumenti per l'ascolto di brani musicali.

Amarok è un lettore multimediale di file audio sviluppato per l'ambiente desktop KDE, è però utilizzabile anche in altri ambienti desktop.

Attualmente viene rilasciato indipendentemente dal pacchetto kdemultimedia in quanto parte del modulo extragear.

Il nome deriva dall'album Amarok di Mike Oldfield. Poiché amarok (o amaroq) nella lingua Inuktitut significa lupo, il tema del lupo è richiamato nella grafica del programma, a cominciare dall'icona.

Il passaggio a KDE 4 ha offerto agli sviluppatori l'occasione per una profonda revisione del programma. Questo ha comportato un'iniziale diminuzione delle funzionalità presenti progressivamente aggiunte con le nuove versioni della serie 2.

Una caratteristica di Amarok è la possibilità di ricercare informazioni sui brani ascoltati, come il testo della canzone, la copertina dell'album o le informazioni sull'autore da vari servizi presenti su Internet, come MusicBrainz o Amazon.com.

Inoltre è possibile visualizzare informazioni sull'autore, l'album o la traccia del brano che si sta ascoltando da Wikipedia.

Una funzionalità integrata è la possibilità di collegarsi automaticamente con un account del sito last.fm: Amarok spedisce automaticamente i dettagli dei brani ascoltati, in modo da partecipare alle comunità musicali del sito.

Sempre grazie a un collegamento a Internet, il programma è in grado di indicare artisti collegati a quello attualmente in ascolto, in modo da offrire stimoli per la ricerca e l'espansione dei propri orizzonti musicali.

Dalla versione 1.4.4 Amarok è divenuto il primo lettore multimediale open source ad aver il supporto per Magnatune, il negozio online di musica digitale libera da DRM. Magnatune afferma che per ogni canzone venduta metà del ricavo va all'artista e il 10% della quota mensile dell'utente che utilizza Amarok viene devoluto al progetto stesso.

Funzioni specifiche.

Ecco una lista delle principali funzioni di Amarok:

  • Procedura di configurazione al primo avvio.
  • Per la gestione audio si appoggia al sottosistema multimediale Phonon fornito da KDE 4.
  • Possibilità di gestire i metadati dei file musicali (anche in gruppo) integrato con il database online di MusicBrainz.
  • Download automatico delle copertine dei CD audio da Amazon.com e gestore delle stesse integrato.
  • Browser delle scalette per gestire le collezioni musicali.
  • Sistema di valutazione della propria musica.
  • Supporto integrato per lettori audio USB, con interfaccia MTP ed anche iPod.
  • Possibilità di masterizzare i CD grazie al supporto integrato per K3b.
  • Testi delle canzoni scaricati in automatico.
  • Icona animata nel vassoio di sistema (opzionale).
  • Supporto nativo per Audioscrobbler[5]: scalette dinamiche possono essere generate da Last.fm.
  • Potente interfaccia di scripting che consente di espandere Amarok.
  • Equalizzatore grafico a 10 bande.
  • Supporto per Podcasting.
  • Mostra informazioni sugli artisti da Wikipedia.
  • Possibilità di usare SQLite3, MySQL e PostgreSQL come database.
  • Schemi di colori configurabili. Il browser interno può essere modificato con i CSS.


Aggiornamenti:

Rilasciata Amarok 2.4 beta 1 "Closer":

  • The ability to show and hide the menu bar
  • Mass-tagging UI using Musicbrainz
  • The ability to use iPod Touch 3G and possibly newer devices
  • A new applet for guitar and bass tab information
  • A map and calendar view for the upcoming events applet
  • A new Playdar collection that lets you listen to music provided by a local Playdar service


Ultima versione stabile rilasciata: Amarok 2.3.2 "Moonshine" (20/09/2010)

Novità, cambi e correzione bugs:

Changes

  • Bumped libMTP dependency to version 1.0.0.
  • Improved response of current track and albums applet on data updates.
  • Use system date/time format for default name when saving user playlists.

Bugfixes

  • Fixed incorrect size of the VideoClip applet. (BR 247097)
  • Comments embedded in files that contained newlines or tabs could be skipped entirely. (BR 223502)
  • The equalizer dialog did not discard changes when clicking "Cancel". Patch by Anton Gritsay . (BR 242730)
  • The Last.fm service did not work without KWallet. (BR 235861)
  • Show actual KDE version in the "About Amarok" dialog, instead of the version used at compile time.
  • Fixed a crash when trying to save a playlist to a file where the format of the playlist was unknown. (BR 246168)
  • Also use podcast channel image for downloaded episodes. (BR 229391)
  • Collection directories that were symlinks could end up storing the wrong absolute path, causing those files to be removed during incremental scans.
  • Fixed playlist tooltips not showing up, even when enabled in the playlist layout (BR 249086)
  • Fixed potential crashes related to Applet loading. (BR 246756)
  • Fixed possible crash in Labels Applet when playing new track. (BR 248538)
  • Fixed incorrect layout of applets on startup.
  • Fixed Collection Browser not properly updating after a full rescan, necessitating Amarok to be closed and reopened. Fixes various bugs. (BR 172542)
  • Fixed cover found dialog closing when download failed or is cancelled.
  • Fixed failure when fetching cddb info for audio CDs in localized Amarok.
  • Fixed expanding items in collection browser by double-click, in double-click mode.
  • Fixed crash when adding new folders repeatedly in podcast/saved playlist browsers.
  • Fixed context menu actions acting on wrong indices in the playlist browser.
  • Fixed incorrect text about "rpath" argument to collection scanner. (BR 236076)
  • Fixed emission of MPRIS StatusChange signal when switching into or out of random mode.


Download.


Screenshots.
























fonti: Amarok & Wikipedia


Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:


lunedì 20 settembre 2010

Moovida software open source con caratteristiche avanzate per gestire al meglio tutti i vostri file multimediali.

Moovida, the free mediaplayer“: così recita lo slogan di questo software, anche se in realtà Moovida è molto di più di un semplice media player: si tratta di un vero e proprio media center disponibile per i sistemi Linux, molto bello graficamente, leggero, veloce ma sopratutto completamente gratuito.

Moovida è un software open source che ha molte caratteristiche avanzate e unainterfaccia grafica molto intuitiva simile al controllo remoto di un televisore standard.

Il software rileva automaticamente iPod, macchine fotografiche, hard disk, ecc. È possibile visionare film, ascoltare musica, guardare fotografia e utilizzare i servizi avanzati di internet.

Moovida, ha tutte le caratteristiche di un Media Center che si rispetti, e anche qualche funzione in più rispetto ad altri software simili ma più blasonati. Eccone alcune:

Foto.


Visualizzazione immagini con thumbnail di anteprima, organizzazione del proprio album digitale, visualizzazione full-screen delle immagini con supporto tv, slideshows animati, plugins per Flickr, Deviantart, ecc.

Video e TV Shows:

Riproduzione di video in qualsiasi formato compreso DVD-Video, supporto HD, supporto per i sottotitoli, sccesso streaming, plugin per Youtube, Apple Movie Trailer e tantissimi altri.

Musica.



Organizza la tua musica digitale, ordinando i brani per nome, artista, album, genere ecc. Download automatico delle copertine degli album (album art), playlist automatiche e playlist personalizzate. Supporta plugin per Shoutcast, Grooveshark e moltri altri siti di streming audio.

Altro.

Interfaccia ottimizzata per la visualizzazione su tv, supporto per il remote control (telecomando), riconoscimento automatico di qualsiasi dispositivo multimediale esterno come iPod, videocamere, hard disk esterni, ecc.


Quelle appena elencate, sono solo alcune delle caratteristiche dei questo fantastico software completamente open-source, indispensabile per tutti gli amanti dei contenuti multimediali.

Ecco come installare/aggiornare Moovida su K|X|Ubuntu.


Per Ubuntu 11.04 "Natty Narwhal" e Ubuntu 11.10 "Oneiric Ocelot":

Molto semplice con Ubuntu Software Center, cbasta cliccare su cerca Moovida e avviare l'installazione.

Per Ubuntu 10.10 "Maverick Meerkat", 10.04 "Lucid Lynx" e Ubuntu 9.10 "Karmic Koala":

Apriamo il terminale e scriviamo:


sudo add-apt-repository ppa:moovida-packagers/ppa

Per Ubuntu 9.04 "Jaunty Jackalope", Ubuntu 8.10 "Intrepid Ibex" e Ubuntu 8.04 "Hardy Heron":

Apriamo il terminale e per prima cosa installiamo la la chiave d’autentificazione scrivendo:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com --recv-key 0x3135cd5c26c2e075

a questo punto aggiungiamo i Repository alla nostra Distribuzione scrivendo (sempre da terminale):

Per Ubuntu 9.04 Jaunty

sudo echo "deb http://ppa.launchpad.net/moovida-packagers/ppa/ubuntu jaunty main" | sudo tee -a /etc/apt/sources.list

Per Ubuntu 8.10 Intrepid

sudo echo "deb http://ppa.launchpad.net/moovida-packagers/ppa/ubuntu intrepid main" | sudo tee -a /etc/apt/sources.list

Per Ubuntu 8.04 Hardy

sudo echo "deb http://ppa.launchpad.net/moovida-packagers/ppa/ubuntu hardy main" | sudo tee -a /etc/apt/sources.list

a questo punto aggiorniamo la nostra Distribuzione scrivendo:

sudo apt-get update

ora installiamo la nostra applicazione con un semplice:

sudo apt-get install moovida

e confermiamo.

Ora avremo la nostra Moovida installata nella nostra Distribuzione.


Download Source Package moovida-plugins-ugl per Ubuntu 11.10 Oneiric Ocelot:
Screenshots:



Crea le tue foto ed immagini come Slideshow per eBay, Netlog, MySpace, Facebook o la tua Homepage!Mostrare tutte le immagini di questo Slideshow

Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:

Ultimi articoli pubblicati

RSVP (Raccomandati Se Vi Piacciono)

Antipixels & Counters

SIMBA wirepress tua notizia Segnala Feed Andrix Segnala Feed iFeed WebShake – tecnologia Blogstreet - dove il blog è di casaVero Geek iwinuxfeed.altervista.org Add to Technorati Favorites ElencoSiti Aggregatore Il Bloggatore visitor stats Programming Blogs - Blog Catalog Blog Directory Feedelissimo Paperblog : le migliori informazioni in diretta dai blog Notizie Informatiche