O que é o FreeDOS?
O FreeDOS é uma implementação gratuita e livre do DOS. No nosso caso, podemos dizer que ele é o DOS em si, sendo capaz de executar os comandos tradicionais de DOS, bem como executar os mais variados programas. No entanto, para que o FreeDOS funcione, é necessário estabelecer uma ponte de comunicação entre o DOS e o Linux. É aqui que entra o DOSEMU.
DOSEMU?
O DOSEMU não é o DOS em si. Na verdade, ele funciona mais como uma camada de compatibilidade entre o DOS que você vai utilizar (no nosso caso, o FreeDOS) e o Linux, cuidando, entre outras coisas, do acesso a impressoras e drives de CD. Isso significa que estaremos usando uma dobradinha: o FreeDOS cuida de emular a funcionalidade do DOS, enquanto o DOSEMU “casa” o FreeDOS e o Linux.
Instalação
Há pacotes compilados do dosemu para algumas distribuições. Geralmente elas já trazem embutido o FreeDOS, de modo que a instalação consiste em um mero apt-get install dosemu. Se sua distro usa pacotes RPM, é só baixar o arquivo “dosemu-1.4.0-1.i386.rpm (all-in-one RPM, includes FreeDOS)” e instalar com um rpm -Uvh dosemu-1.4.0-1.i386.rpm.
Se não houver pacotes para sua distro, vá em https://dosemu.sourceforge.net/stable/ e baixe os pacotes dosemu-1.4.0.tgz (source) e dosemu-freedos-1.0-bin.tgz (binary). Na data em que este artigo foi escrito, esta era a versão estável do programa. Descompacte o primeiro arquivo com:
O resultado será o diretório dosemu-1.4.0. Agora mova o arquivo dosemu-freedos-1.0-bin.tgz para dentro do diretório, mudando seu nome para dosemu-freedos.tgz:
Agora é só instalar:
$ make
# make install
Você pode iniciar o dosemu ou o xdosemu. Se você tem um ambiente gráfico pode usar o xdosemu, que deve lhe dar menos problemas com a questão de quantidade de linhas, colunas e fontes. Do contrário, use o comando dosemu.
Configurando o Hardware
Impressoras
Via de regras, sua primeira preocupação será a impressora. Como imprimir de dentro do DOSEMU?
É mais simples do que parece. Se você tem uma impressora instalada pelo CUPS saiba que o DOSEMU deve imprimir nela sem problemas. O arquivo de configuração principal do DOSEMU fica em /etc/dosemu/dosemu.conf. Ele traz as opções padrão do DOSEMU comentadas, portanto, se quiser alterar alguma delas terá que descomentar a linha e fazer a alteração. Vejamos a seção do arquivo que trata das impressoras:
## Printer and parallel port settings
# Print commands to use for LPT1, LPT2 and LPT3.
# Default: “lpr -l”, “lpr -l -P lpt2”, and “” (disabled)
# Which means: use the default print queue for LPT1, “lpt2” queue for LPT2.
# “-l” means raw printing mode (no preprocessing).
# $_lpt1 = “lpr -l”
# $_lpt2 = “lpr -l -P lpt2”
# $_lpt3 = “”
# idle time in seconds before spooling out. Default: (20)
# $_printer_timeout = (20)
Os programas de DOS imprimem para a impressora LPT1. Isso costuma causar alguns problemas quando você tenta imprimir para impressoras USB pelo windows. Mas com o DOSEMU o problema não existe. Inclusive, uma alternativa para quem precise imprimir pelo windows para uma impressora USB é rodar o programa através de outro emulador de DOS, o DOSBOX, que roda no Windows. Mas isso é assunto para outro artigo…
A linha # $_lpt1 = “lpr -l” diz que tudo o que os programas enviarem para a impressora na porta LPT1 será encaminhado ao comando lpr -l. lpr é o comando para imprimir no Linux, e a opção -l significa raw printing. E que raios é raw printing? Raw printing significa que o que o programa mandar imprimir será encaminhado à impressora sem nenhuma filtragem prévia. Caso contrário, o documento passaria pelo filtro do CUPS e sairia alterado no fim das contas.
O comando vai imprimir para a impressora padrão. Se quiser mudar esse comportamento, acrescente um -P nome da impressora ao fim do arquivo. O nome da impressora você confere com um cat /etc/printcap.
Aproveitando para dar uma dica: muita gente que usa DOS ainda tem as velhas impressoras matriciais da EPSON. Saiba que diversos desses modelos funcionam perfeitamente com o DOSEMU. Ao acrescentar a impressora pelo CUPS, escolha “Add Printer >> LPT #1 >> Generic >> Generic ESC/P Dot Matrix Printer Foomatic/epson”.
Drives de CD-ROM
A primeira coisa que você precisa fazer para habilitar o CDROM no DOSEMU é modificar o arquivo config.sys, que geralmente fica em ~/.dosemu/drive_c/config.sys. Acrescente esta linha:
Talvez a linha já exista, e só precise ser descomentada. Agora vá em seu arquivo autoexec.bat (geralmente em ~/.dosemu/drive_c/autoexec.bat) e acrescente a linha:
Isso vai tornar o cdrom montado em /media/cdrom acessível em E:. Sacaram como a coisa funciona? Se o ponto de montagem de seu cdrom é outro, modifique a linha corretamente.
Iniciando programas automaticamente
Que tal criar um ícone no Desktop que chama o DOSEMU e automaticamente executa o programa desejado? Essa tarefa é possível graças ao comando unix -e, que é executado automaticamente pelo DOSEMU no autoexec.bat. Ele permite que você acrescente à chamada do DOSEMU o caminho para um programa, fazendo com que ele seja executado. Por exemplo:
Isso vai abrir automaticamente o programa. Quando você sair dele, o dosemu fecha automaticamente, o que significa que seus usuários nunca terão que ver um prompt de comando na frente deles. Você pode criar um lançador no Desktop e na hora de digitar o programa a ser executado inserir a chamada acima.
6. Iniciando em tela cheia
Dizem (o manual e os usuários) que executar o xdosemu com a opção -w inicia em tela-cheia, mas comigo nunca funcionou, nem no Fedora nem no Ubuntu. Quem sabe em versões ou hardwares diferentes… de qualquer maneira, uma vez que o DOSEMU esteja aberto, você pode dar um <CTRL>+<ALT>+<F> para entrar no modo de tela cheia. Esse sim funcionou comigo.
Usando o DOSEMU em ambientes multi-usuários
Quando um usuário usa pela primeira vez o DOSEmu o programa cria uma pasta .dosemu na home. Dentro da pasta .dosemu é criada a pasta drive_c, que será o seu C:, onde todos os seus arquivos serão gravados por padrão.
Acontece que se você estiver operando em um ambiente com vários usuários, cada usuário que acessar o dosemu terá uma nova pasta .dosemu criada na sua home, ou seja: cada usuário terá um C: diferente. Se você quiser que todos os usuários acessem os mesmos arquivos vai ter que dar um jeito nisso.
Uma idéia interessante é criar um grupo chamado dosemu, e incluir os usuários que vão usar o DOS nele, dessa forma:
# gpasswd -a robertobech dosemu
# gpasswd -a fatimabech dosemu
Com esses comandos eu criei o grupo dosemu e coloquei os usuários robertobech e fatimabech (minha esposa 🙂 nele. Agora vamos criar a pasta em que o DOSEmu vai gravar nossos arquivos em comum:
Eu escolhi criar a pasta /opt/dosemu, mas voc pode criar a pasta que quiser onde bem entender. O que nós vamos fazer agora é criar um link simbólico na pasta ~/.dosemu/drive_c apontando para /opt/dosemu, assim:
Faça o mesmo para os outros usuários. A idéia é que, dentro do C: de cada um, haja uma pasta compartilhada dosemu, que na verdade está em /opt/dosemu. Mas para que todo mundo possa escrever nessa pasta precisamos alterar suas permissões. Vamos fazer com que todos os usuários do grupo dosemu sejam capazes de ler e alterar arquivos nela:
# chmod g+w /opt/dosemu
Mas isso não basta, ainda temos um problema. Se o usuário robertobech criar um arquivo em /opt/dosemu, o arquivo não pertencerá ao grupo dosemu, mas sim ao grupo principal do usuário (que dependendo da sua distro pode ser robertobech ou users), e a pobre fatimabech vai continuar sem conseguir modificar o arquivo. O que nós precisamos é de um jeito de dizer ao Linux: “hey, eu quero que todos os arquivos criados abaixo desse diretório pertençam ao grupo que é o dono da pasta, ou seja, ao dosemu”. E não é que o tal comando existe? É esse aqui ó:
O truque é o “s”. É ele que faz com que todos os arquivos criados dentro do /opt/dosemu, incluindo novas pastas, pertençam ao grupo dosemu. Pronto, você agora tem uma pasta comum dentro do DOSemu, a C:dosemu. Você pode instalar seus programas nela, e todos os usuários terão acesso a ele. Outra coisa interessante é que cada usuário continua tendo seu próprio autoexec.bat dentro da pasta drive_c, e você pode configurar cada um da maneira que achar melhor.
Por alguma razão, eu ainda tive problemas de permissões para criar arquivos em /opt/dosemu enquanto o dono da pasta era o root. Se você tiver esse problema, mude o dono da pasta para um usuário comum e você deverá ser capaz de criar novos arquivos sem problemas, desde que o usuário pertença ao grupo dosemu.
Você ainda pode automatizar as coisas e fazer com que cada novo usuário, ao ser criado, já herde todos esses diretórios: basta copiar a pasta .dosemu de um dos usuários para o diretório /etc/skel.
Uma última observação sobre o modo multi-usuário: quando você usar programas com acesso a bancos de dados no DOSEmu pode ter problemas quando dois usuários tentarem alterar um mesmo registro ao mesmo tempo. Para evitar esse problema, alguns programas usam o programa SHARE. Eu, por exemplo, rodo um programa de exames laboratoriais, e quando um usuário abre um registro o SHARE trava o registro. Se outro usuário tentar modificá-lo nesse meio tempo, surge uma mensagem dizendo que o usuário vai ter que aguardar o registro ser liberado. Para que isso funcione você precisa carregar o SHARE, que vem incluído no FreeDOS: é só chamar o programa digitando share, ou incluir uma linha chamando o share no autoexec.bat do usuário.
Live-CD?
Já pensou rodar o FreeDOS por um live-CD, sem ter que instalar o Linux nem nada? Pois você pode: o live-CD está disponível para download no site oficial do FreeDOS.
Obtendo ajuda
O DOSEMU conta com uma farta documentação no diretório /usr/share/doc/dosemu/. Se tiver problemas, leia primeiro estes documentos e veja se encontra uma solução.
Se não encontrar, recomendo a lista de usuários do dosemu em linux-msdos@vger.kernel.org (detalhes sobre como se inscrever em https://dosemu.sourceforge.net/mailinglist.html). A lista é mais movimentada do que eu imaginava, e os usuários estão sempre dispostos a dar uma força. O usuário Frank Cox, em particular, contribuiu bastante para a elaboração da seção sobre multi-usuários deste artigo ao me indicar um artigo de sua autoria em https://www.melvilletheatre.com/articles/powerbasic-linux/.
Conclusão
O DOSEMU pode ser extremamente útil em migrações. Não só ele reproduz as funcionalidades do DOS como em alguns casos vai além – como ao lidar com impressoras USB.
Espero que este documento seja útil a vocês. Adoraria receber suas opiniões e sugestões pelo email robertobech@linuxparaoresgate.com. Até o próximo artigo!
Esta postagem foi modificada pela última vez em 13/08/2010 18:42