BOCHS - O emulador de x86

Este artigo fala sobre umas das várias belezas que vivem no Sourceforge.net, o Bochs, um incrível emulador de PC que nos permite executar sistemas operacionais dentro de sistemas operacionais.

[ Hits: 52.642 ]

Por: Jarno Trulli em 19/11/2005


Rodando o seu sistema operacional: arquivo de configuração .bochsrc



Para rodar mesmo, o Bochs precisa de um arquivo de configuração, conhecido como bochsrc (bem como existe, por exemplo, um bashrc, um blackboxrc, etc). Ele funciona como a configuração de uma BIOS (se bem que configurar uma ROM-BIOS real e mais fácil :) ). Você dá opções de quantos processadores serão usados, da arquitetura emulada, de onde estão a imagem e os drives, de que tipo é o monitor... Enfim, você monta a sua máquina na unha!

Esta parte é bem mais pedregosa de explicar que as anteriores e eu recomendo a documentação oficial:
La há uma vasta documentação para todas as suas perguntas, inclusive de como funciona cada parâmetro do bochsrc.

Apenas para que vocês tenham idéia de como funciona um arquivo de configuração, este é um exemplo. Eu usei este bochsrc para rodar o MenuetOS no Bochs.

Já vou avisar que a emulação do Menuet é bem lenta, porque ele é completamente escrito em Assembly e o Bochs tem que simular cada instrução como um conjunto de outras instruções para melhor precisão.

# menuetos.bochsrc
#
# Rodando o MenuetOS no Bochs
#
# Confira os diretórios das imagens e das BIOS
#
#
# Editado a partir do Bochsrc da página oficial do
# MenuetOS (www.menuetos.org)
# Neste mesmo site é possível obter a imagem do MenuetOS
#


romimage: file=$BXBIOS/BIOS-bochs-2-processors, address=0xf0000

vgaromimage: file=$BXBIOS/VGABIOS-elpin-2.40

megs: 32

floppya: 1_44="$IMAGEM/mfloppy.img", status=inserted

boot: a

log: log.txt

panic: action=fatal

error: action=report

info: action=report

debug: action=ignore

vga_update_interval: 300000

keyboard_serial_delay: 200

floppy_command_delay: 500

ips: 500000

mouse: enabled=1

private_colormap: enabled=0

PS: Algumas recomendações ao rodar o Menuet na Bochs:
  • Ainda não sei exatamente como ativar os modos de monitor para outros tipos mais convenientes para a Bochs rodar (isto inclui opções de configuração que eu ainda estou estudando). Então a escolha de monitor será, inevitavelmente, a número 0 (na tela azul de boot do MenuetOS).
  • Não se preocupe muito com a lerdeza, isto é absolutamente (a)normal. :-)
  • Qualquer dica de como melhorar este .bochsrc ou de como configurá-lo, aceito sugestões! Deixe postado aqui.

Página anterior     Próxima página

Páginas do artigo
   1. Apresentações
   2. Rodando o seu sistema operacional: obtendo as fontes
   3. Rodando o seu sistema operacional: obtendo a imagem
   4. Rodando o seu sistema operacional: arquivo de configuração .bochsrc
   5. Rodando o seu sistema operacional: shell script para rodar o Bochs
   6. Conclusões
Outros artigos deste autor

GNU Emacs (Intro)

Rage Against Binary Blob - sobre documentação aberta para hardware

Mais sobre recursividade em C/C++

Leitura recomendada

Sport: Frontend para Slackbuilds ao estilo Ports do BSD

adesklets: Uma leve e funcional ferramenta de displays

Biometria: Reconhecimento Facial OpenSource!

Implantando o Cacti (gerador de gráficos) em HTTP Seguro (HTTPS)

Por que não migrar?

  
Comentários
[1] Comentário enviado por removido em 19/11/2005 - 22:52h

Ótimo artigo sobre uma ótima ferramenta.

Pra quem insiste em dizer que o Software Livre é fraco, aí está uma prova do contrário. É gratificante ver uma ferramenta como essa ser lançada.

Continue o bom trabalho. ;-)

[]'s

[2] Comentário enviado por croscato em 20/11/2005 - 09:54h

Olha compilei o Bochs com uma configuração diferente e percebi um ganho de velocidade. A configuração foi a seguinte:

./configure --enable-config-interface --enable-plugins --enable-x86-64 --enable-ne2000 --enable-pci --enable-pcidev --enable-usb --enable-guest2host-tlb --enable-repeat-speedups --enable-icache --enable-fast-function-calls --enable-global-pages --enable-host-specific-asms --enable-ignore-bad-msr --enable-port-e9-hack --enable-all-optimizations --enable-instrumentation --enable-raw-serial --enable-vbe --enable-mmx --enable-3dnow --enable-sse=2 --enable-cdrom --enable-sb16=linux --enable-gameport --enable-xpm

Espero que esse comando ajuda a todos.

Até mais.

[3] Comentário enviado por Jarnotrulli em 21/11/2005 - 19:07h

Valeu aê galera!
Levou um tempo para eu recuperar este artigo mas valeu a pena...
Nada como um Google Hacking: olhar os caches recentes que o Google mantém no site: só precisei copiar e colar (e talvez mudar as pontuações para algo mais útil...).
Valeu a dica, croscato! Tô pensando em fazer um package para o Slackware, e estava pensando em como compilar para ficar "um pouco" mais rápido.
Talvez isso ajude...

[4] Comentário enviado por efologan em 23/11/2005 - 16:19h

beleza... ótimo artigo... so que aqui deu pau... to com xfree86 com todas as libs e ele me retorna a mensagem:

ERROR: X windows gui was selected, but X windows libraries were not found.

oque pode ser e como eu soluciono isso, pois como disse, todas as libs do meu x estao ok.. (fedora 1.0)
Valeu pelo art... abraços

[5] Comentário enviado por efologan em 23/11/2005 - 16:30h

Só pra constar, o pacote rpm funcionou legal... mas eu gostaria mesmo de usar a versão tar.gz pra poder usar as opções mostradas pelo grande parceiro croscato... portanto o pedido de ajuda anterior continua valendo...

[6] Comentário enviado por Jarnotrulli em 28/04/2006 - 01:39h

Tente ver onde estao als libs do X e passe --with_x_libs=(ondeEsta)

[7] Comentário enviado por paulodangelo em 06/05/2007 - 13:10h

Quando dou o ./configure ele diz que falta o /lib/cpp/ alguém pode me ajudar?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts