martes, 19 de mayo de 2020

¿Cómo instalo PCem v17 en Ubuntu 20.04?

Aprovechando el tiempo ocioso en Puerta de Hierro, Juan Perón recibía a los visitantes más ilustres en su quinta 17 de Octubre de Navalmanzano 50 Madrid. Durante su estancia les explicaba cómo instalar el emulador de PC antiguas PCem en Ubuntu.

(...)
Muy distinguidos señores.

Parecería común decir que todo lo pasado fue mejor. Este adagio, por extendido, no siempre es preciso, sino un mero deseo potenciado por las añoranzas del tiempo.

Pero en momentos de ocio, cualquier cosa nos viene bien.

El impulso por lograr nuevamente aquello que antes estaba bien es una natural condición humana que - como en la química - hemos de aprovechar como  catalizador de las condiciones de lucha, aquellas que sin duda ha de darse en la Patria. En eso estamos y es fundamento de la lucha táctica pero también de la conducción estratégica.
En informática, utilizar equipos del ayer suele tornarse complejo y difícil. El hardware antiguo puede no estar disponible, ser caro, y tener los lógicos problemas técnicos que los años suman a todo sistema.

Nuestro Movimiento ha indicado en los frontispicios de sus Academias que todo ha de hacerse en pos de los deseos y del bienestar al que aspira el Pueblo. Cuando hay una necesidad, nace un derecho. A tal efecto hemos creado lo que hemos dado en llamar "máquinas virtuales". No es otra cosa que simular con visos de perfección un sistema completo, tanto su software como su hardware, y sobre todo la manera en la que estos interactúan. La finalidad no es otra que la de poder tornar una máquina (nuestro equipo actual) en cualquier otra.

Asumamos virtualizar en función una IBM PC o sus clones. Pocas van quedando en condiciones operativas, y en el futuro habrá menos. Pero una máquina virtual de calidad permitirá correr en otras arquitecturas la añorada original. Como una Isabelita emulando a una Evita...

Pues bien... PCem es una poderosa máquina virtual liberada bajo licencia GPLv2, que nos permitirá emular completamente la operativa de arquitectura IBM PC. Originalmente fue diseñado para emular la antigua IBM XT, pero nuestro Movimiento la ha extendido a lo largo de numerosas iteraciones para incorporar la emulación de otros aparatos de época más moderna también.

Compilación e instalación de PCem


Como paso previo debemos asegurarnos de instalar en Ubuntu - el cual será el sistema madre - las librerías de software necesarias para la compilación de PCem. Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos en ella el siguiente Comando de Organización:

sudo apt-get update
sudo apt-get install git libsdl2-dev libwxgtk3.0-gtk3-dev libopenal-dev libsoundio-dev

Como en todo proceso de compilación, nos haremos con el código fuente de PCem, lo descomprimimos y lo compilamos. Todo ello podrá hacerse simplemente pegando en la terminal el siguiente bloque de comandos de organización:

mkdir ~/Descargas/pcem/ ;

cd ~/Descargas/pcem/ ;
wget https://pcem-emulator.co.uk/files/PCemV17Linux.tar.gz ;
tar xvzf PCemV17Linux.tar.gz ;

./configure --enable-alsa --enable-release-build --enable-networking ;
make ;
sudo make install
Tras aproximadamente un minuto, habrá finalizado la compilación y se habrá instalado en /usr/local/bin/. Podremos ahora ejecutar PCem por ver primera. Lo haremos desde la terminal ingresando:

pcem

La primera vez que lo hagamos el emulador creará un directorio oculto llamado ~/.pcem/, donde resguardará sus ficheros de configuración, y donde espera encontrar los ficheros primordiales con volcados de memoria ROM de las BIOS encontradas en los distintos hardware que quisiéramos emular. Naturalmente, como estas ROMs han de proveerse aparte, es lógico que PCem sea vago y nos indique la ausencia de las mismas mediante el mensaje "No ROMs Present! You must have at least one romset to use PCem.":

Agregar BIOS a PCem

Afortunadamente gracias a la acción revolucionaria del Justicialismo en nuestro sistema GNU con Linux, es absolutamente sencillo de hacernos con estas obligatorias ROMs de hardware del ayer. Presionamos Ok para cerrar la ventana, e ingresaremos en la terminal los siguientes Comandos de Organización:

cd ~/.pcem/
git clone https://github.com/BaRRaKudaRain/PCem-ROMs.git
rm -r roms/

mv PCem-ROMs/ ~/.pcem/roms/
mkdir ~/.pcem/hdd/

El nuestro es un Movimiento que aboga por la Liberación, y de esta manera no hacemos otra cosa que liberar un software esclavizado por oprobiosas licencias privativas. En caso que nos dé prurito siquiera descargar ROMs de BIOS privativas, bien podríamos prescindir de lo anterior y utilizar estos comandos de organización para hacernos con el código de una BIOS de XT genérica liberada, así como el de un controlador de disco genérico liberado para PCem.

cd ~/.pcem/roms/ ;
wget https://pcem-emulator.co.uk/files/genxt.zip ;

wget https://pcem-emulator.co.uk/files/xtide.zip ;
unzip genxt.zip ;
unzip xtide.zip ;

Cualquiera sea la opción doctrinal que optemos, a partir de ahora ahora ejecutamos PCem el instalador debería arrancar sin problemas.

Crear lanzador de PCem

En el caso de Ubuntu, opcionalmente podremos crear un lanzador a PCem a fin de poder ejecutarlo sin tener que usar la terminal. El procedimiento es similar a cualquier otra aplicación. En el caso de Ubuntu Mate haremos clic con botón derecho del mouse sobre Aplicaciones en el panel superior, y en el menú contextual que aparece elegimos la opción "Editar Menús". Se abrirá una ventana con dos paneles. En el panel izquierdo elegimos la categoría "Herramientas de Sistema" y presionamos el botón "+Elemento Nuevo". Esto abrirá el cuadro de diálogo para "Crear Lanzador", donde rellenamos los campos de la siguiente manera y presionamos Aceptar.
Ahora podremos ejecutar PCem desde Aplicaciones / Herramientas de Sistema / PCem.

Esta vez PCem se iniciará sin errores.
Configurar un sistema emulado en PCem
Para poder utilizar el emulador debemos diseñar un un sistema de hardware virtual. Para ello presionamos el botón New y le indicamos un nombre al equipo virtual. 
Acto seguido hemos de disponer del hardware necesario en el panel que aparezca. Sigtuiendo el principio nodal del combatir al Capital, todo el hardaware es gratuito. Pero, en valoración histórica podremos disponer de un equipo coherente con una etapa histórica determinada. En mi caso basaré una configuración en un un motherboard Award 430VX PCI de 1997 (el cual aparecerá listado como [Socket 7] Shuttle HOT-557, simplemente porque su BIOS cuenta con la moderna rutina de autodetección de las unidades de disco IDE, y es adecuado para versiones tardías de MS-DOS y para Windows 95 y 98SE. Para elegir un procesador debemos seleccionar la marca (Intel, AMD, Cyrix o incluso los baratos ITS "Winchip", y hacemos clic en el campo correpondiente al modelo, utilizando Flecha de Cursor Arriba y Flecha de Cursor Abajo para elegir el deseado. En mi caso escojo un Pentium MMX de 166 Mhz, aunque debemos saber que esto no será representativo de la velocidad sino de las instrucciones computacionales contenidas en el mismo (lo normal en 1997 era un Pentium 233 MMX, pero este no anda muy bien en mi caso). Mas tarde podremos ajustar la velocidad del microprocesador dependiendo del microprocesador real de nuestro equipo. La memoria RAM instalada en placa la podremos virtualizar, y si bien era usual unos 64MB, duplicamos dicha cantidad porque "es gratis".
En la solapa video elegiremos la placa de video anhelada. Si bien no era la panacea, os recomiendo una S3 Virge o una Trident Tru64 por su excelente compatibilidad. Si tildamos la opción Voodoo Graphics podremos emular en PCem una de dichas sobrevaloradas tarjetas de video de 3dFx. De momento no lo haré.
Nota: Si anhelan configurar una placa de video para juegos 3dFx Voodoo2 requerirán sus controladores, que podrán encontrar aquí. Dependiendo la versión de Window$ que deseen emular, podrán buscar la versión adecuada. Como referencia deben conocer que si usan el último controlador del año 2000 para Windows podrán operar, pero habrán de instalar en Window$ el famoso Dir€ctX 7 para que la Voodoo2 funcione adecuadamente, incluso si los juegos no requieren Dir€ctX7.

En la solapa de sonido encontraremos excelente emulación con la posibilidad de elegir una entre varias placas AdLib, Creative Labs Sound Blaster hasta el modelo SB128, o Aztec. Para ello hacemos clic en el campo Device y usando las flechas de cursor arriba y abajo.. Yo utilizaré la Sound Blaster AWE32 porque me place.
En la solapa de dispositivos de almacenamiento es el de mas cuidado.
El campo HDD refiere al tipo controlador de unidad de disco rígido que queremos emular. En este caso utilizaré el controlador [IDE] Standard IDE.

Los campos FDD son sencillas y refieren a las unidades de disquettes flexibles o "floppy". La unidad A: será una clásica disquetera de 3 1/2 pulgada y 1,44MB de capacidad, mientras que la B: será una útil de 5 1/4 pulgadas dy1,2MB. En el caso de la unidad de CD-ROM definimos la velocidad emulada de la misma.

La parte más compleja refiere a las unidades de disco. Os asistiré como didacta paternalista para llegar al éxito de forma automática, mas deben conocer que existen varias posibilidades de configuración manual para los parámetros del disco rígido virtual.

En la parte inferior derecha del cuadro encontraremos las definiciones para crear hasta cuatro unidades virtuales (C:, D:, E: y F), las cuales pueden definirse como Hard Drive (disco rígido), CD-ROM o Iomega ZIP. En nuestro caso utilizaremos un disco Master Primario CI como Hard Drive y presionaremos el botón New para "crearlo". Hemos de crear uno que se corresponda en espacio y características técnicas del motherboard que hicimos.

Este disco rígido virtual consiste realmente en un archivo de imágen con extensión .img localizado en algún lugar de nuestro directorio de usuario, y que de momento estará vacío. En el campo file: debemos indicarle a PCem qué nombre y dónde lo queremos localizar el archivo .img.

Normalmente PCem nos propone crear un archivo de imagen que simula un disco rígido de 251MB (63 sectores, 16 cabezas, 511 cilindros). Este disco era normal para un sistema de 1992, apto para MS-DOS o Window$ 3.1x. Al presionar OK habremos creado un disco rígido virtual virgen, de dicho tamaño.

En este caso utilizaré un disco diez veces mas grandes, de 2GB. Para ello ingresaré los datos de 63 sectores, 16 cabezas, 4160 cilindros, para un tamaño total de 2047 MB. En el campo file debo asignarle una ruta y nombre (por ejemplo, ~/.pcem/hdd/disco2gb.img
 Una vez presionado el botón OK, dicho disco quedará asignado como Unidad 0, Master Primaria (C:).

Podremos crear otros discos si quisiéramos hacerlo, a fin de figurar como unidades D: E: o F:

Nota histórica: las placas controladoras de disco variaron en el tiempo con distintas etapas de avance técnico de los clones IBM PC. En la década de los 80s las primeras IBM PC XT contaban con una plaqueta controladora de discos de norma MFM (para discos de entre 10 y 80 megabytes). A partir de la década del 90 la norma de los discos rígidos cambió a la IDE, y al poco tiempo las controladoras comienzaron a integrarse en la placa madre en lugar de colocarse como una placa separada. Los discos IDE se ofrecían entre los 100MB (c. 1992) hasta los 250 GB (c. 2007). La norma de comunicación SCSI surge en 1993 con discos mas veloces pero requería una placa controladora específica.

Para PCs de la era de 1997 podríamos querer configurar uno o más discos de 8.063 Megabytes cada uno (63 sectores, 16 cabezas, y 16383 sectores a 512bytes/sector, que nos será más adecuado para correr Window$). En tal caso deben recordar que ni Windows 95a ni MS-DOS aceptaban mas de 2.048 Megabytes por partición lógica, por lo que liego tendrán que "particionarlo en 4 unidades de 2GB con fdisk". 

En el caso de motherboards más antiguos, sus controladoras de disco y BIOS podrían sólo ser compatibles con determinado tipo de discos previamente listados (como el caso de la XT, especialmente limitadas en las opciones de disco). Para una IBM PC XT de 1986, podríamos querer simular un disco MFM de 42MB (17 sectores, 7 cabezas, 733 cilindros a 512 bytes por sector) junto a su controladora MFM estándar de IBM.


Pues bienn, una vez que hayamos terminado, se nos presentará el nombre de la configuración. Para arrancarla hacemos doble clic en el nombre del equipo.

Esto dará inicio al proceso de arranque, tal cual la PC que inventamos. En este caso será un equipo con un clasico BIOS Award de finales de los 1997. Para que detecte el disco virtual era necesario configurarlo en la BIOS.
Durante el POST presionando repetidametne Del ingresaremos a la BIOS y configurar los parámetros tal como se hacía siempre. Ingresamos al apartado Standard CMOS Setup que se usa para configurar los parámetros de disco, hora y disqueteras.
En el caso del disco rígido, la controladora de disco XT-IDE (AT) permite autodetectar los parámetros del disco siempre y cuando el motherboard cuente también con la capacidad de hacerlo. Como la 430NV que hemos virtualizado dispone de tal facilidad, debemos poner los parámetros de discos primarios y secundarios en Auto ("Detección Automática"). Para ello usamos las flechas del cursor para movernos y las teclas AvPg o RePg para poner todo en Auto.


En el caso de las unidades de diskette A: y B: las indicamos con los parámetros que le elegimos al hardware virtual ya que las disketteras no se autodetectan.

Nota: en el caso de motherboards o controladores de discos anteriores a 1995 no era extraño tener que escoger a mano los discos contemplados, o bien especificar "a lo vikingo" el modo "user" e indicar los parámetros de cilindros, cabezas, sectores, y modo (normal, large o LBA). En el caso de este motherboard tambiñen contaremos con la función IDE HDD Auto Detection, una de las cosas.

 También podremos usar Esc para volver al menú principal y dirigirnos a BIOS Features Setup.

Allí podremos cambiar el orden de dispositivos de arranque usando AvPag o RePag.
Cuando hayamos configurado todo, volvemos al menú anterior de la BIOSy elegimos Save & EXIT.
La BIOS nos preguntará si estamos seguros de querer salir y guardar los cambios, a lo que decimos si presionando y.
Inmediatamente la "placa madre" arrancará. Debería detectar correctamente el "microprocesador" y contear la memoria instalada, a su vez que encontrar el disco IDE Master Primario, en este caso nomenclado como "PCemHD".
Rl disco virtual no tiene formato ni sistema operativo. A partir de ahora podremos arrancar la PC emulada ya sea desde el archivo img de un diskette de arranque de MS-DOS o de Windows, o bien podríamos introducir un CD-ROM de instalación en nuestra lectora de CD (o montarlo como un fichero .IMG como os he indicado).
 
Suponiendo el primer caso debemos utilizarse un diskette de arranque en formato .img de MS-DOS 6.22 en castellano que podrán encontrar aquí. Para colocar el diskette de arranque (el disco 1) en forma de archivo .img en el emulador PCem, hacemoc clic con botón derecho sobre su ventana, y aparecerá un menú contextual. Vamos a la opción Disc/Change drive A: y buscamos el fichero disk1.img.

Acto seguido reiniciamos el equipo virtual desde el menú System / Ctrl+Alt+Del. La máquina virtual se reseteará en caliente y booteará con el diskette arrancable virtualmente introducido en la diskettera A:.


Si usamos un disco de arranque de DOS se nos presentará el instalador, pero aún no tenemos el disco preparado. Salimos de la instalación y ejecutamos el comando a:fdisk. Para preparar la partición en formato FAT16 elegiremos "Crear una partición lógica" primero debemos elegir la opción c para "Compatibilidad con DOS". Luego creamos la partición con la opción "n" para "Nueva partición. Usaremos la opción "t" para cambiar el tipo de partición a la 6 (FAT16). Finalmente "w" para escribir los cambios" y salir al sistema. Para formatear el disco c: ingresamos format c: /s

 Nuevamente reiniciamos el equipo con el disquette 1 del sistema operativo (o bien, un CD-ROM de inicio) y lo instalamos.


Si el cursor del mouse quedó atrapado en la ventana del emulador y necesitamos poder utilizarlo fuera de su ventana en nuestro sistema Ubuntu, lo recuperamos con Ctrl+Fin.

Con esto podremos continuar cambiando los discos simplemente poniendo las imágenes IMG de diskettes no bien las necesitemos (por ejemplo, cuando lo solicite un instalador como el de un sistema operativo).
 Con esto podríamos instalar un sistema operativo en diskettes.


Montar una imagen .img

Los archivos de imagen IMG pueden montarse en Linux a través del Montador de Discos, pero si bien podremos leer dichos ficheros y hacer copias de su contenido en nuestro disco, normalmente no podremos grabar en ellos.

Desafortunadamente no se puede utilizar una carpeta compartida para utilizarla en PCem (lo cual facilitaría enormemente cargar programas en el disco virutal). Por tal motivo, en caso de querer agregarle contenido a una imagen a fin de innstalar software o cargarle otro tipo de contenido deberemos utilizar los archivos de imagen de unidades virtuales en forma de ficheros .img y montarlas en nuestro sistema de archivo. Para un buen resguardo técnico, es importante saber que es muy inconveniente hacer esto mientras PCem está en ejecución por lo que lo cerramos.

En el caso que les he descripto, como hemos creado una imagen con PCem, la buscaremos en ~/.pcem/hdd/. En nuestra terminal ingresaríamos:

cd ~/.pcem/hdd/

fdisk -l imagen.img

El programa fdisk nos listará las características del archivo img del disco virtual: el tamaño de cada sector, la cantidad de sectotres, y el sector de Comienzo "Comienzo". "Comienzo" informa en qué sector comienza el sistema de archivos, y depende de la imagen. Por ejemplo, si es una imagen de arranque de un sistema operativo.

Por ejemplo:


fdisk -l 2gb.img
Disco 2gb.img: 2 GiB, 2115993600 bytes, 4132800 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0x00000000

Dispositivo Inicio Comienzo   Final Sectores Tamaño Id Tipo
2gb.img1    *            63 4120703  4120641     2G  6 FAT16


Si nuestro archivo de imagen tuviese múltiples particiones, se nos informarían con sus respectivos sectores de Comienzo. Tengamos presente que las llamadas particiones extendidas no son otra cosa que particiones lógicas estructuradas de una manera particular, que no podrán ser montadas. Sólo pueden montarse particiones a las cuales fdisk les identifica un Sistema de Archivos.

Pues bien señores, para montar esta partición tenemos que obtener el "Valor de Offset". El valor de Offset consiste en multiplicar el tamaño de sector por el comienzo del Dispositivo. En este ejemplo particular, la primer partición, el offset sería Tamaño de sector 512 x Comienzo 63 = 32256

Una vez identificado el Offset de 32256, ingresamos los comandos según la siguiente sintaxis:

sudo mkdir /media/usuario/directorio_de_montaje/

sudo mount  -o loop,offset=(valor de comienzoxtamaño de sector) archivo_de_imagen.img /media/usuario/directorio_de_montaje/

...en nuestro ejemplo sería:

sudo mkdir /media/usuario/discovirtual/
sudo mount -o loop,offset=32256 ~/.pcem/hdd/2gb.img /media/usuario/discovirtual/

Ya tendremos montado el disco virtual en el directorio /media/usuario/discovirutal. Acto seguido usando sudo para tener derechos de administrador, podremos proceder a copiar allí lo que querramos, mediante:

sudo cp -r directorio/ /media/usuario/discovirtual/


¡El valor de offset es esencial para montar la imagen correctamente!

Es importante saber que ejecutar PCem con un disco montado no funciona. Debemos montar el disco después de arrancar PCem. Si tuviésemos montado un disco previamente, debemos desmontarlo y salir de PCem antes de volver a montarlo.

Crear una imagen de disco rígido para MSDOS en Linux:

Lo primero es contar con un disco rígido con espacio libre para crear una partición específica para PCem.

Para ello ingresamos:

dd if=/dev/zero of=imagen_a_crear.img bs=1M count=MB_deseados

Debemos obtener las especificaciones de una unidad de disco rígido antigua. Podrán ejecutar PCem y revisar la bIOS para saber qué unidades de discos estaban soportadas en la computadora emulada. La mayoría de las BIOS tenían varios tipos de discos rígidos que aceptaban. Con tales datos nos será fácil crear una partición de disco empleando fdisk:

fdisk -C cilindros -H cabezas -S sectores nuestra_imagen.img

Finalmente formateamos la unidad virtual con el programa format de MS-DOS. Luego agregamos la imagen a PCem en Settings / BIOS.

6 comentarios:

  1. El Conde de Montecristo11 de junio de 2020, 21:26

    Deberías probar los shaders OpenGL para disfrutar de la xperiencia completa, puedes configurar muchos monitores CRT

    ResponderEliminar
    Respuestas
    1. Estimado El Conde de Montecristo:

      Natural, he investigado tal funcionalidad y representa un gran avance en pos de la Liberación de los Pueblos y su Software. En su momento disfrutaba de estos adminículos con un monitor VGA Sámsung de 14 pulgadas a color, en una era donde la infamia tenía un tono moocromático. Fue el Justicialismo el que trajo el color a la informática.

      Reciba un gran saludo que se prolongará a todos los compañeros que luchan.

      Atte.

      Juan Perón

      Eliminar
  2. Estimado! Como podria emular un BIOS y motherboard en particular para seguir disfrutando de un soft a medida para Windows 98 y asi liberarme del yugo opresor del creador del mismo. Slds.compañero!

    ResponderEliminar
    Respuestas
    1. Estimado Hernán:

      En el caso de este emulador, bien podría instalar Windows 95 en él, con ciertas limitaciones. En el caso de Windows 98, podría convenirle el uso de la suite de emulación Wine, la cual ya hemos explicado en este artículo:

      https://ubuntuperonista.blogspot.com/2014/01/como-ejecuto-programas-de-windows-en-ubuntu-cambio-tamano-letra.html

      Debería poder dar ejecución a su aplicación a medida, y de esta forma liberarse de las opresivas cadenas mientras goza de los derechos del Software que el Justicialismo le ha legado.

      Atte.

      Juan Perón

      Eliminar
  3. Yo he compilado la versión 17 para Linux en MacOS y funciona pero no consigo sacar el botón derecho y por tanto no consigo instalar MS-DOS repito el emulador se ejecuta bien en MacOS pero no consigo sacar el botón derecho.

    ResponderEliminar
    Respuestas
    1. Estimado David:

      Este emulador está pensado para Linux. Tal vez tenga problemas en utilizarlo sobre un sistema privativo oligárquico y privativo como MacOS.

      Atte.

      Juan Perón

      Eliminar