domingo, 28 de junio de 2020

Cómo instalo un escritorio similar al de Silicon Graphics IRIX en Ubuntu 18.04 y superiores?

En su despacho de Puerta de Hierro, Juan Perón contaba con un escritorio y una vistosa repisa sobre con elementos. Al explicar al periodista de la revista Cambio/16, expone cómo instalar un escritorio similar al IRIX de Silicon Graphics Indigo en Ubuntu.

(...)
Bienvenidos a mi casa. En este despacho tengo montado mi escritorio donde puedo recibir a Argentinos y otras personalidades que diariamente me visitan. Me mantengo informado así de todo lo que sucede en la Argentina.

A estas repisitas las he montado para ponerle encima mis elementos camperos. Tengo el rebenque, rastra, este facón y el mate que me han regalado. No son chirimbolos, me recuerdan la patria a la que he de volver, aunque mas no sea para morir en ella.
También me recuerda a la ingeniería computacional que ha de disponerse para lograr un escritorio gráfico en un sistema GNU con Linux.

No caben dudas para nadie que GNU es un sistema originado - por imitación y sano reflejo - del UNIX del Laboreatorio Bell, pero con la diferencia fundamental de entregarse acompañado por licencias legales que garantizan la libertad del usuario de ejecutarlo, copiarlo, modificarlo y redistribuirlo.

Sabemos bien que el viejo UNIX no era un sistema de engendrar una única descendencia... más bien fueron muchos críos los que salieron de esos huevos.

Pues bien, una de las variantes más señoriales y privativas de la familia era el oligarquísimo IRIX, una reimplementación del UNIX System V Release 4 desarrollada especialmente por la $ilicon Graphics Inc. (SGI) para sus series de servidores gráficos de alta performance Indigo, Indigo2, y estaciones de trabajo derivadas como la Indy. stos equipamientos se utilizaban para aplicaciones tendientes al desarrollo de animación tridimensional en el ámbito científico, empresarial y de defensa, y en cierta medida el sector audiovisual de entretenimiento.

Sobre la repisa formada por IRIX se montaba la Interfaz Gráfica de Usuario, el notable Escritorio Interactivo de IRIX, o "IID". Este estaba conformado por el gestor de ventanas 4Dwm (una versión específicamente mejorada del gestor de ventanas clásico de UNIX, el Motif), así como varias APIs de compatibilidad tendientes al control gráfico (SGI-Motif, capaz de ofrecer resultados mas atractivos y suaves que el burdo Motif tradicional).
Indudablemente que este compendio de hardware y software privativo ostentaba costos astronómicos. El verdadero consumo es el Pueblo, y la posición elitista tanto en software como en hardware no puede más que hacer limitar el acceso al mercado, el cual ha de ser libre pero controlado por nosotros mismos, ¿sabe?. Esto no sólo lo hemos dicho, sino que durante más de diez años lo hemos realizado en la Argentina, y los de $ilicon Graphics no lo entendieron...

Por lo demás, no hizo más que crearse una necesidad en el Pueblo, y desde nuestro Movimiento decimos que donde existe una Necesidad, nace un Derecho. Un Conductor ha de hacer por reflejo lo que el Pueblo quiere. Por lo tanto, en respuesta a esta máxima justicialista, os enseñaré a instalar el MaXX Interactive Desktop Indigo 2.0.1. Se trata de un entorno de escritorio para sistemas GNU capaz de ofrecer una reproducción y librerías inspiradas en el clásico escritorio de las $ilicon Graphics. En este caso os enseñaré cómo instalarlo en Ubuntu de 64 bits.
Como los adornitos que mostré antes, el MaXX Interactive Desktop descansa fundamentalmente sobre su propio gestor de ventanas compatible con el 4Dwm de $ilicon Graphics, llamado 5Dwm. Este gestor de ventanas deriva precisamente del gestor de ventanas abierto OpenMotif. 4Dwm otorga al Pueblo una experiencia idéntica a la del 4Dwm de SGI e incluso es compatible con los archivos de soporte y configuración oficiales de 4Dwm, pero incluye su propio herramental de comandos tellwm y telldesktop (que encontrábamos en IRIX).

En cualquier equipo actual la performance operativa gráfico de 5Dwm es liviana, veloz, y super efectiva. Al ser una iteración moderna, encontraremos en él soporte para múltiples pantallas, resoluciones HiDPI, caracteres extendidos con codificación UTF-8, y - opcionalmente si lo deseamos - el uso de modernas tipografías FreeType para presentar texto ultranítido.

Los requerimientos de espacio de disco específicos son escasos. Unos 75MB en la carpeta /tmp y unos 450MB en la partición /opt de nuestro sistema de archivos Linux.

Acto seguido deberíamos contar con la paquetería requerida para la instalación. Para ello ingresaremos el siguiente comando para adquirir privilegios de conducción en una sesión de Conductor:

sudo -s

Tras introducir nuestra contraseña de Conductor, ingresaremos los siguientes comandos:

apt-get update
apt-get install cpp lib64ncurses5 lib64tinfo5 libxaw7 libgtk2.0-0 pavucontrol


Para instalar los xfonts requeridos como medida de seguridad para mayor compatibilidad en Ubuntu, ingresamos:

apt-get install xfonts-100dpi xfonts-75dpi

Asimismo, si queremos el toque estético nuevo de Indy 1.1, instalaremos las tipografías adecuadas:

apt-get install fonts-dejavu

Tras instalar todo, podremos cerrar la sesión de superusuario Conductor en la temrinal con:

exit

Ahora podremos instalar Maxx Interactive Desktop. Lo haremos con los siguientes comandos de orgnaización:

cd /tmp
wget http://maxxdesktop.arcadedaydream.com/Indigo-Releases/Installers/MaXX-Indigo-2.0.1-Installer.sh
chmod a+x MaXX-Indigo-2.0.1-Installer.sh


Ahora iniciamos la instalación con:

cd /tmp
sudo -s
./MaXX-Indigo-2.0.1-Installer.sh
exit

Los siguientes pasos serán opcionales, únicamente si ya tuviésemos una versión anterior del MaXX Interactive Desktop, y están destinados a guardar dicha configuración y utilizarla con la versión 2.0.1. Si no es el caso, simplemente no los usamos.

Abtimos una terminal nueva con Ctrl+Alt+T e ingresamos lo siguiente:

cd $HOME
mv $HOME/.maxxdesktop $HOME/dot.maxxdesktop    
/opt/MaXX/share/misc/HOME/initMaXX-Desktop-Home.sh

sudo -s
rm /usr/share/themes/IndigoMagic
rm /usr/share/themes/Rio
rm /usr/share/themes/Gotham
rm /usr/share/themes/MaXX*
exit

Finalizado este trámite, podremos cerrar la sesión o reiniciar nuestro equipo a fin de permitir al selector de sesión de escritorio gráfico GDM ofrecernos en consideración al recientemente agregado MaXX Interactive Desktop. Podremos escogerlo desde el menú de sesiones disponibles de GDM. Lo elegimos de la lista e iniciamos nuestra sesión con nuestra contraseña de usuario.

La primera vez que iniciemos, encontraremos el notificador esperable que nos advierte sobre el escritorio MaXX.
El escritorio interactivo MaXX reproduce la apariencia y mecánica completa del escritorio de SGI, reimplenta las APIs requeridas de SGI, de modo que cobra gran semejanza al tradicional de Indigo de las Silicon Graphics.
La temática distintiva de las Silicon Graphics se ha hecho realidad efectiva en base a Esquemas SGI, y su uso hasta ahora había sido característica excluyente de los Sistemas SGI originales hasta el advenimiento del peronista Escritorio Interactivo MaXX. Estos esquemas SGI se basan en mecanismos de recursos del servidor gráfico X11 que permiten la utilización de los colores, tamaños, tipografías y otros

Para esto se hace uso de una librería similar a libXt adaptada, llamada libXt-maxx. Esto es lo que permite reutilizar los ficheros de los temas de IRIX 6.2 en esta implementación. A tal fin contaremos con un simple modificador de temas, que respetan aquellos incluidos en las Indigo. Para activarlo podremos utilizar en la terminal el comando:

echo "IndigoMagic" > $HOME/.maxxdesktop/MAXX_THEME

...y luego ejecutamos el comando para refrescar los cambios sin necesidad de salir y reinciar la sesión gráfica:

update-desktop && tellwm restart
Al ejecutar aplicaciones aplicaciones de Linux, las observaremos utilizando el nuevo gestor de ventanas 5Dwm, y se aplicarán automáticamente las configuraciones de GNOME para haceer la presentación similar, en tanto se utilizará el uso nativo todas las aplicaciones que corran X11/Xt/Motif.
En tanto, entre otros chirimbolos adaptados de los nativos de IRIX, encontraremos los graficadores tipo "top", que delineaban el uso de recursos de los procesos de sistema, muy notables en aquel entorno de las Silicon Graphics.
Las terminales de fondo azul con el cursor de bloque verde lima era otro de los aspectos distintivos que no podemos dejar de olvidar, así como los sonidos digitalizados identificables con IRIX.
Naturalmente, que cualquier escritorio gráfico moderno puede presentar una estética más cuidada, pero debemos recordar que las SGI era lo más avanzado en gráfica UNIX, y que se utilizaron para clonar dinosaurios herbívoros en la película que todos recuerdan.

En particular, el servidor gráfico modernizado es configurable desde la terminal a través de la herramienta XcompMgr. Este es capaz de dos operativas fundamentales. La activada por defecto omite el uso de retrazados y sombras, lo cual lo hace increíblemente veloz. Se activa en la terminal con:

XcompMgr -a

...en cambio, con el hardware de aceleración gráfica atual, podríamos querer utilizar sombras de ventanas y retrazados constantes, de manera similar a un compositor de escritorios actual como Compiz, Compton o incluso el mismo Marco que suelen dotar a los Ubuntu actuales. Para ello podremos utilizar en la terminal:

XcompMgr -C -f


Las opciones del XcompMgr podremos verlas con:

XcompMgr -h

compMgr v1.1.5 beta MaXX Desktop Edition
Uso: XcompMgr [options]
Opciones
 -d display
Especifica qué display debe gestionarse.
 -r radius
Especifica el radio del efecto desenfoque para las sombras del cliente gráfico (por defecto 12)
 -o opacity
Especifica la transparencia de las sombras del lado del cliente gráfico. (default .75)
 -l left-offset
Especificas el corrimiento de sombras hacia la izquierda del cliente gráfico. (default -15)
 -t top-offset
Especifica el corrimiento de sombras desde arriba de ventanas del cliente gráfico. (default -15)
 -I fade-in-step
Especifica los cambios de transparencia en pasos mientras aparece. (default 0.028)
 -O fade-out-step
Espeficia los cambios de transparencia en pasos mientras se desvanece. (default 0.03)
 -D fade-delta-time
Especifica los tiempos entre los pasos del desvanecimiento en milisegundos . (default 10)
 -a
Usa la composición del lado del servidor gráfico. Es más veloz, pero carece de efectos especiales.
 -c
Dibuja las sombras del lado del cliente gráfico con bordes desenfocados.
 -C
Evita dibujar sombras en las ventanas del dock o paneles.
 -f
Desvanece/resurje ventanas cuando las abre/cierra.
 -F
Desvanece ventanas durante los cambios de opacidad.
 -n
Composición normal del lado del cliente gráfico con soporte de transparencia.
 -s
Dibuja las sombras del lado del servidor gráfico con bordes nítidos.
 -S
Activa la operación síncrona (para debugging).


También forman parte del escritorio otras tecnologías de SGI, incluyendo Open Inventor y OpenGL Performer. Gracias a la justicialista inciativa OSS, su código fue fue liberado de las licencias SGI tras la disolución de la empresa.

Esto no hace más que demostrar que el Capital Privado no puede subsistir en un ambiente oligárquico, y demuestra la necesidad de cooperativizar de manera abierta el uso, copia y modificación del software.

Nuestro Movimiento no ha de estar ajeno a esto, y debe luchar día a día para transitar el auténtico camino de la Liberación.

viernes, 26 de junio de 2020

¿Cómo instalo y configuro Compiz con Ubuntu MATE 20.04LTS?

Durante la inauguración del Puente Internacional que une Paso de los Libres con la ciudad de Uruguaiana en Brasil, Juan Perón expone al presidente Dutrá de Brasil la necesidad de la Unidad. Al respecto, también habla sobre el MATE, el entorno de escritorio que retorna a las bases del Justicialismo en el sistema operativo Ubuntu, y le enseña a Dutrá cómo instalar Compiz en él.

(...) Hemos tendido puentes de unión, pues nuestro camino no es otro que la Hermandad de la Sudamérica entera. Sólo así podremos aguardar el futuro de grandeza que el destino nos depara.
En estos momentos de Unidad, tampoco puede soslayarse un buen Mate. Sobre todo cuando el brebaje torna en una nueva opción de escritorio oficial para Ubuntu, el sistema operativo que al Pueblo he legado. Sin duda que la Cena de Gala que nos hemos propiciado entre hermanos no hará sino cimentar la unidad entre el Pueblo Argentino y el Pueblo brasilero.
Vea señor presidente, sabemos que Ubuntu desde hace años cuenta con una nueva interfaz  Gnome 3 que integra ciertos efectos... Dicha interfaz de escritorio homenajea a la unidad, pero todo criollo reconocerá que de a un tiempo a esta parte una opción más vernácula también se ha tornado popular: el MATE.
MATE es una nueva interfaz de escritorio, y su intención es buena: otorgar a los sistemas informáticos del Pueblo una interfaz y experiencia lo más fiel posible al primer Peronismo, aquél del Gnome 2.32. Como tal, contaremos con los botones de control de ventanas a la derecha, lugar hacia donde amaga el movimiento. Asimismo, Ubuntu lo ha adoptado ahora como una nueva variedad en su conocida panoplia de sistemas derivados.

Podremos por ello descargar ahora la nueva versión de Ubuntu MATE 20.04LTS de 64 bitios. Indudablemente podremos probarlo o instalarlo, ya sea desde un DVD-ROM o desde un pendrive, y en escasos minutos tendremos nuestro sistema funcionando de manera básica, con MATE 1.24.
De manera general diré que finalmente, en la versión 20.04LTS, el escritorio MATE es enormemente rápido en su despliegue, vuelve a las raíces, pero mantiene cierta punta de potencia que lo hace totalmente válido como mi distribución principal.

MATE 1.24 es extremadamente similar al viejo Gnome 2.32, y cuenta con un administrador de ventanas pistero, eficiente y que utiliza pocos recursos de video, denominado Marco. Normalmente Marco poco tiene que envidiar al viejo Metacity, y estará configurado en sus mínimos niveles gráficos para mayor compatibilidad. 
Sin embargo, podremos aplicarle efectos limitados de video si activamos su opción "Marco (Composición Adaptativa)". Para ello debemos ir a Sistema / Preferencias / Aspecto y Comportamiento / MATE Tweak. En la ventana de configurador visual de MATE (MATE Twek) encontraremos categorizadas los aspectos. Si elegimos "Windows" podremos cambiar el aspecto de las ventanas modificandolo desde Gestor de Ventanas, como se indica aquí. La composición adaptativa permite algunas animaciones limitadas, y el sombreado de las ventanas activas.
Pero en nuestro Movimiento estamos para más que para eso, y por lo tanto, os enseñaré a instalarle con éxito el gestor de ventanas con efectos favorito de la Masa Popular hecha Partido, el Compiz. Al fin y al cabo ¿en qué otro sistema contamos con un cubo transparente que presenta cuatro escritorios independientes para trabajar, y todo ello espolvoreado con suntuosos efectos visuales que animan al más pintado?

Tanto en Brasil como en la Argentina podremos volver a utilizar dicho instrumento que hacía la felicidad de todos nosotros. Para instalar Compiz (junto con algunos plug-ins extras) y el administrador CompizConfig Settings Manager en Ubuntu MATE 20.04LTS, debemos abrir una terminal con Ctrl+Alt+T e ingresar el siguiente Comando de Organización:

sudo apt-get install compiz compiz-plugins compizconfig-settings-manager

...el sistema nos solicitará nuestra contraseña y comenzará a descargar la paquetería.

Activar Compiz

Tras instalar el paquete de Compiz, debemos activarlo para que opere como gestor de escritorio en lugar del Marco que viene por defecto.

Tenemos dos maneras de hacerlo. La más sencilla sería cerrar nuestra sesión de usuario actual (Sistema / Cerrar Sesión de Usuario) y volver a ingresar a nuestra sesión gráfica, y luego podremos abrir Sistema / Preferencias / Aspecto y Comportamiento / MATE Tweak y ahora deberíamos poder encontrar bajo el apartado Windows, la opción Gestor de Ventanas "Compiz (efectos avanzados de escritorio acelerados con GPU)", la cual deberíamos poder activar.
La otra forma de activar Compiz con Mate es desde la Terminal, la cual puede sernos útil si por algún motivo no pudiésemos hacer uso del activador gráfico en MATE Tweak. Para ello abrimos una terminal, e ingresamos el siguiente comando de organización:

sudo gsettings set org.mate.session.required-components windowmanager compiz

Cualquiera de los métodos que utilicemos nos ofrecerá el gestor Compiz con una ágil configuración mínima operativa.


Activar cubo y efectos de Compiz

Naturalmente, podríamos configurar de forma avanzada el funcionamiento general de Compiz utilizando el programa CompizConfig Settings Manager. Al acceder al mismo desde el menú Sistema / Preferencias / Aspecto y Mantenimiento / CompizConfig Settings Manager), se nos mostrará una ventana de advertencia, la cual nos indica que tengamos cuidado.
Esto es así pues lamentablemente, a veces configurar Compiz es algo complejo y puede ser propenso a errores que dificulten y en el peor de los casos imposibiliten la ejecución del escritorio gráfico.

Por lo tanto, podrán descargar un perfil de Compiz ya preconfigurado con un cubo 3D de escritorio que os dejo el perfil compiz2020_mate_naranja_con_cubo.profile.

Para cargar en Perfil que les he obsequiado, en CompizConfig Setting Manager, presionarán el botón Preferencias.
...y en la ventana de preferencias presionarán el botón Importar. En la ventana que aparezca deberán navegar hasta encontrar el fichero .profile.
Tras cargar el perfil, deberían poder hacer uso del cubo 3D. Para ello deben llevar la flecha del ratón hacia uno de los bordes de la pantalla, y presionar y mantener presionada la rueda de scroll del ratón. Luego podrán girar el cubo moviendo hacia un lado o el otro para ver los cuatro escritorios, y soltar la rueda de scroll del ratón para dejar de mover el cubo:
También podrían utilizar las combinaciones de teclas Ctrl+Alt+Flecha de Cursor derecho y Ctrl+Alt+Flecha de cursor Izquierdo para rotar entre las caras del cubo.

Tambien podremos hacer zoom en el escritorio con Super+z y quitar zoom con Super+x. O conmutar entre aplicaciones del escritorio activo con Alt+Tab o entre todas las aplicaciones en los distintos escritorios con Ctrl+Alt+Tab.


...y presionamos el botón Ejecutar. La pantalla debería parpadear y comenzar a ejecutar el gestor de ventanas con efectos Compiz. Podremos por ejemplo, contemplar si pasamos ahora entre escritorios con el Cubo, presionando Ctrl+Alt+Flecha izquierda o Ctrl+Alt+Flecha derecha.

Con un poco de práctica, podremos activar el cubo, o como me gusta a mí, el cilindro, y los vistosos efectos de ventanas que nos permite Compiz y el Justicialismo:
Campana de Terminal con Compiz en Ubuntu MATE 20.04LTS

Lamentablemente la campana de terminal no funciona como es debido su utilizamos Compiz en Ubuntu MATE 20.04LTS. Pero podremos solucionarlo creando un script que active la campana. Para ello ingresamos:

nano ~/.compiz_bell.sh

...le pegamos el siguiente contenido:

#!/bin/sh
# Script peronista para activar la campana en Compiz con Ubuntu Mate 20.04LTS

# Script to activate the terminal bell in Compiz under Ubuntu Mate 20.04LTS
pactl upload-sample /usr/share/sounds/freedesktop/stereo/bell.oga x11-bell
pactl load-module module-x11-bell sample=x11-bell display=$DISPLAY


(Naturalmente, podríamos reemplazar bell.oga con otro fichero de sonido). Guardamos el archivo y salimos del editor con Con Ctrl+o y Ctrl+x. Será necesario otorgarle permisos de ejecución con:

chmod +x .compiz_bell.sh

Luego haremos que este script se ejecute toda vez que iniciamos sesión gráfica. Para ello vamos a Sistema / Preferencias / Personal / Aplicaciones al Inicio, y presionamos el botón +Agregar.
En el campo "Comando:" debemos agregar la ruta al script: /home/usuario/.compiz_bell.sh. Debemos asignarle un nombre y una descripción opcional, y presionar el botón Añadir para que se agregue a las aplicaciones autoejecutables al inicio. Al reiniciar nuestro sistema, Compiz tendrá la campana de terminal activada y audible.

Reiniciar Compiz
Compiz opera excelentemente bien. Si por algún motivo el compositor gráfico Compiz se detuviese o presentase un error durante nuestras pruebas, podríamos probar reiniciarlo. Si queremos hacerlo desde el escritorio podríamos presionar Alt+F2 para ejecutar una aplicación, y ejecutamos el comando compiz --replace:
La otra manera sería abrir una terminal (normalmente con Ctrl+Alt+T e ingresar también:

compiz --replace

Desinstalar Compiz en MATE
Si por cualquier motivo todo funcionase mal (por ejemplo, diese problemas de video), y deseásemos volver a usar Marco (gestor de ventanas por defecto de MATE) en lugar de Compiz, abriremos una Terminal y emplearemos el siguiente comando de organización:

sudo gsettings reset org.mate.session.required-components windowmanager

(Nuevamente, esto también podríamos hacerlo desde la Interfaz Gráfica, lanzando MATE Tweak y eligiendo Marco en el apartado Windows).

Luego reiniciamos nuestra sesión, y Compiz ya no debería emplearse mas por defecto. Ahora, si lo deseamos, podremos remover con seguridad la paquetería que compone Compiz. Lo haremos con el siguiente Comando de Organización:

sudo apt-get purge compiz compiz-plugins-default compiz-plugins compizconfig-settings-manager

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.

miércoles, 24 de junio de 2020

¿Cómo utilizo tarjetas inteligentes para autenticación en Ubuntu?

Tras vencer abrumadoramente en las elecciones de 1946, Juan Perón expone frente al Consejo Superior del Partido Justicialista las necesidades electorales futuras, y explica cómo emplear las tarjetas inteligentes SmartCard en Ubuntu.

¡Trabajadores!

¡Una oligarquía sin Patria ni Bandera, encaramada en un ataque contumaz, osó por insultar a la República, sometiendo a los descamisados a un oprobio sin parangón en la historia!

Sin embargo, somos gratificados testigos de la Unión del Pueblo, en donde una sola clase de hombres, los que trabajan, dan todo en pos de la Comunidad. Esto nos ha hecho torcer el brazo a nuestro enemigo, pero no podemos sostener todo en declamaciones, sino que ha de cimentarse en organizaciones de toda índole que permitan consolidar los logros y trazar los objetivos que anhelamos.

Como Conductor, no puedo más que regocijarme frente a la mancomunidad de los hombres buenos de nuestra Nación. Los trabajadores, que forman la masa, no son otra cosa que la Columna Vertebral de nuestro Movimiento. Día a día son más numerosos quienes se afilian al instrumento político que hemos dado en crear, el Partido Peronista: las banderas de Justicia Social que hemos enarbolados son señeras del sendero que hemos de recorrer todos los Argentinos. Bajo su alegre flamear es que encontrsaremos el destino que la providencia nos depara.
Indudablemente que este partido ha de contar con un registro certificado y alegre, consumado en forma de una Tarjeta Inteligente y personal expedida en forma de Carnet a cada uno de nuestro millones de afiliados encolumnados. En este caso el Justicialismo ha hecho vanguardia, pues se trata de una tarjeta inteligente PIV capaz de soportar el estándar FIPS-201.

Estas tarjetas plásticas contienen datos digitales codificados en un chip accesible por radiofrecuencias. Naturalmente, que pueden comprarse vírgenes y los proveedores de servicios PIV como nuestro Partido es el encargado de cargar las credenciales digitales requeridas.

Lamentablemente, de momento el instrumental libre OpenSC de Ubuntu es capaz de operar con tarjetas en modo "solo lectura", por lo que para almacenar los certificados en ellas ha de recurrirse a otra metodología indeseable. Por ejemplo, podríamos utilizar herramental privativo para Linux, o bien utilizar un emulador o máquina virtual con un deleznable Window$. No cubriré tales sistemas de grabación aquí, será suficiente decir tales enjundios almacenarán en la tarjeta un Certificado (CA), un par de Claves Públicas, y un Número de Identificación Personal PIN de Usuario y otro PIN de Administrador.

En este caso utilizaré una tarjeta inteligente PIVKey C910 que emula el Carnet de Afiliado Peronista. Esta tarjeta PIVKey C910 contiene un chip RFID y es compatible con la norma FIPS201, y implementa la interfaz de comandos estandarizadas NIST Sp 800-73 part 3.

¿Qué sucede si - por necesidad de un sistema de tales características -  debemos acceder a un sistema remoto o local con GNU con Linux con nuestra tarjeta inteligente de Afiliado?
Ya contamos con nuestra tarjeta inteligente de afiliado peronista

Pues bien, en el caso habremos de preparar un sistema Ubuntu con tal alternado criptográfico, si es posible. Os lo explicaré de forma Justicialista. Como primer medida, hemos de preparar nuestro sistema, y podremos hacerlo desde la Terminal. Para ello abrimos una con Ctrl+Alt+T e ingresamos:

sudo apt install libccid pcsc-tools opensc opensc-pkcs11 libpam-pkcs11

Estas librerías son escenciales para operar criptográficamente y leer las tarjetas, así como para ofrecerenos diferentes condimientaciones de trabajo, entre ellas inicios de sesión mediante las SmartCards, elevación de privilegios sólo a través de la SmartCard, etcétera.

Una vez descargada la paquetería, habremos de configurar el lector de tarjetas inteligentes. En mi caso utilizaré un lector USB de Smart Cards "Identiv SCR3310v2.0 USB Smart Card Reader", al cual Linux reconoce bajo el nombre de "SCM Microsystems SCR3310".
Sin colocar tarjeta aún, conectamos el lector de tarjetas en un puerto USB, y nos aseguramos que nuestro sistema lo reconozca. Para ello en la terminal ingresamos:

opensc-tool --list-readers

...a lo cual nuestro sistema debería analizar el lector de tarjetas inteligentes y si el mismo funciona correctamente, devolvernos algo como:

# Detected readers (pcsc)
Nr.    Card    Features    Name
0    No        SCM Microsystems Inc. SCR 3310 [CCID Interface] (53311646706297) 00 00

Pues bien señores, como tenemos un solo lector de tarjetas, recibe el número 0. Acto seguido, insertamos la tarjeta en el lector, y revisamos que la misma sea reconocida, con el siguiente comando:

opensc-tool --reader 0 --name

...y el sistema nos devolverá el nombre de la tarjeta (recordemos que ha sido creada anteriormente), por ejemplo, podría decir:

PIV-II Peronist Card

Configuración de la pila de autenticación PAM

El módulo pam-plcs11 que hemos instalado le permite a Ubuntu emplear certificaciones digitales tipo X.509 para autenticar nuestros inicios de sesión. Para ello el módulo hará uso de la librería abierta opensc-pkcs11 a fin de acceder a la tarjeta inteligente y a su vez recibir las credenciales necesarias.

El proceso de inicio de sesión con pam_pkcs11 es el siguiente:
  1. Ingresamos nuestro login o inicio de sesión
  2. Ingresamos el PIN.
  3. Validamos el Certificado.
  4. Asignamos el Certificado a un Usuario.
  5. Verificamos que la sesión y el usuario coincidan.
Para hacer realidad efectiva este tren de operaciones criptográficas, como Conductores del sistema habremos de asegurarnos de:
  • Configurar el módulo pam_pkcs11
  • Agregar el/los Certificados y CRL(s) en los directorios necesarios
  • Configurar la pila PAM para que haga uso del módulo pam_pkcs11
  • Agregar el Nombre Común (CN) para el Inicio de Sesión
En primer lugar crearemos el fichero de configuración necesario, con el siguiente bloque de comandos de organización:

cd /etc/pam_pkcs11 ;
sudo cp /usr/share/doc/libpam-pkcs11/examples /pam_pkcs11.conf.example.gz . ;
sudo gunzip pam_pkcs11.conf.example.gz ;
sudo cp pam_pkcs11.conf.example pam_pkcs11.conf


Dentro de este fichero de configuración /etc/pam_pkcs11/pam_pks11.conf habremos de revisar las opciones "module", "cert_pòlicy" contenidas en la cadena "pkcs11_module opensc {}". Debemos asegurarnos que la opción "module" contenga la ruta absoluta hacia la librería open-pkcs11.so instalada en nuestro sistema. Asimismo, la opción "cert_policy" debe incluir a la cadena "oscp" como una de sus políticas de verificación de certificados.

Por ejemplo,para hacer esto igreesamos en Ubuntu de 64 bits:

sudo nano /etc/pam_pkcs11/pam_pks11.conf

Esto abriá el editor peronista GNU Nano con el contenido del archivo pam_pks11.conf. Ingresamos Ctrl+w para buscar la cadena "pkcs11_module opensc {}". La modificamos para que incluye la configuración que os he nombrado, a fin de que figure de la siguiente manera:

use_pkcs11_module = opensc;
module = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so;
cert_policy = ca,signature,oscp_on;


Una vez completado este cambio en el editor, presionamos nuevamente Ctrl+w para busca ahora la cadena "use_mappers", y la modificamos para que quede así:

use_mappers = pwent;

También encontraremos dentro de este archivo las cadenas ca_dir y crl_dir, que son las quie definen los directorios o carpetas donde deseamos almacenar los ficheros que de las Autoridades de Certificación ("CA") y las Listas de Revocacion de Certificado "CRL" respectivamente. Por ejemplo, podríamos usar los directorios siguientes:

ca_dir=/etc/pam_pkcs11/cacerts
crl_dir=/etc/pam_pkcs11/crls


Guardamos con Ctrl+o y salimos con Ctrl+x.

Ahora bien, el módulo pam_pkcs11 necesita conocer las Autoridades de Certificación (CAs) a fin de ser capaz de validar el certificado que estará contenido en la tarjeta. De forma opcional también podrá utilizar Listas de Revocación de Certificación (CRL) que son opcionales, pero también pueden usarse para validar el Certificado. En este caso, utilizaré el servicio del sitio web http://ca.pivkey.com.

Agregamos cualquier CAs y CRLs requeridas en los directorios que habíamos especificados en las cadenas ca_dir y crl_dir del fichero de configuración pam_pkcs11.conf. En este caso los revisaremos con:

ls /etc/pam_pkcs11/cacerts

...y el sistema podría devolvernos los archivos que le cargamos:

PIVKeyDeviceCertificateAuthority.crt MenganoSARootCA.crt

ls /etc/pam_pkcs11/crls

pivkeydeviceca.crl menganorootca.crl

Ahora crearemos los enlaces hash usando el programa pkcs11_make_hash_link. Por ejemplo, podríamos ingresar en la terminal:

cd /etc/pam_pkcs11/cacerts
sudo pkcs11_make_hash_link


...y al listar el contenido con del directorio cacerts con:

ls

...el sistema nos devolvería algo como:

c90bef04.0 PIVKeyDeviceCertificateAuthority.crt
e7d4c577.0 MenganoSARootCA.crt


Lo mismo hacemos con el directorio crls:

cd /etc/pam_pkcs11/crls
sudo pkcs11_make_hash_link


...y al listar con:

ls

...el sistema nos devolvería:

c90bef04.r0 e7d4c577.r0 pivkeydeviceca.crl menganorootca.crl


Configurar la pila PAM de Autenticación


El siguiente paso es integrar el módulo pam_pkcs11 a la pila PAM (la encargada del conformar el sistema de autenticación cifrada). Existen varias formas de hacerlo, y la configuración dependerá de la política de seguridad que tengamos como Conductor del sistema. Os mostraré unos ejemplos de integración basada en una política permisiva "de Unidad Básica" y otra política astringente "de Comando Táctico Justicialista".

Loguearse en Escritorio gráfico con GDM3 de Ubuntu usando tarjeta inteligente

En la pila PAM tradicional, se utiliza el método de inicio de sesión con contraseña, lo cual es sencillo y relativamente inseguro. En este ejemplo "para unidad básica", podríamos integrar el uso del módulo pam_pkcs11 a la pila PAM con el objetivo directo de utilizar la tarjetas inteligentes a fin de loguearnos durante el Inicio de Sesión gráfico GDM3 de Ubuntu.

Para ello editamos el fichero de configuración del mismo gdm-password e incluimos el módulo.

Por ejemplo, ingresamos:

sudo nano /etc/pam.d/gdm-password

E incluiremos el módulo pam_pkcs11 a la pila PAM de autenticación del sistema, agregando el siguiente contenido:

## Agregado peronista de módulo al stack PAM
## para logueo con tarjeta inteligente
auth    requisite   pam_nologin.so
auth    required    pam_succeed_if.so user != root quiet_success
auth    sufficient    pam_pkcs11.so
@include common-auth
auth    optional    @include common-account

...


Iniciar sesión con Tarjeta Inteligente en Ubuntu Server (únicamente loguearse)


El módulo pam_pkcs11 puede integrarse a la pila PAM de autenticación si deseqamos usar la tajeta inteligente únicamente para el inicio de sesión en el servidor, y no para el resto de las acciones. Para ello debemos editar el archivo login e incluir el módulo pam_pkcs11. Lo haremos ingresando:

sudo nano /etc/pam.d/login

...se abirá GNU Nano con el fichero login, al cual le incluimos el siguiente contenido:

## Agregado peronista para loguearse al servidor
## con tarjeta inteligente
# usar soporte pkcs11
auth    sufficient    pam_pkcs11.so
## Fuerza un retraso mínimo en caso de falla (dado en milisegundos).
## Reemplaza la configuración FAIL_DELAY del archivo login.defs).
## Tenga presente que otros módulos podrían requerir un retraso mínimo
## distinto (por ejemplo, para desactivar la existencia de retrasos,
## debería agregar la opción nodelay al archivo pam_unix).
auth    optional    pam_faildelay.so delay=3000000

## Da salida a un fichero de situación /etc/issue antes de cada
## solicitud de inicio de sesión (reemplaza la opción ISSUE_FILE
## del fichero de configuración login.defs). Descomente si lo
## quiere usar.
# auth    required    pam_issue.so issue=/etc/issue

...
...


Una vez pegado este contenido, guardamos los cambios con en el archivo con Ctrl+o y salimos del editor con Ctrl+x.

Al especificar "sufficient" en la línea de control, ta,bién podríamo loguearnos usando el siguiente caso de PAM (normalmente contraseña) si no tuviésemos la tarjeta inteligente encima o si la misma no funcionase. Por este motivo, la tarjeta opera únicamente como comodidad.

Como os he dicho, esto permitirá un acceso "de Unidad Básica" a la sesión gráfica, asumiendo una seguridad laxa ya que la tarjeta inteligente ha sido emitida supuestamente por una autoridad controlada.

Usar tarjeta inteligente en Ubuntu Server para autenticación general

Otra política de seguridad digna del Comando Táctico del Justicialismo podría requerir insertar la tarjeta de afiliado para dar inicio de sesión en el servidor y a su vez para cualquier otro servicio que utilice autenticación PAM. Muchos servicios PAM localizados en el directorio /etc/pam.d/ hacen uso del fichero common-auth. En esta política particular podríamos incluir al módulo pam_pkcs11 en este fichero a fin de activar la autenticación por tarjeta para todos los servicios que incluyan el uso de autenticación general.

Lo haríamos ingresando en la terminal:

sudo nano /etc/pam.d/common.auth

Y al abrirse el editor, en este caso incluiríamos el siguiente contenido:

## Solicita el inicio de sesión con tarjeta inteligente
## con el módulo pkcs11
auth    [success=1 default=ignore]    pam_pkcs11.so
## A continuacińo plan B de retorno, por si el módulo gorilea
## y no tiene éxito
auth    requisite    pam_deny.so
## Ceba la pila PAM con un valor de retorno positivo en caso de
## no haber recibido uno ya; esto permite evitar que devuelva un error
## sólo porque ningún otro módulo devolvió código de éxito,
## en el caso que los módulos que figuraban previamente en la pila PAM
## hubiesen quedado como gorilas idiotas colgados de las palmeras.
auth    required    pam_permit.so
## Y hete aquí más módulos por paquetes (el bloque "adicional")
auth    optional    pam_cap.so
# final de la configuración de pam-auth-update.


La configuración anterior del sistema de autenticación obligará a realizar la autenticación sólo con la tarjeta inteligente. Si el usuario no puede autenticarse con la tarjeta, entonces el inicio de sesión entero fracasará. Todos los servicios PAM incluidos en el directorio /etc/pam.d incluidos en common-auth requerirán también la autenticación por tarjeta. ¡Atención! Una configuración global como esta requere que su y sudo también se autentiquen usando la tarjeta magnética.

Agrtegar la CN

Ahora que pam_pkcs11 y la pila PAM han sido configuradas para el inicio de sesión con tarjeta inteligente siguiendo la política de seguridad que hemos anhelado, existirá una acción más que tomar requerida para el uso completo y final. El mapeador pwent requiere la CN en el certificado que esté indicado en la línea gecos del usuario del archivo /etc/passwd. La CN debe ser estraída desde el certificado contenido en la tarjeta magnética.

Para ello seguimos los siguientes pasos:

Primero, obtenemos el identificador ID del certificado contenido en el chip de la tarjeta inteligente. Esto lo haremos mediante el comando:

pkcs15-tool --list-certificates

...y nuestro sistema nos devolverá:

Using reader with a card: SCM Microsystems Inc. SCR 3310 [CCID Interface]
(53311646706297) 00 00
X.509 Certificate [Certificate for Card Authentication]
Object Flags: [0x0]
Authority: no
Path:
ID: 04
Encoded serial : 02 0A 5877782D0001000013BF


En este caso inventado, como vemos, el ID es "04".

Segundo, utilizamos este ID como llave para leer la información del certificado de la tarjeta y la guardamos en un fichero local en la carpeta temporal del sistema. Lo hacemos con el siguiente comando de organización:

pkcs15-tool --read-certificate 04 > /tmp/sc-cert.crt

...el sistema devuelve:

Using reader with a card: SCM Microsystems Inc. SCR 3310 [CCID Interface]
(53311646706297) 00 00


También podríamos presentar en pantalla el enigmático contenido en ASCII del certificado (que como vemos, es imposible de recordar para un ser humano normal y corriente):

cat /tmp/sc-cert.crt

-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIKWHd4LQABAAATvzANBgkqhkiG9w0BAQsFADBbMRMwEQYK
CZImiZPyLGQBGRYDYGoRiLaS2dE9MiErDaPyLGQBGRYGcGl2a2V5MSwwKgYDVQQD
EyNQSVZLZXkgRViVaPeRoNCaRaJoZmljYXRlIEF1dGhvcml0eTAeFw0xNjEyMDYw
MDE4MTJaFw0yODEyMDMwMDE4MTJaMDIxMDAuBgNVBAMTJ1BJVktleSBCQTM2NkRG
RTM3MjJDNzQ0OU-VDOTA2QjkyNzRDOEJBQzCCASIwDQYJKoZIhvcNAQEBBQADggE
...
...
-----END CERTIFICATE-----


En tercer lugar utilizamos el programa openssl para extraer la CN desde el fichero temporal almacenado que acabamos de crear.

openssl x509 -noout -subject -in /tmp/sc-cert.crt

...y entonces nuestro sistema devolvería algo como:

subject=CN = PIVKey BA3V6IDVFA37P2E7R4O9N96B9274C8BAC

En este caso la CN es "PIVKey BA3V6IDVFA37P2E7R4O9N96B9274C8BAC". Sabiendo esto, editamos el archivo /etc/passwd para agregarle esta CN al campo gecos del usuario al cual pertenece el certificado.

Supongamos que este certificado pertenece al nombre de usuario mengano en el fichero /etc/passwd. En este caso ingresamos:

sudo nano /etc/passwd

Esto abrirá el editor con el archivo de contraseñas. Debemos buscar la línea de mengano y editarla para que tenga la siguiente forma:

mengano:x:1001:1001:PIVKey BA3V6IDVFA37P2E7R4O9N96B9274C8BAC:/home/mengano:/bin/bash

Una vez que modifiquemos, guardemos con Ctrl+o y salgamos con Ctrl+x, nuestro sistema operativo estará ahora lilsto y preparado para hacer un logueo con tarjeta magnética para el usuario mengano.

Inicio de Sesión SSH usando tarjeta inteligente

Uno de los métodos contemplados en el protocolo Shecure Shell (SSH) es la autenticación con par de clave privada y pública. Una copia de la claves pública del usuario queda almacenada en el servidor SSH como referencia, y se la considerará "autorizada". Quien posea la clave privada podrá entonces loguearse a través de SSH al servidor.

Las credenciales PIV incluyen un certificado y un par de claves que pueden ser utilizadas para el acceder mediante SSH. La clave pública deberá ser extraída de la tarjeta inteligente y copiada en el servidor SSH. Para ello debemos conectar el lector de tarjetas al cliente SSH (o sea, nuestra terminal local). En ese momento el cliente SSH usará la librería opensc-pksc11 para acceder a la tarjeta que insertamos, y ralizará culaquiera de las operaciones de autenticación criptográfica que le requiramos. Por lo tanto, no es necesario exponer la clave privada.

Configurar el Inicio de Sesión Secure Shell con Tarjeta Magnética

Tanto el servidor SSH como nuestro cliente SSH deberán ser configurados para permitir el uso de autenticación por tarjeta magnética.

Configurar el servidor SSH

El servidor SSH necesitará permitir autenticación de clave pública a través de su fichero de configuración, y además necesitará la clave pública del usuario.

Para permitir la autentificación de clave publica, ingresamos:

sudo nano /etc/ssh/sshd_config

En un archivo estándar de Ubuntu 18.04, la opción PubkeyAuthentication está comentada y por lo tanto, desactivada. Sin embargo, la opción por defecto está establecida con el valor "yes" ("si"). La descomentaremos borrando el "#", de modo que quede así:

PubkeyAuthentication yes

Acto seguido, guardamos con Ctrl+o y salimos con Ctrl+x, y reiniciamos el demonio del servidor SSH con el siguiente comando de organización:

sudo systemctl restart sshd

Copiar la clave pública de un usuario al servidor

Debemos extraer la clave pública del usuario desde la tarjeta para el cliente SSH. Para ello usamos el programa ssh-keygen para que lea la clave pública contenido en la tarjeta y lo convierta a un formato legible para utilizar con Secure Shell:

ssh-keygen -D /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so > tarjeta.pub

Naturalmente, podríamos presentar en pantalla el contenido del sertificado público tarjeta.pub con el comando cat, de la siguiente forma:

cat tarjeta.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuFupFpsXwFPz2INdEgr64tn6yQKT7Osj
cXoAzgJ7JW/qykPxIZxELpJkoHe45s/fiIhkWjgHWhxCWRNSM76wyc2j47egfRdkzl0Kj7U1k-
kpOmGIFU8GA9nxVVikVrAmrI+PzEfRdOmNhPaVqnXUcOJVQh4fe1H5S1mtzV5VzJxKg/61IrBSM-
I5JnWDKNr1dGLIqMqw7A55YMvesKurOUrRe3BBIWYhN9XHIrWVFtMBHmQtW8iphmXUqQLHeH-
Q7LKpvCvE4i5QttlRSITD1Tqefwdeflh6I1P7LAsnMDp42zHZ23O4Ewd7aqNogikox6aNcCGYkU-
PavMBWcge5ykgR


Acto seguido, copiamos esta clave pública al sistema criptográfico del servidor SSH:

ssh-copy-id -f -i tarjeta.pub ubuntu@servidor

El servidor nos solicitará entonces la contraseña y copiará el certificado tarjeta.pub dentro de la carpeta necesaria:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “tarjeta.pub”
ubuntu@servidor’s password:

Number of key(s) added: 1


Ahora podremos intentar iniciar sesión remotamente a través de SSH en la máquina servidor, en el caso del ejemplo con

ssh ubuntu@servidor

...y comprobamos que sólo la clave que deseamos haya sido agregada y surta efecto. Debemos estar seguros pues una vez configurado todo no podremos acceder si no tenemos la tarjeta correcta y con un funcionamiento adecuado.

Configurar el cliente SSH para tarjeta inteligente

Continuando ahora desde el lado del cliente SSH, necesitaremos identificar nuestro librería proveedora PKCS#11. Existen tres formas de hacer esto:

La más incómoda es hacerlo directamente antes de conectarnos con el servidor SSH desde la línea de comandos, (con lo cual podremos hacerlo desde cualquier computadora). Por ejemplo, con:

ssh -I /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so ubuntu@servidor

Esto permite especificar el uso de tarjeta toda vez que ingresamos este largo comando, y en el resto de las ocasiones no se usará el acceso por tarjeta inteligente.

Ahora bien, si deseamos implementar que nuestro cliente de conexión SSH use tarjeta inteligente, debemos configurar el archivo ssh_config. Ingresamos:

sudo nano /etc/ssh/ssh_config

...y nos aseguramos que la opción PKCS11Provider quede de la siguiente manera:

PKCS11Provider /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so

...y guardamos con Ctrl+o y salimos con Ctrl+x.

Esto forzará a todos los usuarios del sistema a utilizar tarjetas magnéticas para usar SSH desde este cliente.

Configurar el uso de tarjeta inteligente para un Usuario

Para usar la opción de tarjeta inteligente para un sólo usuario del sistema cliente, deberíamos agregar la opción anterior en el fichero ~/.ssh/config de cada usuario. Para ello se usaría:

nano /home/usuario/.ssh/conf

En este fichero, modificamos la línea correspondiente en el archivoi, agregándole el ya conocido:

PKCS11Provider /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so

Y guardando con Ctrl+o y saliendo de Nano con Ctrl+x, como en el caso anterior.

De esta manera, sólo usuario tendría que utilizar la tarjeta inteligente en el lector para iniciar sesión a través de SSH a un servidor remoto.

En resúmen, las tarjetas inteligentes son convenientes en el sentido que permiten un almacenamiento de información de identidad a prueba de agresiones. Pueden utilizarse para autenticar el acceso a sistemas computados, redes de datos, información subscripta y privilegios. Ubuntu puede configurarse en tal sentido utilizando módulos PAM ya disponibles y utilidades libres para dar soporte a los logueos con tarjetas magnéticas.

sábado, 13 de junio de 2020

¿Cómo uso Linphone como cliente de VoIP en Ubuntu 20.04LTS?

El 18 de junio de 1950 se crea la Federación Obrera de Empleados Telefónicos de la República Argentina, FOETRA, que agremiará a los trabajadores del sector, propiciando a su vez un crecimiento exponencial en los tendidos intercomunicados. En reunión confederal, Juan Perón explica a los telefónicos cómo hacer uso del servicio SIP en Linphone, el cliente VoIP para Ubuntu.


¡Trabajadores!

Toda disposición técnica y especializada en comunicaciones se redunda en positiva para el país, pues facilitan los tiempos de conducción a la vez que se fomenta una veloz integración cultural del país en todos sus rincones.
En la Argentina hubo un tiempo que existió un ínfimo mercado telefónico, liderado por empresas extranjeras como la ITT, notablemente centralizado en la oligarquía. Era una herramienta de colonización, por y para las clases dominantes.

Nuestro Movimiento no podía consentir con tal afrenta, y por ello se impuso la necesidad de administrar un mercado telefónico para la grandeza de la Nación. Con tal fin el Estado a finales de agosto de 1946 creó EMTA, la Empresa Mixta Telefónica Argentina, situación que se aprobó ad referendum del Congreso de la Nación en su sesión del 3 de septiembre de dicho año.
El Primer Plan Quinquenal delineaba la ampliación de las comunicaciones de manera veloz para servir a las necesidades de un país vasto. El 18 de marzo de 1948 EMTA se pasó la administración pública bajo el explicativo nombre de Teléfonos del Estado. Su director impulsó en sólo seis años el tendido de 170.655 líneas, la incorporación de 54 centrales nuevas, además de las modernización de las anteriores con equipamiento Siemmens. 1.993 tendidos interurbanos nuevos se agregaron a la telaraña nacional, totalizando para 1951 un kilometraje suficiente para circumvalar con cable telefónico tres veces y media el globo, además de los 50 mil kilómetros de tendido automático de 12 vías, nuevo en la región.
Indudablemente que estas mejoras pueden también llevarse al mundo informático. La necesidad de comunicarse es constante para la grandeza de la Nación, y es por ello que debemos adaptar nueva tecnología que permita a nuestra informática comunicarse en las nuevas redes de datos. Por tal razón
existen varios estándares de comunicación telefónica por IP, y tal vez el más conveniente y abierto en tal sentido sea el popular SIP. Se trata de un protocolo para inicio de sesión concebido realmente para todo tipo de comunicaciones, pero entre todas las posibles destaca la telefonía por IP y la videoconferencia. El SIP ofrece la ventaja de estar dictado por la comunidad de Internet en lugar de las empresas telefónicas, por lo que asegura ciertos beneficios y universalidades en el manejo de las redes conmutadas de datos.

Para operar el protocolo SIP, es necesario contar con un usuario URI (identificador uniforme de recurso) y un cliente SIP. El URI podríamos considerarlo como un usuario registrado en una red de este tipo, y recibe la forma de dirección sip:usuario@dominio.

En cuanto a los clientes, podremos dividirlos en dos tipos: existen teléfonos IP compatibles con la norma SIP que son los clientes obvios, pero también contamos con aplicaciones de software destinadas al uso de redes SIP, llamadas Softphones. Naturalmente, una aplicación Softphone de este tipo capaz de instalarse en un smartphone tornará el mismo en un cliente SIP.

Existen muchos proveedores que podrán ofrecernos servicios SIP gratuitos o pagos. En mi caso propugno un servicio libre, y por tal motivo soy usuario de la SDF, la red social ética. Entre otros servicios, SDF provee servicio de telefonía VoIP gratuitos a sus usuarios Validados. Para solicitarlo, en la shell de la SDF ingresamos el comando "maint". Se nos solicitará loguearnos con usuario y contraseña de SDF en el submenú de mantenimiento.
Inmediatamente podremos utilizar la opción "v" para configurar el servicio de VoIP. Se nos proveerá una URI de usuario SIP (en el caso de la SDF, será un interno de cuatro números), así como una contraseña alfanumérica y una contraseña de cuatro números para la casilla de voz asociada (su contestador automático). Debemos tomar concienzuda nota de todo esto pues lo necesitaremos para configurar todo después. Una vez anotado los datos, saldremos del menú de mantenimiento con "q". Tras unos instantes deberíamos recibir un correo electrónico del sistema de la SDF confimrando los datos de la cuenta SIP.

Nota: Recordemos que si a posteriori quisiéramos volver a ver nuestros datos de ViIP en la SDF, modificarlos o anularlos, podremos ingresar desde el shell SDF con el comando maint al sistema de mantenimiento (habremos de darnos de alta con nuestro usuario y contraseña de SDF, y elegir la opción "v" (" estabkecer o resetear su ID de VoIP) y luego la opción "d" ("ver las configuración actual de VoIP).

Pues bien, en los tiempos del primer peronismo utilizaba Ekiga como cliente de telefonía SIP en Ubuntu. Sin embargo, con el correr del tiempo dicho excelente programa ha quedado superado y ya no se encuentra en los repositorios de Ubuntu 20.04LTS. Por tal motivo hoy os enseñaré a utilizar Linphone.

Para instalarlo abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

sudo apt install linphone

Una vez que le indiquemos nuestra contraseña de Conductor, se descargará la paquetería necesaria. Concluida la instalación, podremos arrancar el programa de comunicaciones de voz desde Aplicaciones / Internet / Linphone.

La primera vez que lo iniciemos, el cliente de Linphone presentará su ventana gráfica y nos propondrá un usuario sip:usuario@iplocal:5060.
Al mismo tiempo, se nos presentará un Asistente de configuración de cuenta. El mismo podría sernos de mucha utilidad si no tenemos una cuenta SIP y queremos crear una desde Libhone. Sin embargo, como ya cuento con una cuenta SIP en la SDF, cierro el asistente.
En el caso de la SDF, la propuesta de cuenta estandar usuario@iplocal:5060 no funcionará. La modificaremos manualmente. Para ello en el cliente elegimos el menú Opciones / Preferencias (o presionamos Ctrl+p) y se abrirán las opciones del programa.

En la primer solapa llamada Gestionar Cuentas SIP" nos encotraremos con los detalles de la cuenta del cliente. En este caso agregaremos la cuenta de SDF. Para ello presionamos el botón +Añadir.
Se desplegará la ventana Linphone - Configurar una cuenta SIP. En el campo identidad SIP indicamos nuestro usuario SIP de la SDP (normalmente en la SDF sería ####@sip.sdf.org). En el campo Dirección del SIP Proxy ingresamos lo mismo. Opcionalmente, podríamos tildar "Indicar información de presencia" si queremos que se publique nuestro estado (disponible, ocupado, ausente, al teléfono, etc) a los demás usuarios SIP que nos tengan registrados. Una vez terminada la configuración, presionamos el botón Aceptar.
En la solapa Configuración Multimedia podremos escoger qué servidor de audio queremos utilizar. En mi caso dispongo de PulseAudio y ALSA, y he elegido PulseAudio pues funciona sin ruidos de clics. En este caso conviene tildar Activar Cancelación de Eco.
Escogemos la solapa Configuración de Red, y en la misma podremos modificar las características de la red. Normalmente debemos utilizar Conexión Directa a Internet. Si no podemos conectarnos, puede deberse a que estamos detrás de un router. En tal caso podríamos intentar tildando la opción Tras un NAT/Firewall (utilizar ICE).
Una vez que tengamos configurado todo, presionamos el botón Aceptar.

Ahora tendremos contaremos con nuestro usuario creado y adosado al sistema. Natuarlmente podrían llamarnos a sip:usuario@sip.sdf.org.

Una buena idea es ejecutar el Asistente de Sonido, que nos asegurará que todo el apartado de sonido opera correctamente en nuestro propio sistema local. Para ello vamos a Ayuda / Asistente de Sonido.
El asistente nos permitirá utilizar nuestro micrófono y comprobar el retorno del mismo. Idealmente al hablar debería indicar "bueno".
También podremos reproducir unos tonos por los altavoces para comprobar el volúmen y respuesta del sonido, y grabar una frase corta y comprobar que opere correctamente.

Ahora es momento de realizar una llamada de prueba al servidor remoto SIP utilizando el Linphone. Por ejemplo, podríamos intentar una llamada al sistema de "Eco" de la SDF. El número es sip:1008@sip.sdf.org. Ingresamos el mismo y presionamos el botón "Llamar", que presenta un ícono de teléfono. Cuando queramos establecer nuestra primer llamada con el cliente Linphone utilizando la red VoIP de la SDF, se nos solicitará la Contraseña de servicio SIP (el código alfanumérico) de nuestro UserID (que usualmente es un interno de cuatro cifras).

Ahora ya todo está hecho, y de ahora en más podremos utilizar nuestro cliente para realizar llamadas.
Cuando estemos en habla, en este caso con el sistema de eco, podremos oirnos a nosotros mismos recibiendo el "eco" de nuiestra voz. El retraso de la misma implica el lag de nuestra conexión, y naturalmente es más elevado en llamadas internacionales. Podremos "mutear" nuestro micrófono presionando Silenciar, o presionamos en Colgar.

Si necesitamos podremos también desplegar el Panel de Marcado desde el menú Opciones / Mostrar marcador.
En este podríamos discar números o utilizar los sistemas PBX VoIP. Por ejemplo, al contar con una usuario VoIP en la SDF, podremos discar 1085@sip.sdf.org al fin de  acceder al sistema de correo de voz. El sistema automático nos solicitará nuestro número de casilla de voz ("Mailbox?") y tras introducir los cuatro dígitos, nos solicitará la contraseña numérica asociada a nuestra casilla de mensajes de voz (de cuatro cifras también). El sistema nos permitirá escuchar los mensajes nuevos, avanzar o retroceder, movernos en las carpetas de mensajes nuevos, antiguos o guardados, y borrar los mensajes.

Naturalmente, en la SDF contamos también con una serie de extensiones públicas, las que podremos "discar" para probar:

ExtensiónSuscriptorDescripción24/7
1001internoFecha y Hora UTCSi
1002internoTono de prueba sinusoidal lineal desde 16Hz a 20kHzSi
1003internoTono Prueba de audio sinusoidal exponencial desde 16Hz a 20kHzSi
1004internoTono Milliwatt (1004Hz @ 0dB)Si
1005internoTest de Eco de Respuesta (USA)Si
1006internoMúsica de Prueba "CQ Serenade"Si
1009internoJuego de aventuras IVRSi
1026internoTono de 2600Hz @ 0dBSi
1030internoMúsica "de Arbolito"Si
1085internoSistema de Correo de Voz de SDFSi
1086internoLlamada en Confedencia (sin mute)Si
1088internoLlamada en Conferencia (disque #1 para Mute on/off)Si
1929internoSalida a C*NETSi
5004internoTono de Milliwatt (1004Hz @ 0dB) (Europa)Si
5005internoTest de Eco de Respuesta (Europa)Si
5085internoSistema de Correo de Voz (Europa)Si
5088internoLlamada en confedencia (Europa) (Presiones #1 para mute on/off)Si

viernes, 12 de junio de 2020

¿Cómo corrijo el sonido del Realtek ALC892 en Ubuntu 20.04LTS?

¡Descamisados!

Siempre he dicho que llevo en mis oídos la más maravillosa música, que es para mí la palabra del Pueblo Argentino.

Pero esto es así porque uso auriculares y software para escuchar música liberaedo bajo Licencia GPLv3 .

El camino de la Liberación no es ajeno a los escollos y al barro. Quien no lo comprenda, tenderá a fracasar. Es un verdadero Conductor aquél que aprende a superar las lides y determinar con su acción luminosa el sendero que los demás habrán de seguir.

Pues bien señores, en Ubuntu Mate 20.04LTS Focal Fossa, un inconveniente nublaba mi día peronista. Al reproducir audio de cualquier tipo, y tras detener la reproducción, notaba que a los pocos instantes comenzaban a oírse a través de los cascos una serie de sonidos intermitentes o clics, similares a los que se obtienen cuando se conecta un audífono cuando los altavoces están encendidos. Al producirse aproximadamente cada medio segundo, se hacía algo extremadamente molesto.

Asimismo, podía notarse en repetidas ocasiones "saltos" en el control de volumen, sobre todo cuando se alcanzaba un "pico" en el sonido. Esto se producía ya sea en la terminal (ya sea con los controles de volúmen pulsemixer o el Alsamixer) o en el control gráfico de Ubuntu. Notablemente, se hizo totalmente inefectivo el control de "automute" de Alsamixer.

Un problema de este tipo requiere una acción decidida, y para solucionar estos "pop-pop-pops" no cardíacos habremos recurrir a una acción de conjunto, que es la manera en la cual deben hacerse las cosas.

En primer lugar es definir qué dispositivo de audio es el que tenemos instalado en nuestro sistema. Esto es así porque la mayoría de las veces, se utilizan meros "chipsets" integrados en la placa madre, en lugar de las añoradas plaquetas de sonido.

Para ello abrimos una terminal con Ctrl+Alt+t y nos informámos de qué módulo de audio está cargado en memoria. Ello lo haremos con:

cat /proc/asound/modules

En este caso, se nos informa que es el inefable snd_hda_intel, empleado por multitud de dispositivos de audio integrado diferentes.
También podríamos chequear el nombre técnico del dispositivo para el sistema con:

lspci | grep Audio

00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)

En este caso he logrado rastrear al culpable de los "saltos" y "pops": se trata de la rutina de ahorro de energía del controlador de sonido snd_hda_intel, el cual parecería intentar apagar y reencender las salidas de audio, con el molesto resultado que os he descripto anteriormente.

Es posible modificar a mano la configuración de la funcionalidad de ahorro energético para que no haga el "latido intermitente", modificando el archivo /sys/module/snd_hda_intel/parameters/power_save. Siendo un fichero "binario", el mismo contiene un simple 1 si la funcionalidad de ahorro de energía está activada, o un 0 si la misma está apagada. Siguiendo este camino, bien podríamos resolver el problema ingresando en nuestra terminal el siguiente Comando de Organización:

sudo echo > 0 /sys/module/snd_hda_intel/parameters/power_save

...y tras ingresar nuestra contraseña de conductor, la función de ahorro de energía debería desactivarse.

Ahora bien, esto nos sirve para comprobar que esta es la causa del problema. La solución sólo funcionará hasta reiniciar el sistema, momento en el cual deberemos repetir esta acción. Nuestro Movimiento debe buscar soluciones permanentes a los problemas permanentes.

Existen varias maneras de hacerlo. La más sencilla para probar sería editar el fichero alsa-base.conf. Para ello debemos abrirlo con el editor Nano:

sudo nano /etc/modprobe.d/alsa-base.conf

...el sistema nos solicitará nuestra contraseña, la ingresamos, y se abrirá el fichero. Debemos ir al final del mismo y pegarle el siguiente par de líneas:

#Comando para que no suene pops en los auriculares:
options snd-hda-intel probe_mask=1 model=auto power_save=0 power_save_controller=N
Acto seguido guardamos con Ctrl+o y salimos del editor con Ctrl+x. Debemos reiniciar el equipo, y a la vuelta, evaluar si surtió efecto. En muchas versiones de sonido Realtek debería bastar con esto.

Si no fuese el caso, podríamos probar con quitarle permisos de ejecución a la rutina de ahorro de energía para el audio Intel HD. Esto es simple de hacer, sólo basta con ingresar en la terminal el siguiente Comando de Organización.:

sudo chmod -x /usr/lib/pm-utils/power.d/intel-audio-powersave

Acto seguido volvemos a reiniciar el sistema y evaluamos si surtió efecto. debería solucionarse el problema. Si no lo hiciese, podríamos volver a otorgarle permisos de ejecución para que quede como estaba originalmente con:

sudo chmod +x /usr/lib/pm-utils/power.d/intel-audio-powersave

La tercera manera es la forma más agresiva de hacerlo. Consiste en asegurarnos que se ejecute la anulación de la funcionalidad de ahorro de energía del conector de audio que evaluamos en un principio, toda vez que inicia Ubuntu 20.04LTS Focal Fossa. Para ello no tendremos más remedio que reactivar la olvidada funcionalidad del archivo /etc/rc.local. Este se trataba de un fichero de configuración que se autoejecutaba después de dar inicio al sistema, pero antes de que el o los usuarios ingresaran a su propia sesión de trabajo. En el Ubuntu actual el fichero rc.local ya no viene activado por defecto, pero podremos activarlo como os he explicado detalladamente aquí.

Conforme hayamos realizado lo allí indicado, y comprobado el funcionamiento, podremos editar el archivo /etc/rc.local por medio del siguiente comando:

sudo nano /etc/rc.local

Esto abrirá el editor peronista GNU Nano con fichero /etc/rc.local. Para agregar el comando que desactive el ahorro de energía del controlador snd_hda_intel toda vez que se inicie el sistema, agregamos antes de la última línea - la cual siempre debe contener "exit 0" - el consabido comando:

echo 0 > /sys/module/snd_hda_intel/parameters/power_save
Una vez editado, podremos guardar el archivo /etc/rc.local con Ctrl+o y salir del editor GNU Nano con Ctrl+x.

Guardamos y salimos con Ctrl+o y Ctrl+x.

Luego modificaremos el archivo default.pa de pulseaudio, para modificar la conducta de reconocimiento de auriculares. Esto es necesario opcionalmente si al superar cierto nivel en la señal de salida, nuestra placa ALC892 conmuta automáticamente de entrada o salida de audio (falla en el reconocimiento de conectores por sobrevoltaje). En tal caso, ingresamos:

sudo nano /etc/pulse/default.pa

Se abrirá dicho fichero en el editor GNU Nano. Usamos el comando buscar con Ctrl+w y buscamos la línea:

load-module module-switch-on-port-available

...Y la modificamos comentándola, anteponiéndole un signo # de manera que quede:

#load-module module-switch-on-port-available


Ya realizado esta modificación en el fichero default.pa, lo guardamos mediante Ctrl+o y salimos del editor con Ctrl+x.

 Luego ingresamos:

mv ~/.config/pulse/ ~/.config/pulse.old 
systemctl --user restart pulseaudio

Naturalmente, para que todo lo realizado surta efecto, debemos reiniciar el equipo. Podremos hacerlo desde la terminal con:

sudo reboot

Y ya tendremos sonido Realtek ALC892 sin cortes en Ubuntu. Si no fuese la solución en su adaptador de sonido en particular, podrían revertir o modificar el cambio realizado en alsa-base.conf.