Una sottile ma sostanziale differenza
esiste tra
Simulatori, Emulatori e Macchine Virtuali. Basta già questo per
generare una certa confusione in chi si avvicina all'argomento. Lo
scopo ed il risultato finale, agli occhi dell'utente che le utilizza,
in pratica è lo stesso: all'interno di un dato sistema
operativo, si fa funzionare un sistema del tutto differente, per
esempio MacOs all'interno di MS Windows, oppure MS Windows all'interno
di Linux. In ogni caso esiste sempre una macchina fisica che ospita
il sistema (detta anche host), ed una macchina ospitata virtuale,
(detta anche
guest).
Descrivo brevemente le caratteristiche fondamentali di queste tre
categorie:
- Simulatori
Un simulatore è un software che imita in tutto e per tutto un
sistema operativo, o un sistema hardware con il sistema software
integrato (una calcolatrice, per esempio). Ovviamente siamo davanti ad
un prodotto che non è quello originale, ma che tenta di imitarlo
in ogni suo aspetto, questo da adito a differenze e discrepanze. Il
codice del sistema simulato è scritto per intero da capo, quindi
non ha le stesse identiche caratteristiche profonde del sistema
originale. Il codice è però ottimizzato e scritto per la
macchina host, e quindi molto veloce ad essere eseguito.
- Emulatori - Layers di compatibilità
Un emulatore invece riproduce le condizioni hardware della macchina
guest, ma non possiede in se il software della macchina guest. In
genere è quindi necessario avere una copia del programma di
avvio o il sistema operativo specifico. In molti casi il sistema
operativo è memorizzato in un chip adibito a questa funzione,
per cui è necessario avere un file immagine del chip stesso (i
files ROM). Gli emulatori quindi, in genere, sono specifici ed hanno il
compito di emulare un ben preciso sistema hardware. Come vantaggio
abbiamo che il risultato è del tutto identico a quello reale,
compresi i difetti di programmazione e le incompatibilità, in
quanto lavoriamo sul sistema operativo originale, che crede di essere
nel suo hardware nativo, come
svantaggio abbiamo che il sistema è più lento ad essere
eseguito, in quanto la macchina host deve eseguire molti più
calcoli, per far funzionare il guest e tutti i calcoli aggiuntivi che
necessita (in fondo sono due macchine una all'interno dell'altra, ma
entrambe appoggiate ad un solo processore reale). Tra gli emulatori
troviamo consolles di gioco, palmari, cellulari. Molto
spesso queste macchine virtuali sono fornite insieme agli strumenti di
sviluppo e di programmazione di nuove applicazioni. In questa maniera
è possibile creare nuovi software e testarli senza il rischio di
rovinare nessun apparecchio, ma anche facendo molti test rapidamente,
senza dover affrontare problemi di connessione e trasferimento del
software sull'apparecchio (i quali non hanno mai periferiche quali
CD-ROM, o porte USB standard per trasferire i software), quindi devono
per forza essere collegate con un cavo apposito ad un computer.
A volte è possibile incontrare il termine "Layer di
compatibilità", in genere usato per Wine, programma creato per
Linux con lo scopo di rendere utilizzabili i programmi compilati e
creati per MS Windows, all'interno di Linux. Un Layer di
compatibilità è un emulatore di hardware che include un
software analogo ad un sistema operativo che funziona all'interno
dell'emulatore e che viene avviato in contemporanea con l'emulatore
(nel senso che non è possibile evitare che il sistema operativo
non si avii). Il pacchetto in questo modo è pronto per avviare
programmi creati per l'ambiente emulato. In genere il risultato
è leggermente meno performante di una macchina virtuale con
l'originale sistema operativo installato a bordo, e la
compatibilità spesso non è elevatissima.
- Virtual Machines
Le virtual machines sono un particolare tipo di emulatori, che emulano
un computer generico e non un particolare hardware dedicato (come per
esempio un
consolle di gioco), in genere non hanno bisogno di nessun file di ROM e
sfruttano le caratteristiche hardware della macchina fisica su cui
stanno funzionando; in altre parole, in genere, non riescono ad emulare
processori differenti a quello della macchina host.
All'interno di una macchina virtuale
è possibile installare dei sistemi operativi, in maniera del
tutto analoga alla realtà, il sistema operativo crede di essere
in un reale computer fisico, del quale usa tutte le sue periferiche e
per farlo necessita di drivers. Una caratteristica delle macchine
virtuali
è quella di poter installare il sistema operativo che si crede,
a prescindere del sistema che ospita la macchina virtuale. In genere i
dischi rigidi su cui viene installato il sistema
operativo sono dei semplici files gestiti dalla macchina virtuale, per
cui duplicare un HD, spostarlo o montarlo su una macchina virtuale
differente, sono operazioni che si limitano alla semplice gestione di
un file e sono operazioni eseguibili in pochi secondi. Inoltre spesso
è molto semplice modificare la configurazione HW della macchina
stessa: ci serve più ram? si apre il pannello delle impostazioni
e si scrive quanti mega o giga servono (ovviamente devono esistere
fisicamente all'interno della macchina reale che ospita la VM); la
scheda video è poco potente? nella stessa maniera si aumenta la
ram video. Serve un secondo disco rigido? con tre click di mouse un
secondo HD è generato e montato. Si deve capire come mettere in
rete sistemi operativi completamente differenti? Si vuole collaudare
quale sia il sistema operativo open migliore per un server? Si vuole
collaudare un prototipo di OS in rilascio beta? Si ha la
necessità di installare e disinstallare sullo stesso sistema
decine di applicazioni di cui non si conosce la reale
affidabilità (e se siamo sotto MS Windows questo significa
alterare ed inquinare il registro in maniera pesante e spesso
deleteria, e riempire il sistema di files residui in grande
quantità)? Con una macchina virtuale sono tutte operazioni che
non ci costano nulla in termini economici e di stabilità del
sistema: se si rovina qualcosa cancello la macchina e ne ricreo una
nuova. Inoltre in molti casi è possibile congelare in più
punti il funzionamento della macchina e recuperarlo in futuro (quello
che viene chiamato "snapshot"). In un
contesto come quello appena descritto appare subito chiaro che eseguire
test, prove e stress di vario tipo è facilissimo e molto
agevole. Con una struttura del genere creare, collaudare, rovinare per
sbaglio delle macchine e ripristinarle in un paio di minuti è
una cosa estremamente semplice e rapida. Una ulteriore ed estremamente
interessante applicazione delle macchine virtuali consiste nel creare
su un'unica macchina reale (ovviamente molto potente in questo caso)
innumerevoli
macchine virtuali adibite come server di rete o server web. I costi
dell'impianto HW crollano mentre in genere le prestazioni restano
piuttosto elevate, inoltre si riducono quasi a zero i costi di
manutenzione e di gestione delle macchine. A questo punto una
società che fornisce server di rete in affitto abbatte i costi
ed affitta ai suoi clienti delle macchine virtuali del tutto
performanti. Esistono infatti delle macchine virtuali che permettono lo
spostamento di un computer virtuale da un ospite reale ad un altro,
senza che la VM si renda conto di nulla, senza che venga spenta e
neppure che perda il collegamento alla rete. Ovviamente esistono
macchine virtuali installabili su qualsiasi piattaforma e sistema,
mentre altre sono limitate e settoriali, esistono VM commerciali ed
altre Open Source. Non c'è che l'imbarazzo della scelta. Alcune
macchine virtuali professionali non hanno neppure bisogno del sistema
operativo ospite, loro stesse sono un sistema operativo.
Un curioso simulatore di un reale abaco cinese (riconoscibile per il
fatto che le decine nella sezione piccola sono gestite con due palline
e non con una sola come accade per gli abachi giapponesi). Si tratta di
un software molto semplice. La stessa ditta ha creato anche il
simulatore di Regolo Calcolatore. Questo
software si trova in
questa sezione in quanto l'abaco è uno dei più antichi
sistemi per assistere l'essere umano nel calcolo di grandi numeri. I
primi abachi risalgono al 2700 AC, risalenti alla cultura Sumera, e si
sono diffusi in tutto il modo noto e civilizzato. A pieno diritto
includo questo strumento nei sistemi artificiali di calcolo.
Screenshots:
Simulatore avviato in un guest MS Windows ospitato in una Virtual
Machine VirtualBox su guest Linux.
Si tratta di una simulazione molto fedele del sistema computerizzato di
guida e controllo della famiglia di astronavi Apollo. In grado di
simulare una gran parte delle versioni di Apollo. Dal sito di
riferimento è possibile scaricare anche il codice per cui
è possibile compilare il programma anche per altre piattaforme,
sul sito stesso si trovano le istruzioni per la compilazione per
FreeBSD, Solaris, iPhone.
Provarlo è molto divertente e ci si rende conto di quanto fosse
astratto l'uso di questo computer, tutti i comandi venivano impartiti
tramite una tastiera numerica, identificando i comand numerici immessi
tramite altri pulsanti che li definivano Verbi o Nomi.
Sul sito si trova anche un piccolo manuale operativo per preparare il
computer alla navigazione con istruzioni dettagliate e ben descritte.
Screenshots:
Simulatore avviato in un guest MS Windows ospitato in una Virtual
Machine VirtualBox su guest Linux.
Il pannello di avvio per scegliere il tipo di Apollo
Progetto portato avanti da una sola
persona, non open ma di libera
distribuzione. Gli ultimi sviluppi risalgono al 2006.
Elaborata macchina virtuale delle
vecchie piattaforme MAC dotate di
processori
68k. Ha un pannello di configurazione piuttosto elaborato in cui
è possibile impostare una grande quantità di variabili di
sistema e di hardware. Necessita dell'immagine del chip ROM originale.
Nell'esempio riportato è stato utilizzato un Powerbook 1400
della collezione personale del webmaster. Il fatto che Apple abbia reso
disponibile per il download l'installazione del vecchio sistema MACOS
7.5.3, considerato ormai obsoleto ed abbandonato, ha permesso una
discreta
diffusione di questo simpatico e decisamente interessante programma. La
sua utilità è comunque limitata allo studio amatoriale
dei vecchi sistemi MAC, in quanto il
sistema MACOS 7 è decisamente molto vecchio, ma Basilisk in
questa maniera permette l'utilizzo di softwares antichi di essere
utilizzati anche su PC o Linux. Un sistema MACOS 7 è
tranquillamente aggiornabile a versioni successive tramite software
originale MAC. Usare un sistema MAC con Basilisk è molto
piacevole, è inoltre in grado di caricare HD della macchina host
in lettura e scrittura. MACOS 7 in questa macchina virtuale funzione ad
una velocità che il sistema ai suoi tempi non ha mai provato.
Screenshots:
Macchina Virtuale VirtualBox host:
Linux, Guest: MS Windows XP a sua
volta host di Basilisk con MACOS 7.5.3 come guest.
Pannello di controllo
MACOS 7.5.3 in azione
MACOS 7 in fase di installazione
Tre sistemi uno dentro l'altro,
Ubuntu 9.04 che ospita Windows XP
che ospita MacOs 7.5
Portato avanti da quattro persone, interessante emulatore di una
macchina x86 di vecchio tipo con montato un DOS simulato versione 5.0.
Emula anche un hardware SoundBlaster molto bene, tanto che giochi molto
esigenti funzionano credendo di avere una vera SB a disposizione. Molto
utile per riutilizzare vecchi giochi e programmi creati per MS DOS.
Supporta i principali comandi tipici di DOS anche se non molti per la
verità ed anche alcuni comandi tipici
di Unix, come "mount". Di base non carica nessuna periferica ed
è necessario fare il mounting del CDROM e di cartelle a piacere
che vengono mappate come se fossero dei dischi fissi. Questo rendo
molto semplice utilizzare programmi dentro l'emulatore, in quanto
è sufficiente copiare nella cartella mappata quello che si
vuole. Il disco di sistema dell'emulatore è mappato Z: ed
è di sola lettura.
Digitando al prompt il comando "intro" appare un breve ma utile lista
di esempi e comando per l'uso dell'emulatore. Inoltre è molto
semplice aumentare o diminuire la velocità del processore
emulato, in modo da regolare l'esecuzione dei programmi. Per i vecchi
giochi risulta veramente molto efficace e divertente, forse un poco
scomodo dover mappare CDROM e cartelle ad ogni avvio, ma poi il
divertimento è assicurato. I vecchi giochi funzionanti sono
oltre 800, certamente testati. Il sistema non carica nessuna tastiera
particolare per cui di base viene caricata la tastiera inglese. La
finestra non è ridimensionabile ma può essere estesa a
schermo intero.
Screenshots:
Versione per Linux in Linux Ubuntu 8.04 reale. Versione per MS Windows
in guest MS Windows XP in guest VirtualBox su Linux.
Interessante progetto disponibile solo per Linux, emula una macchina
x86 con preinstallato un FreeDos molto completo. La finestra è
ridimensionabile a piacere, la tastiera del sistema host viene caricata
direttamente in DosEmu, il lettore CDROM viene caricato automaticamente
all'avvio del layer di compatibilità. Il disco C: del sistema
coincide con una cartella, con accesso in lettura e scrittura, nella
home dell'utente, caricata all'avvio del sistema emulato, basta copiare
in quella cartella i dati per ritrovarli disponibili al prompt. Il
progetto è fermo al 2007, ma è abbastanza maturo per
essere utilizzato senza problemi. La compatibilità con i
programmi per MS DOS è molto elevata ed è in grado di far
funzionare una grande quantità di software, tra cui anche MS
Windows 3.0.
Possiede un ottimo editor identico ad EDIT di DOS.
Screenshots:
DosEmu avviato in macchina reale Linux Ubuntu 9.04
DosEmu avviato con i dischi caricati
L'editor interno molto simile a EDIT
Duke Nukem dalla mia collezione di
originali antichi
Prodotto da PalmOS ma ritrovabile solamente su svariati siti di
download. I link presenti all'interno del programma stesso non sono
più validi. Esistono comunque molti siti in cui si forniscono
manuali ed istruzioni per il suo uso e configurazione. Viene rilasciato
con una ROM di un Palm IIIc, ma supporta anche altre versioni di Palm
quali il Palm V, varie versioni, Palm VI. Tutti i comandi di
manutenzione vengono dati
attraverso il menù richiamato con il tasto destro. Tramite il
menù contestuale destro
è possibile installare i softwares creati per PalmOs, salvare e
richiamare la configurazione, cambiare la skin, creare una nuova
macchina con una ROM differente e molto altro ancora. Tramite questo
sistema è possibile creare svariate macchine con ROM diverse e
con differenti set di programmi installati. L'interfaccia può
essere visualizzata in grandezza normale oppure doppia, come nelle
immagini che seguono. Sempre tramite il tasto destro è possibile
esportare ed importare qualsiasi file di database interno al sistema.
Sono presenti diversi sistemi di assistenza per il debug dei softwares
installati e per lo studio dell'esecuzione dei programmi. Un ottimo
sistema per testare le applicazioni per Palm prima di installarle su un
vero Palm. Il comportamento del palmare è perfetto, sembra
proprio di usare una di queste macchine, è molto piacevole e
divertente.
Screenshots:
VirtualBox in Linux con guest MS Windows XP che ospita PalmEmulator.
Wine 1.01 in Linux Ubuntu 9.04 che esegue PalmEmulator per Windows.
Per dichiarazione del produttore si tratta di un simulatore, il
software è tutto contenuto in una cartella con un eseguibile
diretto, funziona senza installazione. Il programma interpreta poi il
contenuto di una ROM, fornita con il programma, che contiene il sistema
originale PalmOS. Tutti i comandi di gestione e le opzioni del
simulatore si trovano nel tasto destro. Anche in questo caso è
possibile installare programmi per PalmOs e monitorarne il
comportamento. Il programma simula anche una scheda SD di cui si
può scegliere la dimensione e che corrisponde ad una cartella
sul disco del sistema host. Tutte le caratteristiche del sistema PalmOS
Cobalt 6.1 sono mantenute, la possibilità di ruotare il desktop,
le stagioni illustrate nell'intestazione dell'agenda, le connessioni
BlueTooth e wireless, la sincronizzazione con la basetta, la tastiera
del cellulare, ecc. La velocità del simulatore non è
immediata, si notano alcuni rallentamenti nel funzionamento, cosa che
invece non si avverte nel PalmEmulator 3.0a7.
Screenshots:
Simulatore in MS Windows guest di un host VirtualBox su Linux Ubuntu
9.04
Un interessante progetto open source che emula l'architettura PowerPC,
fermo al 2005, ma costantemente seguito e arricchito da consigli e da
tutorial su decine di forum. Necessita del disco originale di
installazione fornito da Apple, mentre l'hardware è
completamente emulato senza necessità di altro. Esistono alcune
distribuzioni in formato torrent che includono il sistema operativo,
ovviamente illegali e come tali il loro utilizzo è da
sconsigliare. Il sistema è perfetto, nessuna differenza da un
MAC reale, a parte la velocità, che dipende dalla potenza della
macchina host. Funziona anche all'interno di una macchina virtuale MS
Windows ospitata all'interno di Linux, ma la gestione del mouse risulta
veramente scomoda (la velocità del puntatore è
elevatissima, quindi il mouse è difficilmente utilizzabile).
Screenshots:
Macchina virtuale VirtualBox host Linux Ubuntu 9.04 guest MS Windows XP
Altra realizzazione della Halcyon Computer Company che ha anche creato
il
simulatore dell'Abaco cinese. Molto interessante,
anche se risulta piuttosto complesso leggere i valori sugli indicatori
del regolo stesso.
Screenshots:
Simulatore avviato in un guest MS Windows ospitato in una Virtual
Machine VirtualBox su host Linux.
Progetto open source poi patrocinato da Sun Microsystems Inc. Si tratta
di una macchina virtuale x86, basata sul processore della macchina
host, la RAM è flessibile e regolabile a piacimento come la
memoria video. La scheda sonora e la scheda di rete possono essere
emulate in varie maniere. Il CDROM può essere quello fisico
della macchina host, oppure usare un file ISO. Nella stessa maniera ci
si muove per il floppy. I dischi fissi possono essere facilmente creati
con uno strumento interno in pochi secondi in questo caso sono dei
files che vengono utilizzati come dischi virtuali, oppure è
possibile montare direttamente interi dischi fisici. Qualsiasi sistema
operativo che possa funzionare su una macchina x86 può essere
installato su una macchina virtuale VirtualBox. Sono disponibili
inoltre, in formato ISO, dei pacchetto di drivers ed utility che
permettono di connettere la macchina virtuale alla macchine host via
rete. In questa maniera diventa molto semplice trasferire dati dentro e
fuori del sistema guest. Si tratta di una soluzione potente, pratica e
molto utile per eseguire tutti i possibili esperimenti e prove, con la
possibilità di ripristinare il sistema in pochi secondi.
Screenshots:
Vari guest in un host su Linux Ubuntu 9.04
VirtualBox avviato in Ubuntu 9.04
Dos, Reactos, Win98 e WinXP
avviati in contemporanea su Ubuntu
Linux Mepis guest di Linux Ubuntu,
Konqueror aperto su questo sito
In costante sviluppo, il progetto si propone di ricreare un ambiente
compatibile con applicazioni compilate per MS Windows. Su dichiarazione
degli stessi sviluppatori, Wine non è un emulatore: "Wine is not
an emulator". Il layer si basa
sulle librerie API rese disponibili da Microsoft, stessa base su cui si
fonda il progetto Reactos. Il programma ha un completo pannello di
controllo che permette una buona configurazione delle modalità
di funzionamento. Il programma ha la capacità di emulare tutte
le versioni di MS Windows partendo da Windows 2 fino ad un fantomatico
Windows 2008, successivo a Vista, forse intendendo Windows 7. Non
altissima la compatibilità con i vari programmi compilati per MS
Windows, spesso si deve intervenire nella configurazione e a volte si
devono installare librerie varie, sul sito, ben fatto e ben
documentato, esiste una estesa lista di compatibilità e
numerosissime immagini. Ha molti punti in comune con il
progetto Reactos, basato anch'esso sulle stesse API libere.
Emulatore per Amiga, molto accurato e completo, ricco di controlli e
strumenti per configurare molto raffinatamente la macchina. Risulta
molto divertente per recuperare ed utilizzare vecchi programmi e giochi
creati per Amiga. Il pannello di controllo alla base della finestra
permette di controllare i dischi e le prestazioni.I giochi per AMIGA
sono sempre stati famosi per la grafica e la musica, che per stare
tutto su un floppy da 1.4 raggiungevano un grado di definizione
incredibile. Molto utile la possibilità di regolare la
sensibilità del mouse in modo da renderlo gestibile, spesso
risulta così rapido da essere inutilizzabile.
Screenshots:
Emulatore in MS Windows guest di un host VirtualBox su Linux Ubuntu
9.04
Il pannello delle proprietà
L'avvio della ROM
Il boot della macchina. in attesa di un floppy
WorkBench, interfaccia grafica di AMIGA OS che amministra un gioco:
Dejavu.