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.
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.
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.
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.
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/.
Il disco D: virtuale dovrebbe contenere alcune directory che riproducono in pratica il classico ambiente Dos:
equivalente a /var/emul/dos/temp/;
equivalente a /var/emul/dos/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 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 }
Il prossimo problema è quello di riuscire a installare il Dos nel file immagine che servirà per effettuare l'avvio del Dos stesso.
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.
È 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:\>
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.
Il disco C: dovrebbe contenere alcuni file di DOSEMU. Per verificare il contenuto è sufficiente spostarsi in C:.
A:\>
c:
C:\>
dir
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.
Inizialmente il file non necessita di modifiche. Si vedrà in seguito come configurare al meglio questo file.
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
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
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.
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.
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"
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
Per avviare il Dos in una finestra X Window System, conviene avviare DOSEMU attraverso xdos che normalmente è un link simbolico a dos.
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.
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.
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.
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/.
Il disco C: virtuale dovrebbe contenere alcune directory che riproducono in pratica il classico ambiente DOS-Windows:
equivalente a /var/emul/windows/temp/;
equivalente a /var/emul/windows/windows/;
equivalente a /var/emul/windows/windows/system/.
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.
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;
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 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.
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.
Questo programma serve per poter leggere i file di guida .hlp. Sono necessari i file seguenti.
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.
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
Si tratta di un programma per l'estrazione di archivi compressi. È prodotto da Aladdin Systems, Inc. Si può ottenere presso l'indirizzo seguente.
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'.
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.
1997.10.26 - Scritto da Daniele Giacomini daniele@calion.com (vedi copyright: Appunti Linux).