DOSEMU
L'emulatore DOS per Linux
di Davide Michel Morelli
moreld@dsi.unimi.it
Da quando Linus Torvald ha creato Linux, questo SO è stato sempre
nell'ombra. Adesso, invece, la sua fama sta crescendo giorno per giorno, i
programmi ``funzionanti'' sotto di esso si moltiplicano mese per mese, e,
sicuramente, non poteva mancare l'emulatore del più famoso SO in
circolazione: il DOS.
Un po' di storia
L'idea del DosEmu nasce dalla mente di Matthias Lautner, programmatore
Linux, che nel Settembre 1992 rilascia la prima versione beta, la 0.1. Da
allora è passata molta acqua sotto i ponti, tanto che adesso il
responsabile non è più Lautner, ma James MacLean
(jmaclean@fox.nstn.ns.ca), dopo che lo stesso Lautner aveva lasciato, a sua
volta, il posto a Robert Sanders. Anche il DosEmu stesso ha fatto passi da
gigante nelle 19 release fino ad ora uscite, tanto che è persino
utilizzabile il compilatore C++ 3.0 della borland o giocare a giochi Dos del
calibro di Warcraft, DESCENT e persino il gioco per eccellenza: DOOM (con
seguito incluso).
I preliminari
Per funzionare il DosEmu non è necessario avere un computer super
dotato o file che non sono inclusi in una qualsiasi distribuzione. Per
sicurezza, ecco cosa avete bisogno per compilare propriamente il DosEmu.
- Linux (ovviamente)
- i sorgenti di un kernel >= 1.1.45
- supportare nel kernel di linux i "file" IPC
- gcc >= 2.5.8 e libc >= 4.5.21
- bison
- flex
Comunque migliori informazioni possono essere trovate nell'HowTo del DosEmu,
reperibile su
ftp.unipd.it:/pub/Linux/pluto/docs/HOWTO.
Il patch del kernel
Con l'ultima release del DosEmu vi è la possibilità di poter
eseguire anche Windows 3.x, anche se bisogna precedentemente patch-are il
kernel. La cosa è molto più semplice di quanto si possa pensare.
Nella sotto-directory dpmi/
nella directory del sorgente del DosEmu vi
è il file kernel.diff che è il file necessario per effettuare
il patch-ing al kernel. Per effettuare questa operazione devi avere i
permessi di root poiché bisogna andare a modificare i file sorgente
del kernel di linux che di default sono di proprietà di root.
A questo punto le cose da fare sono :
- copiare il file kernel.diff nella directory /usr/src
(o quella comunque appena
precedente a quella dei sorgenti di linux)
- eseguire "patch kernel.diff"
- ricompilare il kernel
- sostituire il nuovo kernel a quello vecchio
- resettare la macchina
- compilare il dosemu
Nel caso in cui il dosemu, nella schermata principale dovesse
scrivere "Kernel is not patched for experimental use of Windows 3.1",
ovvero non ha riscontrato il patching al kernel, allora ricontrolla i passi
sopra citati. Avrai fatto sicuramente un errore.
Ricorda comunque che questo patching non è necessario per compilare il
DosEmu.
Configurare il makefile del dosemu prima di compilarlo
Configurare il Makefile del dosemu è molto semplice visto che tutti
i cambiamenti drastici sono preceduti da una spiegazione. Ma vediamo alcuni
esempi (i più importanti logicamente).
Inanzitutto se hai installato la slackware in formato ELF, tu puoi compilare
il dosemu in ELF, cambiando la riga
# ELF=1
in
ELF=1
Se hai installato sul tuo sistema X/Windows ma sei sicuro di non voler mai
utilizzare il DosEmu sotto X, allora puoi cambiare la riga
USE_X=1
in
# USE_X=1
Questo farà si che il dosemu non venga
compilato per poter essere utilizzato
sotto X.
Andando avanti nella scansione del Makefile principale, si possono trovare due
righe, una commentata, l'altra no, riguardanti la variabile
LINUX_KERNEL. Questa
variabile d'ambiente contiene la directory ove i sorgenti del kernel di linux
sono situati. Il makefile cercherà automaticamente codesta directory. Nel caso
in cui non la trovasse visualizzerà il seguente messaggio d'errore:
kversion.sh: cannot find any of the standard linux trees, giving up
points to your Linux source tree, which at least must contain ./include/*
In addition (if your ./linux/include lacks the version.h file):
You may edit and uncomment KERNEL_VERSION in the main Makefile,
but this is not recommended !
The format is:
KERNEL_VERSION=x0yy0zz meaning Linux version x.yy.zz
Example:
KERNEL_VERSION=1002002 meaning Linux version 1.2.2
Prima di fare quello che suggerisce il Makefile prova a commentare la riga
LINUX_KERNEL = $(shell sh ./tools/kversion.sh -find -print)
e a decomentare invece
#LINUX_KERNEL = /usr/src/linux
mettendo al posto di /usr/src/linux la directory ove i sorgenti di linux sono
contenuti. Salva, esci e prova a rimandare in esecuzione la compilazione (se
già hai letto le altre specifiche o se non ti interessano).
Nel caso in cui anche questa soluzione non andasse a buon fine allora segui
quello che ti consiglia il messaggio di errore sopra citato. Se nemmeno
questo và a buon fine, allora il tuo sistema non è configurato correttamente.
Molto più avanti vi sono due delle righe più importanti per la corretta
configurazione del Makefile del DosEmu. La prima è
CONFIG_FILE = -DCONFIG_FILE=\"/etc/dosemu.conf\"
Questa directory specifica al Dosemu in quale directory (scusate il gioco di
parole) dovrà andare a cercare il suo file di configurazione per
essere eseguito correttamente. Di default la
/etc è di root e quindi tu non
ci puoi andare a scrivere dentro. A questo punto ci sono 2 alternative: la prima
è quella di chiedere al tuo sysadm se può inserire il file
dosemu.conf
(vedi sotto per maggiori informazioni) nella directory /etc.
Se il tuo
sysadm ti dice ok, allora nessun problema, altrimenti, e questa è la
seconda possibilità, cambia la riga sopra citata in
CONFIG_FILE = -DCONFIG_FILE=\"/la_tua_home/dosemu.conf\"
In questo modo il DosEmu, quando chiamato, andrà a cercare il file di
configurazione non in /etc, ma nella directory da te specificata.
La stessa storia vale per la riga subito sotostante, ovvero
DOSEMU_USERS_FILE = -DDOSEMU_USERS_FILE=\"/etc/dosemu.users\"
di cui ti rimando all'HowTo del DosEmu per sapere a cosa serve codesto file.
Questo è tutto quello che devi sapere su come configurare egreggiamente la
parte principale del DosEmu.
COMPILARE IL DOSEMU
Il DosEmu può essere compilato in due modi diversi, con o senza Tex.
Nel caso in cui tu non lo abbia, il Tex, scrivi "make most", altrimenti
"make doeverything".
Questo è tutto quello che devi sapere su come compilare il DosEmu.
Attenzione: se non sei root alla fine della compilazione il DosEmu mostrerà
alcuni messaggi di errore. Questo perché esso cercherà di auto-installarsi
nelle directory
che di default sono di proprietà di root, tipo /usr/bin
o /usr/man.
Se tu non vuoi che il DosEmu si auto-installi esegui "make" e basta.
Configurare il DOSEMU
Configurare il DosEmu è facile quanto compilarlo. Nella directory
examples/
vi è il file config.dist. Questo file è l'unico file necessario per
il corretto funzionamento del DosEmu.
Per default codesto file deve essere
copiato nella directory /etc sotto il nome di
dosemu.conf, logicamente con i
permessi di root. Nel caso in cui tu non sia root o comunque il tuo sysadm
non ti conceda di inserirlo nella directory di default, come detto pocanzi
non ci sono problemi, basta copiarlo nella directory specificata nel
Makefile alla voce CONFIG_FILE.
Anche questo file, il dosemu.conf, è facile da modificare
poiché anche in
questo caso, per ogni voce vi è, prima, una breve
descrizione dei possibili
cambiamenti.
Partendo dalla testa del file troviamo come prima
cosa la parte relativa ai flag per il
debuging, tra i quali si annoverano il flag per il disk, per la porta seriale
e per quella parallela e persino un flag per l'hardware. Per default questi
flag sono disattivati tramite la parola off vicino ad ognuno di essi. Nel caso
in cui si necessiti di settare qualche flag, basta mettere, come dice
lo stesso file, on al posto di off ed il gioco è fatto.
Proseguendo nella visione del file di configurazione si trovano in ordine:
i settaggi per la tastiera, per la porta seriale e per quella parallela
comprensiva di settaggio mouse, per il network e per l'emulazione del
terminale, che per default è
terminal { charset latin updatefreq 4 color on }
Subito dopo la parte relativa al settaggio del terminale si trova il settaggio
dell'X/windows nel caso in cui si voglia usare il DosEmu in una finestra
dell'X/Windows e la parte necessaria al giusto configuramento relativo
alla parte grafica. I possibili settaggi di questa parte, come del resto quelli
di tutte le altre, sono
spiegate eccellentemente nello stesso file di configurazione, ed è quindi
impossibile spiegare come e cosa cambiare in modo migliore di come ciò
è già scritto nel codesto file.
Tornado alla scansione del "config", vi è una sola cosa da menzionare con
maggiore attenzione: la parte relativa alle partizioni dos, o, come definite nel
file stesso, per gli Hard Disks. Questa sezione è egreggiamente spiegata,
con una piccola dimenticanza: viene menzionata solo il modo per settare
una partizione dos. Nessun problema, ecco come risolvere il giallo: per settare
una partizione il dosemu.config richiede una stringa simile a
disk { partition "/dev/hda1" readonly }
che setta la partione dos definita in /dev/hda1 come la partizione di boot
del dos, partizione in sola lettura. Tralasciando il fatto che, come spiegato
nel file stesso, per far diventare la partizione anche scrivibile basta
togliere il readonly ed il gioco è fatto, per poter vedere anche un
altro drive, basta inserire una altra riga come quella sopra e, nuovamente, il
gioco è fatto. Se ad esempio si inserisce la riga
disk { partition "/dev/hdb1" readonly }
sotto quella precedentemente proposta, il DosEmu vedrà, e logicamente
settera, due HD, /dev/hda1 come C: e /dev/hdb1 come il D: .
Inoltre, al dosemu non importa come sia settati fisicamente i vari HD, ovvero
quale è il master e quale è lo slave: infatti se io avessi fisicamente il
drive individuato da /dev/hda1 settato come Master e /dev/hdb1 come Slave,
posso sempre far vedere al DosEmu il /dev/hdb1 come Master e /dev/hda1 come
Slave senza nessun problema, addio così ai restringimenti del M$Dos.
Concludono il file di configurazione le parti relative al
DosEmu Boot, al Floppy Disks e alla stampante.
Conclusioni
Come si è potuto notare nella lettura dell'articolo, il DosEmu, si presenta
come il migliore emulatore M$Dos in circolazione. Nulla è lasciato al
caso, nulla è dimenticato, perfino i file di configurazione sono descritti
più che egreggiamente, e questo porta la possibilità di fare errori
molto vicina allo 0%. Praticamente il DosEmu
è riuscito a fare quello che non è riuscita a fare, scusate il gioco di
parole, la Micro$oft : far
funzionare il Dos in multitasking.