Revista Do Linux
EDIÇÃO DO MÊS
 CD do Mês

 Capa
 Entrevista
 Corporativo
 Plataforma
 Evento
 Seguranca
 Hakers
 Sistema
 

Dosemu: o DOS emulado em Linux

O DOSEMU tem funcionalidades como emulação de memória estendida e expandida, emulação de IRQ’s, de CPU’s, conjunto de caracteres etc.

Todo linuxer iniciante tem uma dúvida que o incomoda e que o faz perguntar aos usuários mais experientes: Será que eu posso rodar no Linux aquele programinha de controle financeiro que eu utilizava no DOS? Essa é o tipo de pergunta que não lhe sai da cabeça, apesar de mais tarde ele descobrir que o GnuCash dá de dez a zero nesse programa chinfrim, que só vive pedindo reindexação da base de dados.

Se você se encaixa nesse perfil, pode começar a abrir um sorriso: há uma enorme chance de você continuar a utilizar esse seu programinha. ARRHGGG!!!!

Como o nome já sugere, o DOSEMU significa DOS EMUlator. Esse software tem como funcionalidade básica a disponibilização de um ambiente emulado DOS no Linux. Quando este artigo foi escrito o DOSEMU estava na na versão 1.0.1, que vem se mostrando bastante estável. E para aumentar ainda mais o seu sorriso, ele é distribuído sob licença GPL.

O projeto do DOSEMU foi iniciado em 1992 sob a batuta do Matthias Lautner. Após dois anos de inatividade (de 1995 a 1997), foi lançada em 2000 a versão 1.0, sob a coordenação de Hans Lermen. Para mais informações visite o site www.dosemu.org. Ao contrário da maioria dos softwares distribuídos sob licença GPL (e BSD), ele foi escrito somente para Linux. Versões para outros sistemas operacionais Unix-like não existem até o momento.

O DOSEMU tem funcionalidades interessantes como, por exemplo, emulação de memória estendida e expandida, emulação de IRQ’s, de CPU’s, conjunto de caracteres, emulação de vários tipos de teclado, execução em modo gráfico no X Window, emulação de winchester a partir de um arquivo imagem (hdimage), redirecionamento de filas de impressão para LPT1: LPT2: e LPT3: no ambiente emulado, emulação de suporte a som, entre outras.

Particularmente programas em Clipper têm se mostrado bastante estáveis no DOSEMU, e algumas vezes inclusive com ganho de performance. Na maioria das vezes o DOSEMU é uma solução ao alcance de todos para uma migração de uma rede para Linux. Porém, por alguns motivos inerentes ao Clipper (questões de permissões, índices etc.), sempre indicamos a recompilação do programa em Clipper com o compilador FlagShip.

Para se ter uma idéia do nível de maturidade desse programa, há notícia de que é possível até emular alguns jogos, como o DukeNuke 3D.

Instalação do DOSEMU

Caso você esteja em casa aborrecido sem nada que fazer, no site do projeto é possível ser feito um download do arquivo fonte (extensão .tar.gz) e compilá-lo. É divertido!! Tente!! Porém, se você é daqueles que não podem perder tempo (dica: uma perda de tempo que gera ganho em conhecimento), podemos ser mais práticos e instalá-lo a partir do pacote rpm de sua distribuição favorita, ou mesmo fazer download de versões por nós customizadas e pré-configuradas em www.lbs.com.br/download.php

Para instalá-lo:

[root@pixies root]# rpm -Uhv dosemu-1.0.1-2lbs.i386.rpm

Perceba que [root@pixies root]# é o prompt do shell da sua máquina (deve ser algo parecido).

O processo de instalação cria o diretório padrão de trabalho do DOSEMU. Trata-se do diretório /var/lib/dosemu.

Nesse diretório está o arquivo de configuração global global.conf.

Porém uma informação interessante é que não editamos esse arquivo, e sim o arquivo /etc/dosemu.conf, que contém as variáveis que serão lidas, interpretadas e incluídas pelo DOSEMU em seu modus operandi. Para ser mais claro: não toque no arquivo global.conf. O arquivo /etc/dosemu.users define quais usuários podem utilizá-lo.

As variáveis em /etc/dosemu.conf são declaradas na seguinte forma:

$_var = (n) n é um valor numérico
$_var = "string" string é uma cadeia de caracteres.

Exemplo:

$_ems = (1024)

Declaramos que a variável $_ems terá como valor numérico 1024.

$_com1 ="/dev/ttySO"

Declaramos que a variável $_com1 terá como valor a string /dev/ttyS1.

Principais variáveis do DOSEMU

Agora vamos descrever as principais variáveis em /etc/dosemu.conf. As demais variáveis poderão ser deixadas com seu valor default:

$_xms — Define a quantidade de memória expandida que será emulada, em kbytes.

$_ems — Define a quantidade de memória estendida que será emulada, também em kbytes

$_dpmi — Quantidade de memória em modo DPMI em kbytes. Default=off. Para execução de programas Clipper, utilizar 4096.

$_dosmem — Quantidade de memória baixa DOS em kbytes. Valor <= 640.

$_hogthreshold — Se igual a 0, todo poder de processamento para o DOSEMU.

$_term_char_set — Determina o conjunto de caracteres a ser utilizados no ambiente emulado. O melhor resultado foi com o valor ibm.

$_floppy_a — Determina que tipo de drive é o drive A:. Valores como threeinch e fiveinch são suportados.

$_floppy_b — O mesmo que o anterior, porém o drive-alvo é o B.

$_hdimage — Indica que o arquivo contido em /var/lib/dosemu é o arquivo de imagem de HD. Esse arquivo contém informações sobre formatação FAT e permite a sua utilização como se fosse o drive C: do DOS.

$_com1 $_com2 $_com3 $_com4 — Determinam quais dispositivos Linux serão emulados como as portas seriais do DOS. Valores como /dev/ttyS0, /dev/ttyS1, /devttyS2, /dev/ttyS3, entre outros, são suportados.

$_printer — Determina qual impressora contida em /etc/printcap será emulada como LPT1:.

Execução e utilização do DOSEMU Após a configuração dessas variáveis, poderemos iniciar o DOSEMU carregando o sistema DOS de um disquete no drive A: com o seguinte comando:

[lucas@pixies lucas]$ dos -A

Como já se pode perceber, se meu disquete que contém o DOS estiver no drive B:, escreveremos:

[lucas@pixies lucas]$ dos -B

Você deve estar pensando: preciso ter um disquete de DOS para que eu possa utilizar o DOSEMU? A princípio sim, pois precisamos de um command.com, msdos.sys, io.sys ou equivalente etc. para executá-lo. O DOSEMU se encarrega de mascarar as solicitações dos programas DOS para o hardware. Nenhuma versão de algum DOSEMU vem com o DOS comercial, pois isso se caracterizaria como pirataria. Algumas distribuições incluem um projeto de DOS conhecido como FreeDOS. O grande problema é que esse é um projeto ainda iniciante e que não suporta de forma segura todas as funcionalidades dos DOS comerciais.

Como para tudo existe uma solução, temos também uma para nossas funções corriqueiras. A Caldera Systems disponibiliza uma versão do DR-DOS gravada em um arquivo hdimage de uso livre pessoal e comercial. Podemos obtê-la no site ftp://ftp.lineo.com.

Trata-se do arquivo hdimage.drdos703.eval.

Instalando esse arquivo no diretório /var/lib/dosemu e configurando a variável $_hdimage para ele, basta escrevermos:

[lucas@pixies lucas]$ dos

e teremos um sistema DOS totalmente disponível para nosso uso.

Não se esqueça de configurar o autoexec.bat e o config.sys normalmente, como se estivesse configurando uma máquina DOS qualquer.

Essa imagem contém alguns utilitários interessantes em seu diretório bin. Um deles é o exitemu, que permite a saída imediata do ambiente emulado e o retorno para o shell do Linux e o utilitário lredir.

O utilitário lredir é bastante interessante: com ele podemos redirecionar diretórios no sistema de arquivos Linux para um drive virtual dentro do ambiente emulado, identificado por uma letra. Por exemplo, escrevendo:

C:> LREDIR D: LINUX\FS 

A unidade D: será criada e, ao acessarmos, estaremos na raiz do sistema de arquivos Linux. Lembre que nesse caso serão obedecidas as permissões de cada diretório. Outro exemplo:

C:> LREDIR E: LINUX\FS\MNT\CDROM 

Estaremos redirecionando o drive E: para o diretório /mnt/cdrom no sistema de arquivo Linux. Se tivermos um CD-ROM ou alguma outra coisa montada nesse diretório, teremos total acesso.

Finalizando

Caso você deseje expressar e compartilhar alguma experiência bem-sucedida ou mesmo malsucedida, tirar algumas dúvidas ou apenas bater um papo, acesse o nosso site em www.lbs.com.br e entre em nosso fórum de discussão via Web. Suas palavras serão bem-vindas.

Para saber mais
DOSEMU Homepage www.dosemu.org
Lineo Homepagewww.lineo.org
LBSwww.lbs.com.br

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux