Capitolo successivo Capitolo precedente Indice

66. Emulatori

Su una piattaforma Linux è possibile utilizzare programmi realizzati per altri sistemi operativi, attraverso vari tipi di emulatori. In generale, questa emulazione può avvenire in due modi fondamentali: riproducendo il funzionamento dell'hardware di un tipo di computer, oppure riproducendo interamente il funzionamento di un altro sistema operativo. La prima delle due scelte implica l'utilizzo successivo di un sistema operativo in grado di utilizzare l'emulatore hardware e con il quale si possono poi utilizzare altri programmi. La seconda, permette di utilizzare direttamente i programmi adatti al tipo di sistema operativo che viene emulato.

Le implicazioni sulla differenza tra l'emulazione dell'hardware e quella di un sistema operativo sono sia tecniche che giuridiche. Se si emula l'hardware occorre poi procurarsi il sistema operativo e soprattutto la licenza di questo. Se si emula l'hardware spesso è necessario copiare da qualche parte il contenuto del firmware (programma su ROM) utilizzato nel computer da emulare. Ma questo, nella maggior parte dei casi, è una azione illegale (anche se non si sente parlare di cause contro azioni di questo genere).

Nelle sezioni seguenti vengono descritti solo alcuni emulatori funzionanti su Linux, e la scelta è dovuta solo alla conoscenza ed alle abilità di chi scrive.

66.1 DOSEMU - l'emulatore di hardware DOS compatibile

DOSEMU è fondamentalmente un emulatore dell'hardware x86 per vari sistemi Unix funzionanti su architettura PC. Il suo obbiettivo è quello di permettere il funzionamento del sistema operativo Dos (MS-Dos o cloni). Si tratta ancora di un progetto in fase di sviluppo (alpha) e di conseguenza, non è arrivato a un livello minimo accettabile di funzionamento, e neanche di sicurezza.

Dal momento che l'emulazione riguarda l'hardware, il Dos deve essere installato all'interno di questo sistema di emulazione. Di conseguenza, è necessaria una copia di questo sistema operativo, insieme alla licenza d'uso.

<!>   DOSEMU permette di utilizzare la stessa copia installata del Dos su più terminali contemporaneamente. Se si intende concedere l'utilizzo simultaneo di una singola copia di questo sistema operativo, è necessario un numero maggiore di licenze d'uso, oppure una licenza multipla.

Predisporre un ambiente adatto al DOS all'interno di DOSEMU

Perché il sistema operativo Dos possa funzionare all'interno di DOSEMU, occorre preparare un file immagine di un disco Dos dal quale si possa effettuare l'avvio del Dos stesso. Questo file che viene descritto di seguito, verrà visto dal Dos come disco C:.

Successivamente è conveniente predisporre uno spazio all'interno del proprio filesystem Linux da utilizzare per i programmi Dos che verrà letto come un disco di rete.

Un disco C: immagine

Per effettuare l'avvio del Dos occorre che sia predisposta l'immagine di un disco di piccole dimensioni. Questo dovrebbe essere /var/lib/dosemu/hdimage.

Se non esiste questo file è necessario copiarlo dal pacchetto sorgente. Il nome dovrebbe essere: hdimage.dist. Questa immagine verrà preparata in seguito.

Un disco D: virtuale o di rete

In questa fase conviene preparare una directory che servirà per definire l'inizio (la radice) del disco D: virtuale utilizzato dai programmi Dos. Stabiliamo che questo sia /var/emul/dos/. Da questo punto in poi, D:\ è equivalente a /var/emul/dos/.

La struttura essenziale del disco D: virtuale

Il disco D: virtuale dovrebbe contenere alcune directory che riproducono in pratica il classico ambiente Dos:

Per evitare la proliferazione di directory temporanee, è possibile utilizzare al posto di /var/emul/dos/temp/ un link simbolico che punti a /tmp/.

# ln -s /tmp /var/emul/dos/temp

La configurazione di DOSEMU

La configurazione di DOSEMU consiste nella modifica dei file /etc/dosemu.conf e di /etc/dosemu.users. L'ultimo, /etc/dosemu.users, è il più semplice: si tratta di scrivere un elenco di utenti che possono utilizzare DOSEMU.

root
arturo
roby

La preparazione di /etc/dosemu.conf è invece più delicata. Il file di esempio già fornito all'interno del pacchetto di distribuzione di DOSEMU è commentato molto dettagliatamente. Di seguito vengono indicate solo alcune parti particolarmente importanti, le altre conviene lasciarle come sono.

# Viene impostata la mappatura della tastiera per uniformarsi alla
# disposizione dei tasti in Italia.
keyboard {  layout it  keybint on  rawkeyboard on  }

# Si suppone che il modem sia connesso alla seconda porta seriale.
serial { com 2  device /dev/modem }

# Si suppone che il mouse sia connesso alla prima porta seriale.
serial { mouse  com 1  device /dev/mouse }

# Si suppone di avere un mouse Microsoft compatibile.
mouse { microsoft }

# Si definisce un set di caratteri video adatto.
terminal { charset latin  updatefreq 4  color on }

# Si suppone di disporre di una scheda video VGA standard.
video { vga  console  graphics }

# Si abilita l'avvio dal disco C:.
bootC

# Si abilita l'uso del file immagine che verrà utilizzato come disco C:.
disk { image "/var/lib/dosemu/hdimage" }

# Si abilita l'uso del dischetto da 3,5 pollici nell'unità A:.
floppy { device /dev/fd0 threeinch }

# Si abilita l'uso della stampante attraverso lpr.
printer { options "%s"  command "lpr"  timeout 20 }

Installare il DOS

Il prossimo problema è quello di riuscire a installare il Dos nel file immagine che servirà per effettuare l'avvio del Dos stesso.

Preparazione di un dischetto di avvio

Per prima cosa occorre preparare un dischetto Dos avviabile che contenga qualche programma di utilità indispensabile. Da un computer che stia eseguendo il sistema operativo Dos si procede come segue:

C:> format a: /s

C:> copy c:\dos\sys.* a:

C:> copy c:\dos\fdisk.* a:

Oltre a questi file converrebbe preparare nel dischetto un programma per la creazione e modifica di file di testo. Servirà per preparare i file config.sys e autoexec.bat.

Avvio del dischetto attraverso DOSEMU

È necessario quindi avviare il Dos contenuto nel dischetto appena creato attraverso DOSEMU. Per fare questo, dal computer Linux si avvia DOSEMU nel modo seguente.

# dos -A

Se tutto è andato bene, si avvia il Dos e dopo la richiesta della data e dell'ora appare l'invito (prompt) classico.

A:\>

Trasferimento del sistema

Per trasferire nel file immagine il sistema contenuto nel dischetto, in modo da rendere questa immagine avviabile, occorre procedere prima con la creazione di un MBR (Master Boot Record):

A:\> fdisk /mbr

quindi con il trasferimento del sistema:

A:\> sys c:

Se è andato tutto bene, adesso il disco C:, cioè l'immagine, è pronto.

Controllo del disco C:

Il disco C: dovrebbe contenere alcuni file di DOSEMU. Per verificare il contenuto è sufficiente spostarsi in C:.

A:\> c:

C:\> dir

Modifica di config.sys

Trovandosi in C:, potrebbe essere conveniente modificare i file config.sys e autoexec.bat. Si inizia con config.sys.

Si stabilisce di poter utilizzare tutte le lettere di drive a disposizione.

lastdrive=z

Si definisce attraverso il driver emufs.sys di DOSEMU che la prossima lettera di disco a disposizione punti alla directory /var/emul/dos/. Di conseguenza, quella directory verrà interpretata come disco D:

device=c:\emufs.sys /var/emul/dos

Viene avviato il driver ems.sys di DOSEMU che si occupa della gestione della memoria estesa.

device=c:\ems.sys

Se in seguito sarà opportuno, si potrà sempre apportare modifiche a questo file.

Modifica di autoexec.bat

Inizialmente il file non necessita di modifiche. Si vedrà in seguito come configurare al meglio questo file.

Conclusione dell'installazione

Per terminare la sessione di lavoro dell'installazione occorre fare terminare l'esecuzione di DOSEMU che era stato avviato in precedenza con il comando dos -A. Per chiudere si utilizza il programma exitemu.com:

C:\> c:\exitemu

Verifica

Se tutto è andato come previsto, il Dos è pronto. Si può provare ad avviare il Dos senza l'uso del dischetto semplicemente con il comando:

$ dos

Se ha funzionato, si otterrà l'invito normale:

C:\>

Per uscire si utilizza il programma exitemu.com:

C:\> exitemu

I dischi virtuali con lredir

Il programma lredir è in grado di consentire l'accesso a porzioni del filesystem di Linux attribuendo una lettera di drive. Per esempio:

C:\> lredir x: \linux\fs\/home

fa sì che il disco X: corrisponda al contenuto della directory /home.

Il mouse

Teoricamente, DOSEMU è in grado di gestire da solo il mouse. In pratica potrebbe non essere così. In tal caso conviene provare ad avviare un mouse driver all'interno del config.sys o di autoexec.bat.

Un esempio di autoexec.bat

Nell'esempio seguente viene utilizzato un mouse driver estraneo a DOSEMU. Il disco D: era stato implicitamente definito all'interno di config.sys attraverso device=c:\emufs.sys /var/emul/dos.

@echo off

lredir e: linux\fs\/home
lredir f: linux\fs\/mnt/dosc

prompt=$p$g
path=c:\
path=%path%;d:\;d:\dos

set temp=d:\temp

d:

d:\dos\mouse

echo "Welcome to dosemu"

DOSEMU e le console virtuali

Quando viene avviato il Dos attraverso DOSEMU, questo opera nella console virtuale sulla quale ci si trova. Di solito per passare da una console virtuale all'altra è sufficiente premere la combinazione [Alt+F1] o [Alt+F2] ... Quando ci si trova su una console virtuale all'interno della quale sta funzionando il Dos, per passare a un'altra si agisce con la combinazione [Ctrl+Alt+F1] o [Ctrl+Alt+F2] ...

DOSEMU da X Window System

Per avviare il Dos in una finestra X Window System, conviene avviare DOSEMU attraverso xdos che normalmente è un link simbolico a dos.

Implicazioni sulla gestione dei permessi

Il Dos non è un sistema operativo multiutente e di conseguenza non è in grado di attribuire dei permessi ai file. Quando si utilizza il Dos all'interno di DOSEMU, i permessi vengono gestiti in modo predefinito.

Quando si crea un file gli vengono attribuiti i permessi predefiniti in base a quando stabilito con la maschera umask e l'utente e il gruppo proprietario corrispondono all'utente che ha avviato DOSEMU e al gruppo cui questo utente appartiene.

Quando si accede a un file, l'apparenza delle caratteristiche di questo cambiano a seconda che l'accesso avvenga da parte di un utente rispetto a un altro: l'utente che ha creato il file può modificarlo, un altro potrebbe trovarlo protetto in sola lettura.

In particolare, i file contenuti nel file immagine che costituisce il disco C: hanno le proprietà e i permessi del file immagine stesso.

Ma il Dos non è in grado di gestire tutte le finezze che può invece amministrare un sistema Unix, di conseguenza, quando si tenta di fare qualcosa che i permessi non consentono, si ottengono per lo più delle segnalazioni di errore che normalmente non si vedono quando si usa il Dos da solo senza emulazioni.

Quando si utilizza il Dos con DOSEMU su un sistema al quale accede un solo utente, non dovrebbero porsi problemi: basta che l'unico utente utilizzi sempre lo stesso account. Quando lo si utilizza invece in un sistema al quale accedono più utenti, è ragionevole desiderare che i dati personali possano essere inaccessibili agli altri, e quindi, questo modo trasparente di gestire i permessi può essere solo positivo. Quando si vogliono gestire alcune attività in gruppo si può eventualmente aggirare l'ostacolo utilizzando un account comune specifico per quel compito.

Un'ultima annotazione deve essere fatta per i file eseguibili che non necessitano dei permessi in esecuzione, come invece richiederebbe Linux. È sufficiente che ci siano i permessi in lettura.

66.2 WINE - l'emulatore MS-Windows

WINE è un programma che permette di eseguire programmi realizzati per MS-Windows all'interno dell'ambiente grafico X Window System. WINE è quindi un emulatore di MS-Windows.

Si tratta ancora di un progetto in fase di sviluppo (alpha) e di conseguenza, non è arrivato a un livello minimo accettabile, di funzionamento, e neanche di sicurezza.

Attualmente, WINE è in grado di fare funzionare (senza però alcuna sicurezza) solo alcuni programmi realizzati per MS-Windows 3.1.

<!>   Per poter utilizzare WINE allo stato in cui si trova in questo momento, sono ancora indispensabili alcuni componenti di MS-Windows 3.1 (sono essenzialmente delle librerie). Per questo motivo, oltre che esserci bisogno di una copia di MS-Windows 3.1 è necessaria anche una licenza d'uso.

http://www.linpro.no/wine/

Predisporre un ambiente adatto ai programmi per WINE

Dal momento che i programmi realizzati per MS-Windows sono stati pensati per lo più per funzionare su un filesystem di tipo FAT, sarebbe consigliabile di riservare per questi una partizione di questo tipo. Tuttavia, potrebbe essere molto più affascinante l'idea di incorporare tutto all'interno del filesystem di Linux e in questo senso sono realizzati gli esempi seguenti.

Un disco C: virtuale

In questa fase conviene preparare una directory che servirà per definire l'inizio (la radice) del disco C: virtuale utilizzato dai programmi per MS-Windows. Stabiliamo che questo sia /var/emul/windows/. Da questo punto in poi, C:\ è equivalente a /var/emul/windows/.

La struttura essenziale del disco C: virtuale

Il disco C: virtuale dovrebbe contenere alcune directory che riproducono in pratica il classico ambiente DOS-Windows:

Per evitare la proliferazione di directory temporanee, è possibile utilizzare al posto di /var/emul/windows/temp/ un link simbolico che punti a /tmp/.

# ln -s /tmp /var/emul/windows/temp

Una volta preparata la struttura essenziale occorre inserire alcuni file.

All'interno di /var/emul/windows/windows/ (C:\WINDOWS) si devono preparare alcuni file .ini vuoti. Si tratta di win.ini e di system.ini.

# touch /var/emul/windows/windows/win.ini

# touch /var/emul/windows/windows/system.ini

All'interno di /var/emul/windows/windows/system/ (C:\WINDOWS\SYSTEM) occorre collocare alcuni file di libreria provenienti da una versione originale di MS-Windows 3.1 (come già spiegato, questo implica la necessità di avere una licenza d'uso per MS-Windows 3.1). Probabilmente, i file seguenti sono indispensabili.

La configurazione di WINE

Il file /etc/wine.conf (ed eventualmente ~/winerc) deve essere predisposto prima di poter eseguire alcuna emulazione. L'esempio seguente fa riferimento alla struttura di directory vista in precedenza. In particolare, all'interno di Linux, il dischetto viene montato nella directory /mnt/dosa.

[Drive A]
Path=/mnt/dosa
Type=floppy

[Drive C]
Path=/var/emul/windows
Label=ext2fs

[Drive D]
Path=${HOME}

[wine]
windows=c:\windows
system=c:\windows\system
temp=c:\temp
path=c:\windows;c:\windows\system

symboltablefile=./wine.sym

[serialports]
com1=/dev/cua1
com2=/dev/cua1

[parallelports]
lpt1=/dev/lp1

[spy]
;File=CON
;File=spy.log
Exclude=WM_TIMER;WM_SETCURSOR;WM_MOUSEMOVE;WM_NCHITTEST;
Include=WM_COMMAND;

L'esecuzione di un programma

Per mettere in esecuzione di un programma attraverso WINE è necessario avviare prima l'ambiente grafico (di solito attraverso startx), quindi aprire una finestra di terminale e da lì eseguire il comando seguente.

wine [<opzioni>] <pathname-completo-del-programma>

Per esempio, per avviare il file pfe.exe che si trova all'interno di c:\pfe si eseguirà:

$ wine "c:\pfe\pfe"

oppure la riga seguente.

$ wine /var/emul/windows/pfe/pfe.exe

Alcuni programmi di MS-Windows 3.1 che si lasciano eseguire

Alcuni programmi che fanno normalmente parte di MS-Windows possono essere molto utili. Per poterli utilizzare, è necessaria una licenza d'uso per MS-Windows.

Di seguito vengono elencati i file necessari a permettere il funzionamento di File manager e di Win help. Questi file devono essere collocati all'interno della directory C:\WINDOWS.

File manager

Il File Manager di MS-Windows 3.1 potrebbe essere particolarmente utile, per esempio per associare i file ai loro programmi. Sono necessari i file seguenti.

In particolare, winfile.ini, può essere inizialmente anche vuoto.

Win help

Questo programma serve per poter leggere i file di guida .hlp. Sono necessari i file seguenti.

Alcuni programmi freeware che si lasciano eseguire

I programmi utili che funzionano con WINE senza troppi problemi sono pochi. Segue un breve elenco di applicazioni che possono essere usate utilmente e che appartengono alla categoria del software libero.

PFE 0.06.002

Si tratta di un programma per la creazione e modifica di file di testo abbastanza sofisticato in grado di utilizzare sia il sistema delle interruzioni di riga in stile Dos che in stile Unix scritto da Alan Phillips (A.Phillips@lancaster.ac.uk). Si può ottenere presso l'indirizzo seguente.

http://www.simtel.net/pub/simtelnet/win3/editor/pfe0602.zip

Stuffit expander 1.0

Si tratta di un programma per l'estrazione di archivi compressi. È prodotto da Aladdin Systems, Inc. Si può ottenere presso l'indirizzo seguente.

http://www.aladdinsys.com/consumer/expander1.html

Implicazioni sulla gestione dei permessi

WINE si comporta in maniera analoga a DOSEMU per quanto riguarda il problema della gestione dei permessi dei file e delle directory. Valgono quindi le stesse considerazioni fatte a questo proposito nella sezione `Implicazioni sulla gestione dei permessi'.

66.3 Twin - un altro emulatore MS-Windows

Twin, ovvero Willows Twin Libraries, è un sistema di emulazione che permette di eseguire programmi realizzati per MS-Windows all'interno dell'ambiente grafico X Window System.

Si tratta ancora di un progetto in fase di sviluppo (alpha) e di conseguenza, non è arrivato a un livello minimo accettabile, di funzionamento, e neanche di sicurezza.

Attualmente, Twin è in grado di fare funzionare (senza però alcuna sicurezza) solo alcuni programmi realizzati per MS-Windows 3.1.

Si tratta di un progetto parallelo a WINE e, almeno per ora, i due si equivalgono. Twin, in particolare, ha il vantaggio di fornire al programma utilizzato un livello di astrazione superiore rispetto a quanto fatto da WINE, per cui i programmi funzionano in normali finestre di X Window System. La cosa più importante è che non serve alcun componente originale di MS-Windows: tutte le librerie principali sono emulate.

http://www.willows.com

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice