Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Nueva versión de Bochs

Emuladores
Por jorginius
departamento andá-win98-en-una-sparc , Sección Software Libre
Puesto a las Fri Dec 27th, 2002 at 01:37:23 AM CET
Hace unos días en Slashdot (y en la PreCola) se hacían eco de la noticia: ya tenemos nueva versión del fabuloso Bochs, la 2.0, y viene con interesantes novedades.

Pero antes de nada, empecemos con las presentaciones :-). ¿Qué es Bochs?. Sus autores lo definen como un emulador portable de la arquitectura IA32 (x86), bajo licencia LGPL. En cristiano: arranca un PC virtual (con sus periféricos, BIOS y demás) dentro de una ventanita en tu máquina Linux y encima es gratis X-).

Las nuevas características de Bochs son:

  • Emula PCs multiprocesador, aunque no toma ventaja real si la plataforma en la que corre tiene realmente varias cpus
  • Emula instrucciones MMX, así como SSE, SSE2 y AMD x86-64.
  • Nuevos plugins para soportar más displays, como SVGALIB (corre Bochs con gráficos y ratón, en consola :-)), SDL, svgalib, el del VNC o el de MacOS X (SDL está chulo, pero no hay mapa de teclado en español... Aún. Después de los exámenes veremos ;-)).
  • Se puede pasar de ventana a pantalla completa pulsando el scroll lock.
  • Seguro que más cosas que no he visto.

 


¿Qué clase de friki necesita un software como Bochs?. Ya tengo un PC, ¿para que quiero un PC (virtual) dentro de un PC (real)?, ¿no raya en lo kafkiano? :-). Bien, pues lejos de lo que puede parecer, Bochs sí que tiene utilidad: es una estupenda herramienta y una de las mayores contribuciones que ha podido hacer al software libre la gente de MandrakSoft, que "compraron su libertad", así como una BIOS compatible, liberando el conjunto bajo licencia LGPL.

Imagina estos escenarios:

Caso 1: eres un programador y te sientes muy agusto en la plataforma Linux, con todas esas utilidades, shells y editores que realmente ayudan en el desarrollo... Pero, por razones varias, tienes que desarrollar software para otras plataformas como Windows. No quieres renunciar a la comodidad de Linux, así que te haces con el compilador cruzado y con un toolkit y biblioteca base que te permita desarrollar software cómodamente para Windows (por ejemplo wxWindows).

Armado con todos esos trastos y el resto de tus herramientas favoritas, te pones a programar y creas la mega-aplicación. Ahora toca depurarla. Tú, en tus trece de no salir de Linux para nada, intentas ejecutarla bajo Wine pero no funciona porque haces uso de tal o cual componente, p.ej.

Tienes una copia de Win98 original, pero claro: para usarla tienes que armar un buen lío cambiando el layout de las particiones (Win98, salvo carambola y malabares, sólo se instala en la primera partición primaria) y reiniciar, saliendo de tu amado Linux. Entonces, ¿qué haces?: ¡utilizas Boch!, creas tu PC virtual, instalas tu Win98 (con muuucha paciencia) y depuras tu aplicación Windows sin salir de Linux ni, si quieres, de la consola :-D.

Una variante del caso del programador es cuando desarrollas software para un multiprocesador, pero no dispones de uno realmente en tu mesa de trabajo. La emulación de varios micros que hace Bochs te permite probar y hacer el perfilado del software.

Caso 2: eres un usuario de Windows hasta las cejas. Cada vez que te mencionan al sistema del pingüino ese te entra la risa floja y no quieres ni pensar en instalar esa basura... Pero un fátidico día entras en la universidad y, en uno de esos laboratorios que no sirven para nada (el de Sistemas Operativos, sin ir más lejos), se piden prácticas en Linux. ¿Qué haces?, ¿tragas con el Lunix, haces particiones, etc?, pues no ¡Boch al rescate!: creas tu PC virtual e instalas un Linux ahí. Ya puedes hacer las prácticas sin dejar de escuchar musiquita por el winamp y sin dejar de navegar con el iexplorer.

Caso 3: te apetece probar software comodamente. Instala sin problemas el 2.5.x (alias, el killer de PCs) en tu PC virtual sin riesgos, o prueba algún *BSD, o alguna distribución curiosa de Linux o...

... Y después estan los usos verdaderamente frikis de Bochs, como correr Windows en una SPARC o en un Alpha con Linux, pero esa es otra historia :-).

La distribución binaria de Bochs viene con una instalación de prueba de diez megas de DLX-Linux, que se puede correr directamente out-the-box. Ese DLX-Linux calza un kernel 1.3.89 y software a juego, así que sirve como estudio histórico :-).

Por cierto, si arrancais MS-DOS a pantalla completa con SVGALIB, el salir de la emulación os lo dejo como ejercicio }:-).

P.D: ésta es mi primera historia, no seais demasiado malos conmigo O:-)

< Red Hat presenta a Phoebe (0 comments) | Debian en 32 MB (6 comments) >
Enlaces Relacionados
· Slashdot
· noticia
· Bochs
· MandrakSoft
· compilador cruzado
· wxWindows
· Wine
· More on Emuladores
· Also by jorginius

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Nueva versión de Bochs | 16 comentarios (14 temáticos, 2 editoriales, 0 ocultos)
Más información de interés (5.00 / 3) (#3)
por jorginius ("jorginius" en Google Mail) a las Sat Dec 28th, 2002 at 01:16:48 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Algunas referencias a la emulación completa de otras plataformas "grandes" bien documentadas, aparte de la de PC, de la que ya se ocupa Bochs:

Aviso: muchas de estas arquitecturas son de 64 bits y tropecientos registros, así que intentar emularlas en un PC es... En fin. Hay emuladores que directamente no irán en Linux/x86.

Empezamos con la gente del proyecto SparcSulima, de la universidad nacional de Australia, que mantiene un emulador portable de la CPU UltraSPARC (formalmente SPARC v9), parte bajo licencia GPL y parte como BSD.

No emula una arquitectura completa, sino sólo la CPU y tampoco se han centrado en seguir al pie de la letra el modelo de funcionamiento del micro, pero aún así puede ser una herramienta interesante de estudio.

Para el que no lo sepa, Sparc es una arquitectura abierta como la PC, profusamente documentada. Se pueden consultar las especificaciones de todas las arquitecturas sin problemas en la sección de estándares de www.sparc.org.

De hecho, existe un diseño de un micro compatible con SPARCv8 libre, desarrollado por la Agencia Espacial Europea: su nombre es LEON-2 y el código VHDL completo del micro está públicamente disponible bajo licencia LGPL, así como compiladores cruzados basados en el de GNU (así que ya sabéis: si tenéis una FPGA que os sobre ya le podeis dar buen uso X-).

El simulador del LEON, el TSIM no es libre, pero hay versiones de evaluación tanto para Linux, como para Solaris o Windows.

Otro recurso sobre simulación de arquitecturas es SimOS, de la universidad de Standford. Aunque lo pudiera parecer por el nombre, no es un simulador de sistemas operativos, sino un emulador de una arquitectura completa Alpha y MIPS. La versión para Linux es incompleta. En sus páginas podéis encontrar un port del sistema operativo simulado NachOS a la arquitectura SimOS (un simulador dentro de un simulador, ¿no es delicioso? %-})



Quiero maaas !!! (2.50 / 2) (#11)
por runlevel0 (exterATvullferPUNTes) a las Sat Dec 28th, 2002 at 09:09:25 PM CET
(Información Usuario) http://perso.wanadoo.es/exter

¿Uno usable de, M68000 que pueda usar ensambladores tio nasm?
-- S41002
[ Padre ]


Vago, más que vago (3.00 / 2) (#13)
por jorginius ("jorginius" en Google Mail) a las Sat Dec 28th, 2002 at 09:46:58 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Del 68000 (y del z80 y del...) das una patada y salen siete emuladores (y ensambladores). Busca un poco :-)

[ Padre ]


 
Un mini-hotwo? (3.00 / 1) (#4)
por gonzotba a las Sat Dec 28th, 2002 at 01:37:17 PM CET
(Información Usuario)

Jorginius, abusando un poco de tu buena voluntad, te pediría yo un pequeño howto para empezar a moverse en bochs. Yo no me aclaro.

Hace falta instalar algo en el disco simulado que creas? No se puede aprovechar un windows instalado? QUé pasa con las fuentes, que no se ven bien? Etc...

A ver nos puedes dar alguna pista...



Ya que me pillas delante del teclado... :-) (5.00 / 3) (#5)
por jorginius ("jorginius" en Google Mail) a las Sat Dec 28th, 2002 at 02:34:59 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Pero que conste que me estoy aguantando las ganas de mandarte a leer el "Fine" manual :-).

A ver, para empezar con Bochs:

Puedes probar el DLX-linux que viene directamente, llamando al script boochs-dlx.

$ bochs-dlx

Desde las X (está configurado para que por defecto use el plugin de Xlib).

En la web de Bochs tienes imágenes precocinadas de muLinux, Hurd, FreeBSD, etc.

Si quieres hacer tus propios experimentos, lo primero es crear un disco duro virtual con bximage:

$ bximage

Y te va preguntando si lo que quieres es un disco duro o un floppy. el tamaño en megas, etc. Quedaté con el número de cabezas, cilindros y sectores.

Ahora necesitas algo con lo que arrancar. O un cd autoarrancable o un disco de arranque. Puedes obtener discos de arranque de todos los colores en BootDisk.com.

Por cierto, y por si te va el lado tenebroso de la fuerza, los discos de arranque que BootDisk.com para DOS y Windows están en un formato curioso: son zips autoextraibles (son *.exe) pero además arrancan un miniprograma que crea el disco de arranque automáticamente.

Para crear los discos en Linux, simplemente descomprime los *.exe con unzip y obtendras las imágenes. No hace falta que crees realmente los discos de arranque (en discos físicos) con dd o cat porque con las imágenes que acabas de obtener Bochs tiene bastante para simular un floppy que arranque.

En fin, sea como sea, ya tienes tu disco. Ahora tienes que escribir un bochsrc.txt adecuado. Hay un porrón de opciones (que no hacen falta la mayoría) y tienes ejemplos en la documentación (y en el que viene con la imagen de prueba de DLX-Linux), pero por si acaso, con esto deberías poder arrancar con el disco de Win95:

###
megs: 16
romimage: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000
vgaromimage: $BXSHARE/VGABIOS-elpin-2.40
floppya: 1_44=/home/jorge/gonzo/win95a.IMA, status=inserted
diskc: file="/home/jorge/gonzo/c.img", cyl=1300, heads=16, spt=63
newharddrivesupport: enabled=1
boot: a
ips: 1000000
# si quieres cdrom
cdromd: dev=/dev/cdrom, status=inserted
###

Creo que es autoexplicativo, pero por si acaso: el PC virtual emula Pentium sin más (por defecto), con dieciséis megas de RAM, tiene un disco duro virtual (c.img) y un disco de arranque (win95.a.IMA), vas a arrancar de la unidad "a:" y el número de instrucciones por segundo que quieres emular es un millón.

Puedes refinarlo mucho más, por ejemplo añadiendo una SoundBlaster emulada o una tarjeta de red, pero te lo dejo como ejercicio :-).

Ahora arrancas el PC virtual:

$ bochs -q -f bochsrc.txt

... "Starting Windows95"... "With CD-ROM support", etc, etc "A:\" :-).

Haz un fdisk, crea una nueva unidad lógica en el disco virtual, formatea, etc.

Supongo que sobrará decirlo, pero... Bochs emula por software instrucción por instrucción y todos los accesos a periféricos. Está escrito en un lenguaje de medio/alto nivel (C++), sin ninguna optimización especifica. Hace hincapie en la corrección del modelo y en la portabilidad, pero no en el rendimiento así que no esperes un superdesmpeño.

[ Padre ]


Otias, funciona de verdad ;) (2.50 / 2) (#9)
por runlevel0 (exterATvullferPUNTes) a las Sat Dec 28th, 2002 at 08:12:58 PM CET
(Información Usuario) http://perso.wanadoo.es/exter

Acabo de probarlo (bochs-dlx) y va ;)
Tengo una imagen de MS-DOS 1.0 y me están entrando malos pensamientos, juas.

De momento acabo de sacar una copia en PDF de esta página con tu explicación, todo un Mini-Jautu.

grax ;)

-- S41002
[ Padre ]


Claro que funciona, la duda ofende :-) (3.50 / 2) (#12)
por jorginius ("jorginius" en Google Mail) a las Sat Dec 28th, 2002 at 09:39:38 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

... Y ya aprovecho para poner bien el enlace de las imágenes precocinadas

Por otro lado, y para que no quede tan raquítico el comentario. Sobre lo que dije del LEON-2, bien pues aqui teneis la documentación y los diseños de un decodificador de Ogg Vorbis en una sola pastilla, a partir del LEON (de acuerdo, más una FPU comercial): el proyecto Ogg-on-a-Chip.

¿Mola o no mola tener un micro libre de patentes y con el código VHDL públicamente disponible? ;-)

Nota: por si alguien se lo pregunta: sí, Linux está portado al LEON :-)

[ Padre ]


VHDL (3.00 / 1) (#16)
por ridiculum a las Mon Dec 30th, 2002 at 07:09:26 PM CET
(Información Usuario)

Jorge, anota como proyecto interesante: Hacer algo decente con VHDL y no el puto interfaz EPP-i2c. Por cierto, VHDL es mas feo que pegarle a un padre por la espalda ;))))

[ Padre ]


 
Se me pasó (4.00 / 2) (#6)
por jorginius ("jorginius" en Google Mail) a las Sat Dec 28th, 2002 at 02:43:26 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

¿QUé pasa con las fuentes, que no se ven bien?

¿A ti no se te ven bien?. Verás, yo me bajé el rpm precompilado y como parte de los scripts de postinstalación me instaló no sé qué fuentes y me hizo cambios en la configuración del Xft.

A mí se me ven bien sin hacer nada en especial, así que si a ti no supongo que será por eso. Acabo de ver que bochs viene con este script que a lo mejor ayuda:

/usr/share/bochs/install-x11-fonts

En fin, ahí te dejo sólo :-(

[ Padre ]


 
Tema de la velocidad (3.00 / 2) (#7)
por faraox a las Sat Dec 28th, 2002 at 08:03:00 PM CET
(Información Usuario)

Me interesa mucho el tema del bochs, pero todavía no lo he probado, no tengo mucho tiempo. Lo que quería preguntar era el tema de la velocidad, me han dicho que es "muy lento", por lo que es incómodo para hacer pruebas. ¿Alguno puede confirmarme esto?



Como punto de partida: Bochs es lento (5.00 / 3) (#10)
por jorginius ("jorginius" en Google Mail) a las Sat Dec 28th, 2002 at 09:08:03 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

En un mensaje en la lista de correo de Bochs se afirma que, con la nueva versión, el rendimiento máximo que se obtiene es unas cincuenta veces menor con respecto al de la plataforma desde donde lo estes corriendo.

Para que nos hagamos una idea, el ejemplo que puse a GonzoTBA de 1.000.000 de instrucciones por segundo equivale más o menos a un 386 a 16Mhz. Aumentar el número de instrucciones por segundo conlleva que tengas que modificar, por tanteo, la frecuencia de refresco de la VGA para mantener el rendimiento.

Es más, si compilas activando la emulación de SMP, el rendimiento cae un 15%.

Como ves, no sólo es lento sino que además para obtener ese rendimiento de 1/50 hay que jugar bastante con la configuración.

Si buscas velocidad, la alternativa es VMware. Su desempeño es mucho mejor, básicamente porque no es realmente un emulador de PC, no tiene que interpretar y emular el código máquina sino que deja que tu micro real lo ejecute por él (evidentemente, así VMware sólo puede correr sobre x86).

VMware es un producto comercial de gran calidad. Su precio es de unos $300, pero hay licencias de evaluación por un tiempo limitado sin coste.

Tambien existe otro producto más limitado propietario Win4Lin, también exclusivamente para x86, sólo para Linux y exclusivamente para correr aplicaciones Windows y DOS en Linux. Su precio es de unos $100.

Otro programa que aún está lejos de considerarse siquiera una beta es Plex86, del creador original de Bochs. Plex86 utiliza la misma técnica que VMware (la "virtualización"), bajo licencia GPL. Plex86 ha estado muerto mucho tiempo, pero ahora ha vuelto a la la actividad alojado en Savannah.

De todas formas, Bochs cuenta con algunas ventajas frente a VMware. La emulación de varios micros y/o de instrucciones que no estén disponibles en el micro real, o el que sea potencialmente un fantástico ICE de x86 (incluso tra un depurador interno y existe un front-end gráfico: BFE).

En realidad VMware y Bochs, casi no son comparables. VMware es ideal para ejecutar tal o cual aplicación que a Wine se le resiste, o para testear configuraciones de tus usuarios en el caso de que trabajes dando soporte técnico, o incluso para tener varios servidores virtuales. Bochs es más una herramienta de desarollo (aunque se pueda también usar como VMware... Con un poco de paciencia :-)).

[ Padre ]


Sobre VMware... (3.00 / 1) (#14)
por FGA (fga@ME.UNO.AL.NO.SPAM.escomposlinux.org) a las Sun Dec 29th, 2002 at 01:07:40 PM CET
(Información Usuario)

Pues probé la version de evaluacion y... para mi que no sirve para nada: el sistema operativo que instalas (en mi caso fue win98) no solo no reconoce, sino que no es capaz de utilizar ni la tarjeta grafica, ni la de sonido, ni la red, ni nada de nada, por lo que no me sirvio para nada. Respecto a compartir archivos entre linux y vmware, no me puse mucho per tiene algo que ver con NAT y todas esas historias, pero yo no tenia forma de hacer ni ping al linux.

Bueno, que mi experiencia con VMware no fue nada satsifactoria....quizas que yo no se hacerlo bien XD


[ Padre ]


Notas sobre VMware (5.00 / 2) (#15)
por jorginius ("jorginius" en Google Mail) a las Sun Dec 29th, 2002 at 01:52:45 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Bueno, tienes que tocar la configuración de VMware para añadir a la emulación la tarjeta de sonido y la de red, y además, decidir qué tipo de emulación quieres para esta última, entre cinco o seis opciones: está el NAT como tú dices, pero también puedes darle una dirección privada independiente a la máquina virtual. La documentación al respecto la tienes aquí aquí y si pides ayuda en línea desde el propio VMware te saltará tú navegador a esa dirección.

La configuración de la red en Boch es muy flexible también. De hecho me parece más flexible incluso aunque claro, la mayoría de las veces estás obligado a tocarla a mano.

Como ya has dado de alta ese hardware emulado en VMware, verás que lo puedes ver desde el S.O que corra en la máquina virtual. Supongo que Windows lo autodetectará, o a lo mejor le tienes que dar un empunjoncito desde eso de "agregar nuevo hw".

Lo que comentas de la tarjeta gráfica... VMware no tiene ninguna oportunidad de detectar la tarjeta gráfica o de hablar directamente con ella. Dentro de la VM emula una tarjeta ficticia compatible VESA 2.0 y para la salida por pantalla hace peticiones a las X como todo hijo de vecino.

Lo que si tiene VMware son "CDs" de utilidades y drivers para cada sistema operativo soportado. No son realmente CDs, son archivos que desde dentro de la emulación se ven como CDs. Desde los propios menús de VMware te los puedes descargar. El de Win98 viene con drivers de la "tarjeta de video" de VMware para ese sistema operativo: con ellos puedes obtener mayores resoluciones, más colores, etc.

En Bochs no existen colecciones de drivers específicos porque no se soportan uno por uno todos los sistemas operativos que pueden correr en él, como pasa con VMware, así que la tarjeta de video es la que es para Windows: una triste VESA compatible.

Necesitas parches especiales para resoluciones mayores de 640x480 y una configuración y una BIOS adecuada (como la que viene, o ésta) para llegar a unos tristes 8bpp.

Sea como sea, lo que quiero decir es VMware sí funciona, y es bastante más rápido que Bochs (dos órdenes de magnitud o incluso más). Evidentemente, no esperes correr Counter Strike y engendros similares en VMware porque no van a funcionar, por limitaciones de la tarjeta de video emulada, pero para aplicaciones de gestión y cosas así, el rendimiento es muy digno: entorno al 80% del real y lejísimos del "50 veces más lento" de Bochs.

[ Padre ]


 
Entro en el caso 1 (3.00 / 2) (#8)
por runlevel0 (exterATvullferPUNTes) a las Sat Dec 28th, 2002 at 08:04:52 PM CET
(Información Usuario) http://perso.wanadoo.es/exter

Yo entro casi de lleno en el caso 1 :
necesito probar código en MS-DOS / Win98 (en concreto programillas en Modula 2) y no estoy dispuesto a reparticionar.
Conozco trucos para meter Win en el 2º disco (desactivar el IDE0 desde la BIOS y luego usar grub o lilo con un chainloader) pero me gustaría tener acceso simultaneo, como hago con Dosemu.

Tengo ahora mismo Bochs y en cuanto tenga tiempo lo pondré en marcha.
-- S41002


 
Nueva versión de Bochs | 16 comentarios (14 temáticos, 2 editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda