DOSEMU (1) è fondamentalmente un emulatore dell'hardware x86 per vari sistemi Unix funzionanti su architettura i386. Il suo obiettivo è quello di permettere il funzionamento del sistema operativo Dos (MS-Dos o cloni). Si tratta di un progetto eternamente in fase di sviluppo (alpha), anche se da diversi anni è sufficientemente funzionante. Tuttavia non ci sono punti fermi: da una versione all'altra si possono incontrare novità imprevedibili.
Dal momento che l'emulazione riguarda l'hardware, il Dos deve essere installato all'interno di questo sistema di emulazione; quindi, è 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. |
A fianco del lavoro su DOSEMU è anche in corso quello sul progetto FreeDOS per un sistema operativo Dos libero (capitolo u212).
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, viene visto dal Dos come disco C:
.
Successivamente è conveniente predisporre uno spazio all'interno del file system del proprio sistema GNU/Linux da utilizzare per i programmi Dos che deve essere 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 potrebbe essere un file contenuto nella directory /var/lib/dosemu/
, oppure /var/state/dosemu/
, il cui nome inizia normalmente per hdimage
.
Attualmente, il file dovrebbe chiamarsi |
Se non esiste questo file è necessario copiarlo dal pacchetto sorgente. Il nome dovrebbe essere hdimage.dist
, o qualcosa di simile. Questa immagine deve essere preparata in seguito.
In questa fase conviene preparare una directory che definisca 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:
D:\TEMP\
equivalente a /var/emul/dos/temp/
;
D:\DOS\
equivalente a /var/emul/dos/dos/
.
Per evitare la proliferazione di directory temporanee, è possibile utilizzare al posto di /var/emul/dos/temp/
un collegamento simbolico che punti a /tmp/
.
#
ln -s /tmp /var/emul/dos/temp
[Invio]
La configurazione di DOSEMU consiste nella modifica dei file /etc/dosemu.conf
e di /etc/dosemu.users
. Il file /etc/dosemu.users
permette di definire gli utenti che possono utilizzare DOSEMU, mentre l'altro stabilisce tutte le altre caratteristiche.
Purtroppo, la configurazione di DOSEMU, specialmente per ciò che riguarda il file /etc/dosemu.conf
, è complessa e cambia da versione a versione. Inoltre, DOSEMU può costituire anche un problema per la sicurezza del sistema dal momento che di solito l'eseguibile dos, deve essere SUID-root (cioè deve appartenere a root e avere il bit SUID attivato) per utilizzare funzionalità particolari dell'hardware (soprattutto l'adattatore grafico VGA).(2)
DOSEMU permette di distinguere alcune categorie di utenti, attribuendogli privilegi differenti, in base a una diversa configurazione nel file /etc/dosemu.conf
. Tali categorie di utenti dipendono quindi dalla configurazione di questo file.
Il file /etc/dosemu.users
può contenere righe di commento, introdotte dal simbolo #, righe bianche o vuote, che vengono ignorate, e direttive espresse dalla sintassi seguente:
utente [variabile_di_configurazione...] |
In pratica, si possono abbinare a un utente una o più variabili di configurazione che fanno riferimento a elementi del file /etc/dosemu.conf
. È da osservare, in particolare, che si può indicare anche un utente particolare, all, per fare riferimento a tutti gli utenti a cui non si fa menzione in modo esplicito.
A titolo di compromesso, viene mostrato un esempio di configurazione del file /etc/dosemu.users
che dovrebbe essere sufficiente nella maggior parte delle situazioni. Si tratta in pratica della versione standard distribuita assieme a DOSEMU, con l'aggiunta di qualche utente ipotetico.
|
Come si intuisce, l'utente root ha tutti i diritti necessari a compiere quello che vuole dall'interno di DOSEMU. Sono previsti gli utenti nobody e guest, a cui sono concesse solo poche cose, mentre agli utenti tizio, caio e sempronio sono concessi privilegi normali. Infine, appare commentata la direttiva all restricted, con la quale si potrebbe consentire l'utilizzo di DOSEMU a tutti gli altri utenti, con privilegi ridotti.
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, però è anche molto complesso. Di seguito vengono indicate solo alcune parti particolarmente importanti. Le altre direttive di questo file, possono essere lasciate come sono, ignorandole, almeno fino a quando non si raggiunge una buona esperienza con l'uso di DOSEMU.
|
Il problema successivo è quello di riuscire a installare il Dos nel file-immagine che serve per effettuare l'avvio del Dos stesso. L'immagine in questione, che probabilmente è il file /var/lib/dosemu/hdimage.first
, contiene già una serie di programmi Dos che fanno parte di DOSEMU e come tali non vanno cancellati. Ma l'immagine che viene distribuita così non è avviabile e il problema è proprio quello di inserirvi il kernel del Dos e l'interprete dei comandi COMMAND.COM, salvo il caso in cui sia già presente una versione di FreeDOS.
Preparazione di un dischetto di avvio
Per prima cosa occorre preparare un dischetto Dos avviabile che contenga qualche programma di servizio indispensabile. Da un elaboratore che stia eseguendo il sistema operativo Dos si procede come segue:
C:>
FORMAT A: /S
[Invio]
C:>
COPY C:\DOS\SYS.* A:
[Invio]
C:>
COPY C:\DOS\FDISK.* A:
[Invio]
Oltre a questi file converrebbe preparare nel dischetto un programma per la creazione e modifica di file di testo. Questo serve 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, dall'elaboratore GNU/Linux si avvia DOSEMU nel modo seguente:
#
dos -A
[Invio]
Se tutto è andato bene si avvia il Dos; quindi, dopo la richiesta della data e dell'ora appare l'invito classico (il prompt), per l'inserimento dei comandi attraverso la shell (COMMAND.COM).
|
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
[Invio]
quindi con il trasferimento del sistema:
A:\>
SYS C:
[Invio]
Se è andato tutto bene, adesso il disco C:
, cioè l'immagine, è pronto.(3)
Controllo del disco C:
Il disco C:
dovrebbe contenere alcuni file di DOSEMU. Per verificare il contenuto è sufficiente spostarsi in C:
.
A:\>
C:
[Invio]
C:\>
DIR
[Invio]
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 unità (drive) a disposizione.
|
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 viene interpretata come disco D:
|
Viene avviato il driver EMS.SYS
di DOSEMU che si occupa della gestione della memoria estesa.
|
Se in seguito se ne presenta l'opportunità, è sempre possibile apportare modifiche a questo file.
Modifica di AUTOEXEC.BAT
Inizialmente il file non necessita di modifiche. È possibile vedere 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, avviato in precedenza con il comando dos -A. Per chiudere si utilizza il programma EXITEMU.COM:
C:\>
C:\EXITEMU
[Invio]
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
[Invio]
Se ha funzionato, si ottiene l'invito normale:
|
Per uscire si utilizza il programma EXITEMU.COM:
C:\>
EXITEMU
[Invio]
Il programma LREDIR.COM è in grado di consentire l'accesso a porzioni del file system di GNU/Linux attribuendo una lettera di unità. Per esempio:
C:\>
LREDIR X: \linux\fs\/home
[Invio]
fa sì che il disco X:
corrisponda al contenuto della directory /home/
. Invece,
C:\>
LREDIR Y: \linux\fs\${home}
[Invio]
fa sì che il disco Y:
corrisponda al contenuto della directory personale dell'utente che sta usando DOSEMU.
Teoricamente, DOSEMU è in grado di gestire da solo il mouse. In pratica potrebbe non essere così. In tal caso conviene provare ad avviare un programma apposito all'interno del CONFIG.SYS
o di AUTOEXEC.BAT
.
Nell'esempio seguente viene utilizzato un programma per la gestione del mouse estraneo a DOSEMU. Il disco D:
è stato definito implicitamente all'interno di CONFIG.SYS
attraverso DEVICE=C:\EMUFS.SYS /var/emul/dos.
|
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]...
Per avviare il Dos in una finestra del sistema grafico X, conviene avviare DOSEMU attraverso xdos che normalmente è un collegamento simbolico a dos.
Nelle sezioni precedenti si è visto l'uso del file-immagine /var/lib/dosemu/hdimage
, che costituisce normalmente il disco C:
per DOSEMU. Questo file non è gestibile con strumenti Unix normali, soprattutto perché non è un'immagine standard. Si tratta dell'immagine di un piccolo disco fisso contenente una partizione, con l'aggiunta di un'intestazione aggiuntiva.
Questo disco C:
può essere utilizzato principalmente attraverso strumenti Dos all'interno di DOSEMU, così come è stato già mostrato, oppure può essere raggiunto anche tramite Mtools, purché configurato opportunamente. Infatti, è sufficiente informare Mtools sulla posizione esatta in cui ha inizio la prima partizione all'interno del file-immagine, per potervici accedere anche con questo strumento. Potrebbe trattarsi della direttiva seguente, nel file di configurazione /etc/mtools.conf
.
|
In tal modo, per Mtools, il disco N:
corrisponderebbe al disco C:
di DOSEMU.
È importante fare attenzione al valore dello scostamento (offset) che potrebbe cambiare da una versione all'altra di DOSEMU. |
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 quanto stabilito con la maschera dei permessi; inoltre, 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 nominativo (lo stesso UID). Quando lo si utilizza invece in un sistema al quale accedono più utenti, è ragionevole desiderare che i dati personali possano essere inaccessibili agli altri; quindi, questo modo trasparente di gestire i permessi può essere solo positivo. Quando si vogliono gestire alcune attività in gruppo si può aggirare eventualmente l'ostacolo utilizzando un utente comune creato appositamente per quel compito.
Un'ultima annotazione deve essere fatta per i file eseguibili che non necessitano dei permessi di esecuzione, come invece richiederebbe GNU/Linux. È generalmente sufficiente che ci siano i permessi di lettura. A volte sono necessari anche quelli in scrittura, ma prima di dare questi permessi è meglio verificare, onde evitare di lasciare campo libero a un possibile virus.
2) Se ci si accontenta di uno schermo a caratteri, senza grafica e senza cornici, non dovrebbe essere necessario attivare il bit SUID.
3) Il comando FDISK /MBR riguarda precisamente MS-Dos, mentre nel caso di cloni le cose potrebbero essere differenti; per esempio potrebbe essere necessario avviare il programma nel modo solito e poi specificare la richiesta selezionando una voce da un menù.
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net