Oficina

9. O emulador de PC Bochs

Sab

26

Mai

2007


17:17

  • Imprimir
(38 votos, média 5.00 de 5) 


Nível avançado MÓDULO 9 do SO Numaboa

Está cansado de dar reboot na máquina? Como programador de um sistema operacional e de qualquer projeto de programação, você sabe que os testes durante a fase de desenvolvimento são frequentes e inevitáveis. Mas, se possuirmos um emulador de PC, a coisa fica bem mais tranquila. É aí que entra o Bochs para nos salvar. Aliás, Bochs é pronunciado como box em Inglês (ou seja, bócs).

O que é Bochs

Bochs é um emulador de PC x86 bastante completo, inclusive pronto para ser utilizado em 64 bits. Este emulador, escrito por Kevin Lawton, permite que se rode dois ou mais sistemas operacionais simultanemanete no mesmo computador. Roda em Windows todos os sabores, Linux, BeOS, Mac OSX, e muitos outros. Além disso, Bochs é 100% free e de código aberto!

Bem, a primeira providência é fazer o download do Bochs. Aqui na Aldeia você encontra o Bochs na versão 2.3 para Windows (downloads Informática / Emuladores). Versões super-atualizadas para todos os sistemas operacionais, além do código fonte e da documentação, você encontra no site oficial do Bochs na SourceForge.

Instalando e configurando o Bochs

A instalação do Bochs é uma baba - basta descompactar o arquivo zip num diretório próprio. Depois disto, para testá-lo, é só criar um arquivo de configuração e forçar um boot através da imagem de um disquete bootável.

Antes de escrever o arquivo de configuração, crie um diretório dentro do diretório do Bochs (eu usei F:\Bochs\testeSO\) que deverá conter o arquivo de configuração. Este arquivo vai indicar ao Bochs onde se encontra a imagem do nosso disquete, a ROM da BIOS e a ROM do VGA. O nome do arquivo precisa ser bochsrc.txt e servirá de roteiro de boot. Veja um exemplo abaixo:

# a quantidade de memória que a máquina emulada terá
# se você tiver menos do que 64 Mb de memória no seu computador,
#    especifique menos (16 está bom)
megs: 32

# Nome do arquivo das imagens da ROM
# Note que, se colocarmos "../" antes do nome do arquivo, então o arquivo é
#    procurado no diretório acima do diretório corrente (aquele onde se
#    encontra o arquivo de configuração).
romimage: file=../BIOS-bochs-latest, address=0xf0000
vgaromimage: ../VGABIOS-elpin-2.40

# queremos um drive de disquete (chamado de a), a imagem do disco que
#    vamos usar é o "loader2.img"
floppya: 1_44=loader2.img, status=inserted

# escolha o disco de boot.
boot: a

# onde colocar as mensagens de log/erro?
log: bochsout.txt

# desabilite o mouse, a não ser que seu SO o utilize
mouse: enabled=0

Esta não é uma explicação detalhada do arquivo de configuração. As linhas de comentário, precedidas por #, dão uma idéia básica das diretivas. A única coisa que quero destacar é o arquivo loader2.img, que é a cópia bit a bit do disquete de boot. Veja a seguir como obtê-lo.

Fazendo uma imagem do disquete

Este tutorial considera que o disquete esteja formatado com FAT12 (formatado pelo DOS). Após ter preparado um disquete bootável, é preciso fazer uma imagem do mesmo. Uma imagem é simplesmente a cópia de cada bit de um disco para um arquivo. Existem várias maneiras de se obter uma imagem.

Você pode adquirir o WinImage, um shareware com trial de 30 dias (a versão standard custa cerca de US$30 e a versão professional cerca de US$60), ou então optar pelo PartCopy (freeware), o RawWrite (freeware) e o dd (freeware) que pode ser encontrado para Windows e Linux. Os freeware podem ser encontrados na seção de downloads da Aldeia em Informática / Utilitários.

Usando o PartCopy

Usar o PartCopy é bastante simples. Insira o disquete no drive e rode o PartCopy com partcopy -f0 0 168000 nomeImagem. Esta instrução faz com que o PartCopy copie o disquete inteiro para um arquivo de nome nomeImagem.

Usando o RawWrite

O RawWrite é muito simples de ser usado. Rode-o, insira o disquete no drive, selecione Read, indique o nome do arquivo de imagem e sua localização e clique no botão Read. Além disso, com o RawWrite também é possível transferir uma imagem para um disquete: basta escolher Write.

Usando o dd

Para criar imagens de disco com o dd, no Windows o comando é dd if=diquete.img of=a: e, em *nix, dd if=floppy.img of=/dev/fd0.

Usando o WinImage

Rode o WinImage, insira o disquete no primeiro drive e selecione Disk -> Read Disk. Depois da leitura, é preciso salvar a imagem. Certifique-se de que escolheu All Files e NÃO faça proteção com senha porque, neste caso, a imagem é salva num formato incompatível.


Testando um sistema com Bochs

Tomarei como exemplo o disquete que esteja fazendo o boot através do loader2 (criado no módulo 8). Siga os passos:

  1. Crie o diretório testeSO no diretório do Bochs (por exemplo, F:\bochs\testeSO\).
  2. Crie um arquivo de configuração para o Bochs (veja o exemplo acima) e salve-o no diretório de trabalho com o nome de bochsrc.txt
  3. Crie um arquivo de lote (batch file) contendo apenas ..\bochs.exe, com o nome bochs.bat, e salve-o no mesmo diretório.
  4. Insira o disquete com o boot loader loader2 no drive.
  5. Rode o RawWrite para Windows, escolha Read, indique o nome F:\bochs\testeSO\loader2.img e clique no botão Read.
  6. Terminada a leitura e gravação do arquivo de imagem do disquete, dê um duplo clique em bochs.bat
    bochs
    O emulador bochs
  7. Se você optou por dar um nome diferente ao arquivo de configuração do Bochs, digite 2 e depois Enter. A seguir, digite o nome do seu arquivo de configuração e termine com Enter.
  8. Se a opção indicada não for 5, digite 5 + Enter. Se a opção 5 já estiver ativa (como mostra a figura), digite a tecla Enter para escolher "Begin simulation".
  9. O Bochs abre uma janela adicional para o novo sistema e mostra o seu sistema operacional em ação, o qual mostra apenas a letra A:
    bochs2
    Sistema operacional identificado pela letra A
  10. Clique no botão Power para fechar a janela do sistema e voltar para a janela do Bochs.
  11. Digite a tecla Enter para sair do Bochs.

As vantagens do emulador Bochs

A esta altura já é fácil perceber as enormes vantagens do uso do Bochs. A principal é que, ao invés de trabalhar com uma porção de disquetes e de precisar reiniciar a máquina a cada teste, agora é possível trabalhar com imagens de disquetes. Para testar uma imagem qualquer, basta alterar o item floppya do arquivo de configuração.

Por exemplo, para testar o boot loader loader2a, aquele que limpa a tela, posiciona o cursor no início e escreve Sistema Operacional NumaBoa, basta criar uma imagem do disquete e alterar floppya: 1_44=loader2a.img, status=inserted.

bochs3
Sistema operacional identificado por NumaBoa

A figura acima mostra a janela do sistema, indicando que as rotinas adicionadas funcionaram perfeitamente: a tela foi limpa, o cursor foi posicionado corretamente e a string "Sistema Operacional NumaBoa" foi mostrada como planejado.


Considerações finais

  • No Windows 2000/XP, o Bochs pode acessar diretamente o drive físico do disquete se você configurar o 1_44 para a letra que identifica o drive no seu computador.
  • Apesar do Bochs proporcionar uma emulação muito confiável, é altamente recomendável que você teste seu sistema operacional diretamente. Eventualmente algumas coisas podem funcionar perfeitamente no Bochs e depois darem problemas quando usadas diretamente no PC.

E finalmente, para terminar esta série de módulos, uma dica para os que dominam o Inglês: visitem o site BonaFide. Tem um caminhão de coisas interessantes!

Вадим Логофет женаадреса никас lenovo ноутбукхарьков лобановский класс александр лобановский дочь отзовик