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