16 de marzo de 2008

POST PARA NOSTALGICOS I


Iniciar BeOS en Qemu para Linux

Logo BeOS


Algunos habrán escuchado muy buenas cosas de BeOS, otros que ya lo conocen lo recuerdan con añoranza y melancolía, algunos están conociéndolo recién ahora o apunto de conocerlo, en fin, a pesar del tiempo pasado BeOS no ha muerto, sigue en la memoria colectiva de mucha gente y permanecerá así por mucho tiempo.

Este post brinda la oportunidad de probarlo ya sea para conocerlo o solo para recordar lo que lo hacia tan especial. No es nada complicado utilizar BeOS en el emulador libre Qemu, pero a muchos le da flojera investigar y quizás con este post los anime a volver a intentarlo aunque sea por unos momentos. Servirá para preparar algunas bases ante la llegada de su substituto libre Haiku, tan bello y bien diseñado como el original.

Seguro que la mayoría de los que se interesen por este post ya saben que es BeOS y que es Qemu, para los nuevos mi recomendación es que visiten la wikipedia y lo lean por ustedes mismos:
BeOS: http://es.wikipedia.org/wiki/BeOS
Qemu: http://es.wikipedia.org/wiki/Qemu Homepage: http://fabrice.bellard.free.fr/qemu ó http://www.qemu.net Ese pedazo de emulador: http://www.badopi.org/node/585

Como resumen diré que Qemu es un emulador, permite tener otra computadora funcionando sobre la computadora real, emulando el hardware para que los sistemas operativos crean que están en una PC verdadera. Qemu no solo emula PC, sino otras arquitecturas de procesadores como PPC, ARM, Sharp y mas.

BeOS es un sistema operativo desarrollado por Be Incorporate en 1990, empresa que fue vendida a Palm en 2001 debido a problemas financieros. BeOS esta orientado al ámbito multimedia, es super rápido, su interfaz es muy simple y limpia, soporta mas de un procesador (desde el año 1990, cuando ms-dos dominaba el mercado, aun en el '95 su competencia era Windows 95 que no trabajaba bien ni con un procesador) entre otras muchas virtudes.

¿Empezamos...?

Mi único sistema operativo en casa es Linux, Slackware 12 para ser exacto, así que instalaremos Qemu aquí. Evidentemente instalar Qemu en Windows es tan fácil como descomprimir un archivo .zip. Con estas instrucciones podrá instalarse en cualquier distribución ya que uso el paquete fuente original y no paquetes precompilados para una u otra version especifica de Linux.

Quizás ya conozcas como se instala y ejecuta Qemu, así que seré breve, en caso contrario no solo tienes estas instrucciones sino la pagina oficial http://www.qemu.net para buscar mas información.

Evidentemente nuestro primer paso sera descargar los fuentes desde www.qemu.net o bien descargar los binarios que hay disponibles para Linux. También puedes utilizar el repositorio de software de tu distribución favorita, seguro que ya tienen Qemu precompilado. Yo prefiero compilar desde las fuentes, así les muestro un ambiente que todas las distribuciones puedan compartir. Para la fecha de edición de este post la ultima versión disponible es la 0.9.1

Por cierto, Qemu presenta problemas si se compila con GCC 4, así que para los que tenemos distribuciones que lo incluyen habremos de cambiar a la versión 3. Para Slackware es sencillo, desde http://packages.slackware.it podemos descargar la versión 3.4.6, no hay que desinstalar la version actual (4.1), esta ultima se instala en la carpeta /opt, así que no entra en conflicto con nuestra versión de GCC. Ya instalada GCC 34 se puede hacer un enlace simbólico de /opt/gcc34/bin/gcc-3.4.6 a /usr/bin/gcc-3.4.6 y /usr/bin/gcc34.

  1. Descargamos los fuentes en nuestra carpeta personal (cd ~; wget http://fabrice.bellard.free.fr/qemu/qemu-0.9.1.tar.gz)
  2. Descomprimimos (tar -xzf qemu-0.9.1.tar.gz)
  3. Entramos al directorio y ejecutamos ./configure (cd qemu-0.9.1; ./configure --cc=gcc34 --prefix=/opt/qemu-0.9.1 --interp-prefix=/opt/qemu-0.9.1/share --target-list=i386-softmmu). Ahora lo explico: --cc=gcc34 le indica a Qemu que se compile usando el comando gcc34 que es la versión 3.4.6 de gcc que descargamos hace poco; --prefix nos copiara los archivos binarios en /opt/qemu-0.9.1, por defecto lo hace en /usr/local pero yo prefiero hacerlo en opt, así si hay que eliminarlo solo hay que borrar la carpeta; interp-prefix nos ubicara la bios y la tarjeta de vídeo virtual en la carpeta /opt/qemu-0.9.0/share e incluirá la ruta en el binario qemu, de otra manera tendríamos que indicarle al ejecutar qemu la opción -L y la ubicación de estos archivos; --target-list=i386-softmmu esta solo compila Qemu para emular la arquitectura i386, a menos que también quieras emular la x86_64 o SPARC, PowerPC, ARM etc. esta bien así.
  4. Compilamos (make ).
  5. Ya compilado instala como root (su; make install)
  6. Para tener disponible los binarios en nuestro $PATH hay que crear link simbólicos, como root (ln -s /opt/qemu-0.9.1/bin/qemu /usr/bin/qemu; ln -s /opt/qemu-0.9.1/bin/qemu-img /usr/bin/qemu-img)

Además de emulador Qemu funciona como virtualizador, que es un método distinto de ejecutar maquinas virtuales, en este método las llamadas al sistema son ejecutadas en el hardware anfitrión en vez de ser pasadas al sistema operativo anfitrión para que las ejecuta, con esto se acelera mucho el funcionamiento de algunos sistemas operativos. En Qemu esto se logra a través de un modulo llamado Kqemu, cuya versión al momento de este post es la 1.3.0pre11. Lamentablemente con BeOS no funciona correctamente por lo que no podemos disfrutar de toda la potencia del virtualizador, sin embargo teniéndolo instalado aun podemos aprovecharnos de cierto código de usuario que puede ser traspasado directamente al hardware y que funcionara bien en nuestro caso. BeOS es bastante rápido aun sin el Kqemu instalado y de todas maneras la diferencia entre tenerlo activado y no tenerlo activado puede que no se note, así que estos pasos pueden ser obviados, aunque cuando intentes probar a instalar Windows o Linux en Qemu es altamente recomendado tenerlo instalado y activado.

Hay que tener soporte para módulos en el kernel, ya que Kqemu es un modelo del kernel.

  1. Descargar Kqemu en tu carpeta personal (cd ~; wget http://fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz)
  2. Descomprimirlo y entrar al directorio (tar -xzf kqemu-1.3.0pre11.tar.gz; cd kqemu-1.3.0pre11)
  3. Ejecutar ./configure, make y make install, esto ùltimo como root (./configure; make; su; make install)
  4. Si usas udev en tu distribuciòn ejecuta este comando para crear el archivo /dev/kqemu:echo 'KERNEL=="kqemu", NAME="%k", MODE="0666" > /etc/udev/rules.d/60-kqemu.rules. En cambio si no usas udev ejecuta el comando siguiente:mknod /dev/kqemu c 250 0; chmod 666 /dev/kqemu (ambos como root claro).
  5. Para activar el modulo kqemu ejecuta el comando modprobe kqemu.
Ya con Qemu instalado nuestro proximo paso sera conseguir BeOS. El CEO de BeOS Jean-Louis Gassée ofreciò gratuitamente una copia del sistema operativo que funciona desde una imagen de disco virtual, se llama "BeOS Personal Edition", esta en http://www.bebits.com/bob/12420/BeOS4Linux.tar.gz, hay dos versiones, una para Windows con un instalador gràfico y otra para Linux que viene comprimida en un archivo tar.gz. La idea original era que se iniciara desde un disco flexible, este subìa BeOS desde el disco virtual ubicado en una partición de nuestro disco duro real. Este método solo funciona con sistemas de archivo FAT32, NTFS (de Windows NT 4 y Windows 2000, no funciona en NTFS de XP) y ext2 (no he probado con EXT3, se supone que es compatible con ext2 así que debería funcionar). Los sistemas aceptados eran los que existían al momento de que BeOS Personal Edition fuera creado y antes de que Be Incorporate fuera vendida. Pero nosotros usaremos Qemu, así que esto ultimo no nos aplica.

Entonces...
  1. Descargamos BeOS PE (cd ~; wget http://www.bebits.com/bob/12420/BeOS4Linux.tar.gz)
  2. y lo descomprimimos (tar -xzf BeOS4Linux.tar.gz).

Los archivos que necesitamos son floppy.img (que puede ser grabado en un disco flexible con el comando "dd if=floppy.img of=/dev/fda bs=512", pero no lo necesitamos) e image.be.

Ya con Qemu instalado, con los link creados apuntando correctamente a los binarios y con la imagen de BeOS disponible (supongo que en la carpeta ~/beos/image.be) solo nos falta iniciar con un comando como este:qemu -hda ~/beos/image.be -fda ~/beos/floppy.img -boot a

Atención: La tarjeta de vídeo que emula Qemu es una Cirrus CLGD 5446 que lamentablemente no tiene soporte en BeOS, así que seguro inicia en escala de grises, para evitar esto hay que subir con soporte para VESA. Al principio del booteo en Qemu presiona la tecla espaciadora, en el menú resultante selecciona "Select fail-safe video mode" y escoja un modo de vídeo.




Ventana de seleccion de modo de vídeo Vesa (1) Ventana de selección de modo de vídeo Vesa (2)



Ya tienes a BeOS funcionando, no fue tan difícil ¡verdad!

Escritorio vacio


Qemu soporta varios tipos de accesos de red para el sistema que se esta emulando y automaticamente selecciona el llamado "net user" que te permite acceder a Internet de manera automática compartiendo la conexión con el sistema operativo anfitrión y configurando el sistema invitado (el emulado) a través de un servidor interno de DHCP. En BeOS por alguna razón la configuraciòn por DHCP con Qemu no funciona así que hay que configurar a mano las IP para acceder al Internet.

En el menú de BeOS selecciona el submenu Preferences y la opción Network. Cliquea en el botón Setting y Especify settings, llena los campos con estas opciones: IP Address: 10.0.2.15; Subnet Mask: 255.0.0.0; Gateway: 10.0.2.2. Clic en Done y en la ventana principal el Primary DNS es: 10.0.2.3. Al guardar la configuración te preguntara si quieres reiniciar la red, responde que si y nuevamente en el menù BeOS ahora en el submenu Applications busca Netposite, un pequeño navegador Web muy ràpido, pero que lamentablemente no soporta JavaScript ni CSS, pero ya luego instalaremos FireFox.






Preferencias en el menu de BeOSConfigurar IP



Continuara...

1 comentario:

Anónimo dijo...

wenas, gracias a tu entrada he conseguido echarlo a andar en qemu, llevaba bastante tiempo intentandolo erroneamente tratando de ejecutarlo desde los cds de instalacion. Lo que no me funciona es la red aun, ¿que tarjeta de red te detecta?