Mostrando entradas con la etiqueta máquina virtual. Mostrar todas las entradas
Mostrando entradas con la etiqueta máquina virtual. Mostrar todas las entradas

jueves, 25 de junio de 2020

¿Cómo habilito el soporte de sonido de Pulseaudio en una Máquina Virtual QEMU en Ubuntu 20.04LTS?

¡Trabajadores!

El software ha de utilizarse para todo, pero sobre todo para la Auténtica Liberación del Pueblo.

En ocasiones, el oprobio de una situación muy particular puede requerir la elasticidad que presenta el Movimiento Justicialista. Siempre he dicho que el nuestro - por nacer de una necesidad de los hombres - no es un Movimiento sectario. Son las necesidades las que generan los Derechos, y este lineamiento es el que hemos colocado como un frontispicio en nuestra Doctrina.

Decía el Mariscal de Sajonia que poco importaba que él fuese viejo; lo importante es que sus soldados fuesen jóvenes. Para conducirlos estaba él. Tampoco hacía gran diferencia si sus huestes iban montadas sobre bayos, sobre moros o sobre mulas, lo importante que ellos fuesen hombres decididos. Indudablemente, el viejo Mariscal supo discernir lo poco importante de las cosas accesorias, si el lustre de las botas se empezaba en la caña o en el talón, o si los cabos llevaban penacho... lo que importaba era la maniobra en  campaña, la moral y el espíritu combativo del cuerpo de combate. Él los formaría, como Conductor.

Indudablemente, que la formación a la que los sometía era tal, que su tropa debía saber formar filas hasta por instinto, y sus suboficiales saber encuadrar material humano incluso de los tomados al enemigo.

Pues bien señores, en la informática en ocasiones suele suceder lo mismo. La claridad del objetivo del Conductor es lo fundamental en el designio de las estrategias, y su sentido de acción será el éxito planteado frente a un objetivo preciso. El herramental ha de adaptarse para lograr una solución que sea la mejor frente a la fluidez de los problemas planteados, en el tiempo y el lugar del problema.

Un ejemplo suele explicarlo todo, como decía Napoleón.

La realización de una tarea de única vez me ha implicado a montar para el usuario Invitado ("Guest") una máquina virtual QEMU con Micro$soft Window$ 10 corriendo bajo mi sistema Ubuntu 20.04LTS. En ella todo opera según la necesidad, excepto el audio. Siendo un usuario invitado, era se ha tornado imposible oír nada.

Soy un hombre que lleva la más maravillosa música que es la Palabra del Pueblo Argentino, por lo que me he dado a buscar una solución de circunstancias para esta condición tan especial...
QEMU cuenta con un fichero de configuración virsh. He allí un ejemplo del contenido utilizado en dicho fichero.

Como vemos el dicho fichero, el audio está asignado al proceso de un usuario común, en este caso /run/user/1001/pulse/native. La causa de la falla es que el usuario invitado no tiene tal identificación.

Para resolver el problema, debemos entonces informarnos del nombre de instancia que tendrá el servicio de sonido para el usuario Invitado. Para conocer esta importante información, podremos agregar en nuestra terminal los siguientes comandos:

start-pulseaudio-x11

pax11publish


En pantalla se nos informará el servidor de Pulseaudio, el cual en el caso del usuario Invitado es:

/run/user/1000/pulse/native rw,

Al configurar con este parámetro, nos aseguraremos que el Usuario Invitado ("Guest") pueda acceder ahora al servicio de sonido proporcionado por Pulseaudio.

Luego, ajustaremos nuestro fichero guest.xml para que refleje acordemente los cambios. La parte relevante, en este caso, sería:

<qemu:arg value='-device'/>
<qemu:arg value='ich9-intel-hda,bus=pcie.0,addr=0x1b'/>
<qemu:arg value='-device'/>
<qemu:arg value='hda-micro,audiodev=hda'/>
<qemu:arg value='-audiodev'/>
<qemu:arg value='pa,id=hda,server=unix:/run/user/1000/pulse/native'/>

Con tal predicamento, quien haya tenido la misma necesidad de correr un Window$ 10 virtualizado, podrá obtener sonido a través de QEMU, redireccionándolo a Pulseaudio en Ubuntu 20.04LTS.

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 (o con Ctrl+Alt+AvPág si escogimos Video/Alternative Update Lock).

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.

domingo, 4 de marzo de 2018

¿Cómo emulo un procesador de texto DEC WPS-8 en Ubuntu?

El Coronel Juan Perón ofició en la cátedra de Historia Militar en la Escuela de Guerra, claustro donde destacó por sus apreciaciones y estudios. Dentro de las exposiciones realizadas se encuentra la enseñanza para emular el procesador de texto WPS-8, primigenio software de la DEC PDP-8.


¡Señores!

Lo que define el comienzo de la historia no es otra cosa que el poder describirla. En otras palabras, desarrollar el almacenamiento del saber a través de los tiempos en forma escrita.

Al inventar los símbolos gráficos, los ideogramas y los primeros palotes o logogramas, y a partir de la creación de los lenguajes e idiomas con su consecuente traducción e interpretación, nos hemos permitido conocer las ideas que movieron a los hombres ya en los tiempos de Nabucodonosor y de Darío.

No bien el hombre pudo escribir, quiso saber cómo hacer que su medio de escritura durase más, cómo poder trasmitirlo en lugar y tiempo de manera más confiable. Las distintas culturas no tuvieron más opción que cuidar su acerbo y acrecentar el uso de los distintos sistemas alfabéticos que les resultaban preferidos. Hoy los utilizamos de manera refinada, y continuaremos expandiéndolos.

Nos encontramos en plena etapa de lo que llamamos digitalización, pero el resultado (con independencia del método de almacenamiento que nos depare el cómputo) no deja de circunscribirse a las palabras y las letras. Todos los idiomas que se precien cuentan entonces con sus literatos y sus poetas, y no habrá cambio tecnológico que no opere sino como medio de expresión imperfecto del alma de los  hombres.
Dentro de esta esquematización, se presenta como válida la posibilidad Justicialista de operar uno de los primeros sistemas de escritura digital pensados para su uso comercial, el DEC WPS-8.

El sistema WPS-8 era un equipo informático integrado en 1978 por la Digital Equipment Corporation para el procesamiento de texto digital. Representaba la apuesta de la compañía al por entonces novedoso concepto del procesamiento de textos a través de una minicomputadora de bajo costo.

Para reducir los costos, esperaban competir con las microcomputadoras que comenzaban a aparecer de forma desorganizada, y que - se esperaba - podrían lograr lo mismo.

Para lograr el WPS-8 se utilizaron componentes ya diseñados, como la ya por entonces clásica arquitectura de minicomputadora PDP-8, así como chips de memoria RAM para ese momento superados. Los ingenieros de la DEC integraron una versión TTL LSI de la PDP-8 en el espacio vacante del gabinete de una vieja terminal tonta VT52, y llamaron a la nueva terminal inteligente resultante "VT78". La PDP-8 contaba esta vez con un un microprocesador Intersil/Harris 6100 con potencia nominal de 4Mhz, que hubo de ser reducida a 2,2Mhz en vista de la baja performance de los módicos 16 Kwords de la veterana memoria RAM adosada.

El sistema WPS- 8 se vendió entonces en distintas configuraciones de hardware (denominadas WS por "Word Stations").  Por ejemplo, la estación WS78 estaba compuesta por la terminal VT78 conectada a un almacenamiento de masa conformado por una o dos unidades de diskettes RX1 de 8 pulgadas, junto al el software "WS78 v3.4". Al conectarle una impresora "tipo margarita", el sistema WPS-8 permitía en esa época hacer edición WYSIWYG, procesar letras en negrita o subrayados, y demás opciones que consideraríamos normales en un procesador de texto.

También existieron estaciones con muebles de trabajo mas grandes (WS100) o capacidad multiusuario (empleando dos terminales VT78). El sistema no evolucionó mucho; existió otro llamado WPS-11 que utilizaba ya las PDP-11.

Creación de la máquina virtual de emulación


Ya he indicado cómo hacer una emulación de diversos miniordenadores DEC por medio del emulador múltiple SIMH. Estos pasos previos me permite emular una DEC PDP-8i de 1970 con su respectivo panel virtual. Asumiendo que ya he hecho lo indicado, podré configurar ahora una máquina virtual de emulación especialmente tratada para emular el clásico WPS-8.

Para ello abro una terminal con Ctrl+Alt+T e ingreso los siguientes comandos de organización:

cd ~/.simh/panelsim/
nano wps.sh

Esto abrirá el editor GNU Nano con un archivo en blanco llamado wps.sh, al cual utilizaremos como ejecutable para el emulador de la WPS-8. Para que cumpla tal función le pegaremos el siguiente texto, que conforma los comandos de arranque:

# Arrancar una PDP-8/I ejecutando WPS8
./_launch.sh "blinkenbone.panelsim.panelsimPDP8I.PanelsimPDP8I_app" "--width 1000 --power 1" pdp8i pdp8_realcons wps.simh_pdp8 248-blinkenbone-simulated-pdp8i-panel


...una vez introducido dicho texto, guardaré el archivo con Ctrl+o y saldré del editor GNU Nano con Ctrl+x.

Como segundo paso descargaremos a nuestro sistema las imágenes de los diskettes del programa WPS, en su versión 3.4. Para ello introducimos en nuestra terminal los siguientes Comandos de Organización:

cd ~/.simh/panelsim/pdp8i/ ;
chmod -x *.pdf ;
wget https://raymii.org/s/inc/downloads/pdp/wps78v3.4.rx01 ;

wget  https://www.pdp8online.com/ftp/images/wps/wps-8-doc.rx01
chmod +x wps78v3.4.rx01 wps-8-doc.rx01

En tercer lugar crearemos la configuración para el emulador de WPS-8. Ello lo haremos ingresando los siguientes comandos de organización:

cd ~/.simh/panelsim/pdp8i/ ;
nano wps.simh_pdp8

...esto nos creará un archivo en blanco llamado wps.simh_pdp8. Al final del mismo le agrego:

echo on

set cpu 32K
set cpu  noidle
set throttle 1m
set tto 7b
set console telnet=23
attach rx0 wps78v3.4.rx01
attach rx1 wps-doc.rx01
boot rx0
exit

set realcons host=localhost panel=PDP8I
; Para operar la PiDP8 de Oscar Vermeulen en una RPi con el hostname "raspberrypi":
; set realcons host=raspberrypi panel=PiDP8

; Como usamos una PC de escritorio con conexión al localhost: velocidad maxima!
set realcons interval=1 connect

; mostrar realcons

; Esperar 2M ciclos luego de iniciar, 100k entre caracteres.
send after=2000000,delay=100000,"VERSION\rDIR ADVENT.*\rR FRTS\rADVENT.LD\r\e"

boot rk0


...Guardo los cambios con con Ctrl+o y cierro el editor GNU Nano con Ctrl+x. Finalmente le daremos permisos de ejecución con:

chmod +x wps.simh_pdp8

Ejecutar el emulador


Una vez que he realizado los procedimientos anteriores, ya habremos configurado todo lo necesario para poder iniciar la máquina virtual de emulación.

Para ejecutarla, en nuestra terminal ingresamos:

cd ~/.simh/panelsim/ ;
sudo ./wps.sh


El GNU con Linux nos solicitará nuestra contraseña de Conductor, y al ingresarla "a ciegas" ejecutará la máquina virtual, y el panel de la PDP-8i, quedando "a la escucha" de una llamada Telnet al puerto 23 de nuestro sistema.

Para arrancar el WPS-8 emulado abrimos una nueva terminal con Ctrl+Alt+T y ejecutaremos el emulador de terminal xterm con la vieja opción de compatibilidad retrógrada para terminal DEC VT52. Esto se logra con el siguiente Comando de Organización:

xterm -tn vt52 -ti vt52 -fa 'DEC Modern' -fs 22

...esto lanzará una nueva terminal de viejo aspecto (pues emula la antigua DEC VT52. En ella ingresamos simplemente:

telnet localhost

...y nos conectaremos a la máquina virtual, finalmente ejecutando el viejo y peludo WPS-8.


Lo primero que veremos será la pantalla inicial del WPS-8, en la cual habremos de configurar la fecha y la hora en formato mm/dd/aa hh/mm, pues la VT78 carecía de RTC (reloj de tiempo real).
Una vez que lo ingresemos, se nos presentará el menú principal del WPS-8. Sin embargo, antes de utilizar el procesador de texto, debemos dar formato al diskette virtual de documentos, instalado ya en la unidad de diskette número 2 de nuestro WPS-8.

Para ello presionamos m seguido de enter (RETURN en la VT78 original) para ver mas opciones de menú.
Una vez llegados a este menú, debemos ingresar al menú de Comandos de Mantenimiento para diskettes ("Maintenance commands for diskettes"). Para ello presionamos mc y Enter.
Una vez dentro del menú de mantenimiento de diskettes, debemos Inicializar un documento de diskettes (lo que formateará el diskette virtual en nuestro emulador de WPS-8). Para ello presionamos d y Enter.

El proceso de formateado virtual inicializará los bloques (cada diskette de datos cuenta con 615 bloques de datos). Luego debemos presionar Enter nuevamente para revisar la estructura del documento. El sistema debería indicar que todo está OK, y luego nos propondrá volver al menú presionando la "tecla DORADA" (GOLD) y Menú.

Esto es importante pues para ir al menú debíamos presionar la "tecla Dorada" del teclado de la terminal VT78, y luego la tecla M:

Naturalmente los teclados actuales carecen de esta "tecla Dorada". Para reemplazarla debemos presionar F1 dos veces. En consecuencia, para volver al menú principal, debemos presionar F1+F1+m.

 Esto nos permite volver al menú principal. Una vez que estemos en este y veamos estas opciones, indicaremos que queremos crear una nueva carta o documento ("create a new letter or document") por medio de la tecla c seguida de enter.

El WPS-8 nos solicitará a continuación que ingresemos el nombre que queremos darle al documento. Puede tener unas 8 letras como máximo. Lo ingresamos y presionamos Enter.
WPS-8 nos permitirá entonces empezar a escribir en el documento. El caracter L y R nos indican los márgenes izquierdo y derecho, y la línea TOP nos indica la parte inicial o superior del documento.

Al comenzar a escribir, el texto se desplazará de manera clásica como lo hacen los procesadores de texto actuales. Naturalmente, no necesitamos presionar Enter al finalizar cada línea, el WPS-8 las reorganizará automáticamente. Es importante saber que la terminal original no tenía las flechas del cursor, pero el sistema emulado permite simularlas para desplazarnos en el texto. Para borrar el texto debemos usar Esc+Backspace en el teclado actual, para simular la tecla rub chr out ("borrar caracter hacia afuera") de la videoterminal VT78. Para guardar un archivo, debíamos usar la "tecla Dorada"+f. Actualmente debemos usar F1+F1+f.

El sistema WPS-8 fue entonces una de las primeras opciones que llevaron al público comercial la opción de la edición computada de textos, antes de que aparecieran las microcomputadoras con paquetes para el sistema operativo CP/M como el clásico WordStar, que replicaron esta experiencia para los usuarios comunes.
Para salir del sistema emulado WPS-8 debemos utilizar el comando específico. Volvemos al menú principal con F1+F1+m, y buscamos la opción Finalizar el uso del sistema / "Finished using the System". La accedemos ingresando f y Enter. El WPS-8 nos mostrará el siguiente mensaje:
Tras esto podremos cerrar la ventana el WPS-8 y las distintas ventanas de las máquinas virtuales del emulador.

El manual oficial del sistema de procesamiento de texto DEC WPS-8 se encuentra aquí.

jueves, 14 de septiembre de 2017

¿Cómo puedo correr una máquina virtual Ubuntu en Window$ 10 y Windows Server?

El 12 de junio de 1974, Juan Perón pronuncia un histórico discurso, donde expone cómo convertirse en un agente de vigilancia y control para neutralizar lo negativo que tienen los sectores, y cómo apostolar a través de máquinas virtuales Hyper-V de Ubuntu bajo Window$ 10 y Window$ 10 Server.

¡Compañeros!

Retempla mi espíritu volver a presencia de este pueblo que toma en sus manos la responsabilidad de defender a la Patria. Creo, también, que ha llegado la hora de que pongamos las cosas en claro.
Estamos luchando por superar lo que nos han dejado en la República y, en esta lucha, no debe faltar un solo argentino que tenga el corazón bien templado.


Sabemos que tenemos enemigos que han comenzado a mostrar sus uñas. Pero, también sabemos que tenemos a nuestro lado al Pueblo, y cuando éste se decide a la lucha, suele ser invencible.

Hoy es visible, en esta circunstancia de lucha, que tenemos a nuestro lado al pueblo, y nosotros no defendemos ni defenderemos jamás otra causa que no sea la causa del Pueblo.

Yo sé que hay muchos que quieren desviarnos en una o en otra dirección. Nosotros conocemos perfectamente bien nuestros objetivos y marcharemos directamente a ellos, sin influenciarnos ni por los que tiran desde la derecha ni por los que tiran desde la izquierda.

El Gobierno del Pueblo es manso y es tolerante, ¡pero nuestros enemigos deben saber que tampoco somos tontos!

Nadie duda ya que hace años es posible correr en Ubuntu máquinas virtuales como Wine, que nos permiten emular Window$, aquél limitado sistema operativo privativo de antaño. A tal fin he dado cátedra en la Escuela de Guerra sobre cómo instalar y correr emuladores de equipamiento antiguo tanto de la misma arquitectura como de otras, tales como DosBOX con Windows, aislado para juegos o DosEmu, o SIMH. Esto es así pues - en el ámbito del software libre - son enormes las ventajas comparativas y las facilidades para hacer nuestro hardware actual y del ayer bajo la flama del Justicialismo.

Ahora bien, también hemos de notar que es posible también correr contenedores Docker sobre Window$ 10 y Window$ $erver, dejando a Ubuntu como base de ejecución y contenedor.

Naturalmente que lo primero es plantearnos el serio dilema moral que ello plantea y requiere, pues es sabido que los sistemas operativos Window$ no son libres, sino engendros privativos destinados a espiar al usuario a través de software en el mejor de los casos será malicioso.

Poco sentido real tiene, más que el de infiltrar las filas de las oligarquías con herramientas superiores, a fin de convencer a todo el que se pueda. ¡Imaginemos correr nuestras propias aplicaciones Linux en Window$, empleando una distribución como Ubuntu Peronista! Tal ha de ser el objetivo, pues cada individuo que use software libre se multiplicará apostolándolo, y afianzando así no una comunidad de individuos, sino una Comunidad Organizada.

Dicho esto, os explicaré cómo es posible engendrar un sistema huésped basándonos en la tecnología libre Docker, y la virtualización Hyper-V bajo Window$.
1. Requerimientos
Para lograr el éxito anhelado debemos disponer de un sistema tipo x86 (una PC común) con procesador de 64 bitios y compatible con la tecnología Hyper-V (también llamada Intel VTx), dotado idealmente con 8 GB de memoria RAM o más, y corriendo Window$ 10 o Window$ $erver.

A diferencia de GNU, Window$ es un sistema operativo de tipo excluyente, por lo cual sólo podremos correr contenedores GNU/Linux con Hyper-V en la medida en que tengamos una membresía en el programa que Micro$oft ha dado en llamar Window$ In$ider. Este esquema nos deja evaluar software prelanzamiento (betas), y versiones futuras de Window$, pretendiéndonos desarrolladores y usuarios de tal plataforma nociva.

Si la estabilidad y la privacidad son esenciales fundamentalmente en nuestra instalación - Window$ Insider oficializa la acción de Micro$oft de recoger información del equipo del usuario - no quedará otro remedio que considerar aguardar a la actualización de Window$ 10 Fall Creator, disponible a partir de octubre de 2017. Con este lanzamiento, se podrá emplear Docker munido de Hyper-V sin necesidad de la membresía Window$ Insider. Pero si queremos combatir al capital asegurándonos la privacía por medio de otros esquemas, podremos darnos de alta en Window$ In$ider.

Asimismo, necesitaremos contar con una instalación reciente de Docker, que podremos descargar libremente desde http://dockerproject.org. Como ingrediente final habremos de tener instalado XZ Utils, la versión Window$ de las aplicaciones de descompresión libres, necesarias para descomprimir correctamente la imagen contenedora de Ubuntu.

2. Unirse al programa Window$ In$ider

Si ya somos miembros del programa Window$ Insider Program, podremos evitar el siguiente paso. Si no, debemos abrir el este enlace en nuestro navegador:

Para enrolarnos, nos damos de alta usando la misma cuenta personal que empleamos para usar con Window$ 10, y seguimos nuestro propio enlace personal para la página de Introducción del programa In$ider. Aceptamos los draconianos términos y condiciones y completamos el registro.

Ahora necesitamos abrir la Configuración de Window$ 10 desde el menú Inicio, seleccionamos "Actualizaciones y Seguridad" seguido por "Programa Window$ In$ider" desde el menú de la izquierda.
En caso de hacerse necesario, hacemos clic sobre el botón "Arréglame" si Window$ se quejase con el cartel "Su cuenta del programa Window$ In$ider necesita atención".

3. Contenido Window$ In$ider
Desde el panel Programa Window$ In$ider, seleccionamos "Comenzar". Si nuestra cuenta Window$ no está asociada a nuestra instalación de Window$ 10, nos daremos de alta en el momento en que se nos solicite hacerlo, y seleccionaremos la cuenta con la cual deseamos enlazar nuestra instalación.

Conforme hayamos realizado este paso, deberíamos poder ser capaces de elegir qué tipo de contenido deseamos recibir de parte del programa Window$ In$ider. Para asegurarnos la disponibilidad de las características de aislamiento Hyper-V que necesita Docker, seleccionamos Rápido. Luego seleccionamos Confirmar (dos veces) y luego permitimos a Window$ que reinicie nuestro equipo.

Luego de reiniciar, es probable que necesitemos esperar que nuestro sistema termine de instalar toda una variedad de actualizaciones necesarias antes de poder seguir con el paso siguiente.

4. Instalar Docker para Window$
Descargamos Docker para Window$ desde la Docker Store.
Una vez descargado el programa, procedemos con su instalación, y reiniciamos el sistema una vez no bien se nos indique hacerlo.
Luego de reiniciar, se habrá activado el Docker. Docker requiere que la característica Hyper-V esté activada, de modo que se es necesario nos pedirá activarla y reiniciar. Hacemos clic en OK para que Docker active Hyper-V y reiniciamos nuestro sistema.

En muchas placas madre con BIOS legada (no UEFI), debemos asegurarnos de tener activada la funcionalidad Hyper-V (conocida también como Intel Virtualization Technology VTx) también a nivel BIOS. Ello podremos hacerlo ingresando en la BIOS del sistema durante el inicio (normalmente presionando la tecla Supr, F2 o F12) y activándola desde el menú Advanced Settings o el menú Security.


5. Descargar la imagen contenedora de Ubuntu
Ahora descargamos la última imagen contenedora de Ubuntu para Window$ desde el sitio web de Canonical Partner Images.
Una vez finalizada la descarga (por ejemplo, si descargamos xenial-container-hyperv.vhdx.xz), extraemos la imagen usando XZ Utils con los comandos:

C:\Users\peron\> .\xz.exe -d xenial-container-hyper-v.vhdx.xz
C:\Users\peron\>

6. Preparar el ambiente virtualizado del contenedor
Primero, creamos dos carpetas:
Creamos C:\lcow, la cual usaremos como espacio para el Docker, mientras que preparamos los contenedores.
También creamos C:\Program Files\Linux Containers. Aquí será donde residirá la imágen del contenedor ubuntu.
Acto seguido, necesitamos otorgarle permisos extra a esta carpeta a fin de que Docker pueda usar las imágenes contenidas allí. Para ello ejecutamos el siguiente guión Powershell en una ventana Powershell como Administrador:

param(
[string] $Root
)
# Da control total al grupo de máquinas virtuales

$acl = Get-Acl -Path $Root
$vmGroupRule = new-object System.Security.AccessControl.FileSystemAccessRule("NT VIRTUAL MACHINE\Virtual Machines", "FullControl","ContainerInherit,ObjectInherit", "None", "Allow")
$acl.SetAccessRule($vmGroupRule)
Set-Acl -AclObject $acl -Path $Root


Guardamos este guión asignándole el nombre de archivo set_perms.ps1, y lo ejecutamos:

ATENCIÓN: Puede ser necesario ejecutar el comando ‘Set-ExecutionPolicy unrestricted' a fin de que se nos permita ejecutar guiones Powershell no firmados digitalmente.

C:\Users\peron\> .\set_perms.ps1 "C:\Program Files\Linux Containers"C:\Users\peron\>

Ahora, copiamos el archivo .vhdx de la imagen contenedora Ubuntu que descomprimimos en el paso anterior, cambiándole el nombre a uvm.vhdx, y lo colocamos en la carpeta C:\Program Files\Linux Containers.

7. Más preparativos para Docker
Docker para Windows requiere algunas características pre-lanzamiento a fin de poder operar con la característica de aislamiento que figura en la tecnología de virtualización Hyper-V. Si bien estas características no están disponibles en la instalación básica de Docker CE que hemos realizado, los archivos avanzados necesarios para ella puede descargarse libremente desde la web master-docker.
En dicha web Master-docker obtenemos los archivos dockerd.exe y docker.exe, y colocamos ambos programas en algún lugar seguro, por ejemplo en nuestra propia carpeta personal. Los utilizaremos para dar inicio al contenedor Ubuntu en el paso siguiente.

8. Ejecutamos el contenedor Ubuntu en Hyper-V

 



C:\Users\peron\> .\docker.exe pull ubuntuC:\Users\peron\> .\docker.exe run -it ubuntu

Hemos logrado el objetivo y responsabilidad de configurar exitosamente nuestro sistema para emplear contenedores justicialistas Ubuntu con aislamiento Hyper-V bajo Window$, y podremos correr allí nuestras propias aplicaciones Linux. Ante el engaño y frente a la violencia, ¡impondremos la verdad, que vale mucho mas que eso!

Cada uno de nosotros debe ser un realizador, pero ha de ser también un predicador y un agente de vigilancia y control para poder realizar la tarea y neutralizar lo negativo que tienen los sectores que todavía no han comprendido y que tendrán que comprender.

Compañeros, con este agradecimiento quiero hacer llegar a todo el pueblo de la República nuestro deseo de seguir trabajando para construir nuestro país y para liberarlo. Esas consignas, que más que mías son del pueblo argentino, las defenderemos hasta el último aliento.

Para finalizar, deseo que Dios derrame sobre ustedes todas las venturas y la felicidad que merecen. Les agradezco profundamente hayan que llegado hasta esta histórica Plaza de Mayo. Yo llevo en mis oídos la más maravillosa música que, para mí, es la palabra del pueblo argentino.