¿Cómo instalo PCem v16 en Ubuntu 20.04?

Aprovechando el tiempo ocioso en Puerta de Hierro, Juan Perón recibía a
los visitantes más ilustres, y les explicaba cómo instalar el emulador
de PC antiguas PCem en Ubuntu.

(...)
Muy distinguidos señores.

Se ha dicho que todo lo pasado fue mejor. Este adagio no siempre es
real, sino un mero deseo de añoralgia. Pero en momentos de ocio,
cualquier cosa nos viene bien.

El impulso por lograr lo que antes estaba bien es una natural condición
humana que hemos de aprovechar para impulsar las condiones de lucha por
el Bienestar 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 arto
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.

Pero nuestro Movimiento ha colocado en los frontispicios de su Academia
que todo ha de hacerse en pos de los deseos del Pueblo, y que 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
ados de perfección un sistema completo, tanto su software como su
hardware, y la manera en la que estos interactúan. La finalidad no es
otra más que la de poder tornar una máquina (nuestro equipo actual) en
cualquier otro. En este caso, en una funcional IBM PC o sus clones.

Pocas van quedando en condiciones operativas, su hardware se va
rompiendo. Pero una máquina virtual de calidad permitirá correr en otras
arquitecturas la añorada original. Como una Isabelita emulando a una
Evita...

Pueb bien... PCem es una poderosa máquina virtual liberada bajo licencia
GPLv2, que nos permite emular completamente la operativa de hardware de
arquitectura IBM PC. Originalmente fue diseñado para emular la antigua
IBM XT, pero ha sido extendido a través de numerosas iteraciones para
incorporar la emulación de otro harware más moderno de la época también.

Compilación e instalación de PCem

Como paso previo debemos asegurarnos de instalar en Ubuntu las librerías
de software necesarias. 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-dev libopenal-dev libsoundio-dev

Como en todo proceso de compilación, nos hacemos con el código fuente de
la última versión de PCem, la descomprimimos y la 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/PCemV16Linux.tar.gz ;
tar xvzf PCemV16Linux.tar.gz ;

./configure --enable-alsa --enable-release-build --enable-networking ;
make ;
sudo make install

Una vez que hayamos compilado PCem v16 en Ubuntu e instalado, tendremos
su archivo ejecutable pcem copiado en /usr/local/bin/ automáticamente.
Podremos ahora ejecutar PCem por ver primera. Lo haremos desde la
terminal ingresando:

pcem

La primera vez que lo ejecutemos, el emulador creará dentro de nuestra
carpeta de usuario un directorio oculto llamado ~/.pcem/, donde
resguardará sus ficheros de configuración, y donde espera encontrar
ficheros con volcados de memoria ROM de las BIOS encontradas en los
distintos hardware que quisiéramos emular. Naturalmente, como estas ROMs
deben proveerse aparte, es lógico que PCem 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 sustema 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.

wget https://pcem-emulator.co.uk/files/genxt.zip ;
wget https://pcem-emulator.co.uk/files/xtide.zip ;
unzip gentx.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 inciará sin errores.

Configurar un sistema a emular 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 bien, 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 disquet 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

Ya que no es posible utilizar carpetas compartidas entre PCem y Ubuntu,
en caso de querer montar una imagen para instalar software habremos de
utilizar las unidades virtuales provistas de los archivos .img y
montarlas en nuestro sistema de archivo.


Si hemos creado una imagen con PCem, la buscaremos en ~/.pcem/hdd

En nuestra terminal ingresamos:

fdisk -l imagen.img

El sistema nos informará el tamaño de sectotres, y el sector de inicio o
"Start". "Start" informa el lugar donde comienza el sistema de archivos,
y depende de la imagen. Por ejemplo, si es una imagen de arranque de un
sistema operativo.

Si nuestro archivo de imagen contiene múltiples particiones, se nos
informarán con sus sectores de inicio. 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.


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
En este ejemplo particular la primer partición, el offset sería 512 x 63 = 32256

Una vez identificado esto, ingresamos:

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/

Acto seguido copiamos los directorios que quisiéramso incluir en la
imagen con:

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


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