A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Oficina

9. O emulador de PC Bochs

Sab

26

Mai

2007


17:17

(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.

Informações adicionais