jueves, 26 de noviembre de 2020

¿Cómo uso DCL en un sistema OpenVMS remoto?

En su fundamental Modelo Argentino para el Proyecto Nacional, Juan Perón expone el papel actual y futuro que el desarrollo tecnológico propende a la Argentina, en tanto explica cómo crear una cuenta de acceso remoto a un sistema OpenVMS y operar el intérprete de comandos DCL desde Ubuntu.

(...)

La tecnología es uno de los más fuertes factores de dependencia en la actualidad. Resulta importante enfatizar que este hecho se agudiza en el caso del sector industrial. 

Si nuestra industria es ya fuerte, en el Modelo la deseamos aún mucho más importante. Necesita, entonces, una tecnología que cimente su desarrollo, pero esta necesidad no debe instrumentar la acción de un poderoso factor de dependencia

La alternativa surge clara: tenemos que desarrollar en el país la tecnología que nutra permanentemente a nuestra industria. Estado y sector privado deben volcar todos sus esfuerzos en ese sentido, cada uno en la medida de sus posibilidades.

El gasto en investigación y desarrollo debe ser tan grande como jamás lo haya sido hasta ahora, pero tan bien programado como para soslayar cualquier posibilidad de despilfarro. Deben aprehenderse bien estos conceptos, pues son absolutamente esenciales: sin tecnología nacional no habrá una industria realmente argentina, y sin tal industria podrá existir crecimiento, pero nunca desarrollo.

La tarea que se propone no es fácil. Hay que remontar la herencia de un esquema ferozmente competitivo, en el que sólo primaban fines solitarios -o simplemente grupales- que dieron lugar a una batalla entre intereses, de la cual generalmente salieron mal parados los más débiles. El sector industrial privado es ahora convocado a colaborar, con su quehacer específico, bajo una perspectiva totalmente distinta. El Estado debe orientarlo en su acción, señalándole claramente cuál ha de ser su rol en los programas de desarrollo y haciéndolo participar activamente en la elaboración de la política económica. No deben quedar dudas de que, cuando hablo de sector privado industrial, me refiero tanto a empresarios como a trabajadores, nucleados unos y otros en sus organizaciones naturales.

Si, como ya afirmé, el mercado no constituirá la referencia fundamental en la determinación de las necesidades auténticas de la comunidad, el sistema de precios no será -en algunos sectores- el impulsor de las decisiones de inversión. El Estado tendrá, entonces, que suplir este posible déficit, ya sea mediante su acción directa como inversor o bien, indirectamente, a través de su política económica. Al Estado le cabe también la responsabilidad de relevar asiduamente el comportamiento del sector industrial en su conjunto, en una acción fiscalizadora, tanto de control como de apoyo.

Este desarrollo técnico-industrial es sobre el que se columpiará el progreso de la Nación. Para lograrlo bien podremos considerar programas pilotos ya creados de accionamiento directo.

Un sistema llave en mano y de libre acceso ocasionalmente puede convertirse en una fundamental herramienta de aprendizaje, que nos permitirá realizar todos los casos de estudio más pertinente sin tener que hacer un deployment activo. Las ciencias del cómputo son un claro ejemplo.

Desde mediados de los 70s la Digital Equipment Corporation (DEC) consolidó su línea de mainframes PDP-11. Estos podían utilizarse con una variedad creciente de sistemas operativos monousuario, pero también con algunos multiusuario y con capacidad de cómputo concurrente o compartido. Entre ellos destacaba el sistema operativo DEC RSX-11.

Ante la necesidad de crearle una interfaz que contemplara sus funcionalidades de manejo y que además fuese estructuralmente similar al FORTRAN tan en boga en los sistemas comerciales de la era, se terminó implementando el DCL, el Lenguaje de Comandos de Digital.

El DCL fue particularmente exitoso a principios de los 80s sobre el sistema operativo VMS, cuando se instalaba este en la arquitectura de cómputo DEC VAX y posteriormente la aquitectura DEC Alpha. El sistema operativo VMS tradicional derivó en una implementación a código abierto, el OpenVMS portado a ambas arquitecturas. Afortunamente, la última versión 9 de OpenVMS representa un cambio fundamental ya que abandona las obsoletas arquitecturas DEC para compatibilizarotras de despliegue moderno, notablemente la x86_64. Esto hace posible de operarse en equipos de escritorio modernos, aunque a costa de un código privativo.

Como máscara visible de RSX-11 podremos decir que DCL ha influido por transición sobre toda las ramas de sistemas operativos modernos desde de implementaciones del CP/M de Intergalactic Digital Research, y en el Q-DOS de Seattle Computer Products, luego masificado como el Microsoft DOS y filosóficamente transicionado en intérpretes actuales hasta el MS PowerShell. Incluso han existido versiones de intérprete llamada VCL cuya inspiración era el DCL, pero estaban orientados ya para el MS-DOS (reemplazaba a intérprete nativo COMMAND.COM), OS/S y Windows.

Como los sistemas VAX históricos y los Alpha pueden emularse bajo SIMH en GNU con Linux, es posible crear entornos de emulación para estas plataformas si contamos con licencias de uso hobbista para el mismo. Lamentablemente, si bien las mismas se distribuyeron a través de un programa especial de Hewlett-Packard, actualmente su entrega está descontinuada.

Es por ello que la manera más sencilla de operar en un sistema de estas características es darnos de alta en un sistema público que disponga del hardware antiguo correctamente licenciado. Una de estas instancias la proporciona DECUS.ORG, un grupo de usuarios hobbistas de equipamiento DEC, que cuenta con el apoyo institucional del actual poseedor de la propiedad intelectual del VMS, Hewlett-Packard. 

Decus.org pone a disposición del público general su infraestructura de cómputo DEC Alpha DS20 puesta en línea, y ofrece la creación de cuentas públicas de acceso remoto a intérprete de comandos.

Se trata de la versión Alpha DS20 de 500 Mhz. Este consiste en un rack con múltiples servidores montados.

Cada uno de estos servidores consta del sistema OpenVMS 8.4 el cual se puede utilizar para albergar sesiones de terminal remotas de usuarios hobbistas. El fin fundamental de este sistema de cómputo es albergar el sistema de ayuda básico para los antiguos clientes de la DEC, el cual fue adquirido por Compaq, y luego por Hewlett-Packard. De esta forma, el sistema continúa con vida bajo un cariz de ayuda sin fines de lucro bajo legislación norteamericana de "fair-use" (buen uso).

Para dar de alta una cuenta a título individual y no comercial, podremos usar nuestra terminal GNU con Linux mediante Secure Shell (SSH). Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos:

ssh REGISTRATION@eisner.decus.org -p 22867

Cuando el sistema nos solicite si estamos seguros de querer conectarnos ingresamos YES ("si"). Al solicitarnos contraseña ("Password:") no ingresamos ninguna y simplemente presionamos ENTER. Se activará a continuación programa de registro en la máquina DEC Alpha, que constará de varias pantallas. En ellas se nos solicitará ingresar un nombre de usuario y debemos proporcionar una casilla de correo electrónico válida. También se nos solicitará indicar qué tipo de editor deseamos (normalmente uno llamado LSE).

Una vez recibido un correo de parte de DECUS conteniendo una contraseña pasavante, podremos ya conectarnos a nuestra cuenta de OpenVMS remoto. Por tanto, nos logueamos utilizando SSH y nuestro nombre de usuario, con:

ssh usuario@eisner.decus.org -p 22867

Tras ingresar la contraseña provista por DECUS, podremos ver nuestra pantaslla incial. Por ejemplo:

%DCL-S-SPAWNED, process USUARIO_10419 spawned
  User [USUARIO] has 842 blocks used, 9158 available,
  of 10000 authorized and permitted overdraft of 0 blocks on DISK_USER
* * * * < Hola USUARIO! > * * * *
RECIBA UNA CORDIAL BIENVENIDA
____ al sistema computado 
|  _ \  ___  ___ _   _ ___    
| | | |/ _ \/ __| | | / __|
| |_| |  __/ (__| |_| \__ \
|____/ \___|\___|\__,_|___/
 DEC Alpha con OpenVMS 8.4
+-------------------------------------------------------------------+
| Nombre del nodo: EISNER.  Hardware: AlphaServer DS20 500 MHz      |
|Este mainframe pertenece al Grupo Hobbista "Asociacion de Usuarios |
|     de Digital Equipment Computers", DECUS.ORG.                   |
+-------------------------------------------------------------------+
- Su directorio es DECUSERVE_USER.USUARIO.  
- Su casilla de correo electronico en este equipo es: usuario@eisner.decus.org.
- Para abandonar este sistema utilice el comando LOGOUT.
$
Subprocess USUARIO_xxxxx has completed

El prompt de DCL es un "$".

DCL se presenta idiosincrásicamente mas complejo y laborioso de usar que los entornos similares a UNIX, y requiere por lo tanto tener presente su frondosa documentación. Sin embargo, en su operativa general podré sustentarla con mi ayuda como Conductor Paternal del Movimiento Nacional Justicialista. 

El DCL presenta un conjunto de instrucciones en inglés que el usuario ingresaba para comandar al sistema operativo (en este caso OpenVMS), qué hacer. Constaba de más de 200 comandos y funciones.

Al igual que otros intérpretes posteriores como Bashm, los comandos en DCL se ingresan en dos maneras. La más común es la forma interactiva, en la cual se escriben en la terminal de manera indiferente a mayúsculas. Generalmente se usan secuencias de comandos y modificadores.

La otra es "en lotes", y esto equivale a la creación de programas y guiones de programación (scripts). Nos conectraremso en la primera manera.

Asimismo, DCL tiene varias combinaciones de control que interrumpen o anulan la execución de comandos.

Ctrl+z: Sale de un comando de DCL

Ctrl+c: interrumpe la ejecución de un comando (pero lo deja en memoria).

Ctrl+b: Repite el comando anterior.

Ctrl+a: Conmuta entre modo Inserción de caracteres y Sobreescritura de Caracteres.

Ctrl+s: Suspende la salida de texto a la terminal.

Ctrl+o: Reactiva la salida de texto a la terminal. Si se la presiona alternativamente, pausa y continúa el flujo de texto.

La Ayuda Online era una de las características fundantes del VMS. Esta consistía en un programa que seguía la forma de estructura jerarquizada tipo "árbol" . Ingresando el comando "help" se ingresa al subsistema de ayuda. También se puede usar en forma "HELP tema". Por ejemplo:

$ help instructions

Normalmente el subsistema de ayuda permite ingresar y presentar en pantalla cada uno de los temas o "topics" escribiéndolos por su nombre indicado, y a su vez cada tema podría presentarnos nuevas temáticas de ayuda relacionadas. Si oprimimos ENTER generalmente retrocederemos un nivel. Al volver al nivel inicial del subsistema de ayuda, abandonaremos el mismo y quedaremos depositados nuevamente en el prompt $ del DCL.

Recordemos que siempre podremos salir del subsistema de ayuda (y muchos otros programas ejecutados por DCL) con Ctrl+z.

COMANDOS COMUNES

Hay muchísimos comandos y programas capaces de corren en OpenVMS, pero ciertos son comandos comunes directamente equivalentes o muy parecidos a los comandos presentes en sistemas de operación similares a UNIX. Por ejemplo:

copy: Copia un fichero especificado, cp

copy/ftp: transfiere ficheros entre huespedes sobre red tcp/ip, ftp

create: crea ficheros y directorios, touch

delete: borra un fichero especificado y lo quita del directorio, rm

directory o dir: presenta los contenidos de un directorio (listado de ficheros), ls

edit: muestra y cambia los contenidos de un fichero de texto, ed

logout: desconecta la sesión remota, logout, exit

print: envia un fichero especificado a la impresora

rename: cambia el nombre o la localización de un fichero especificado, mv

set: controla como usar el sistema en pantalla

show: presenta el status de sistema

type: presenta los contenidos de un fichero especificado en la pantalla, cat

El sistema de ficheros de OpenVMS representa también una estructura arbolada, lo que nos permite desplazarnos en ella siguiendo el mismo principio rector que los sistemas similares a UNIX: el de cambiar directorios y subdirectorios. 

Nuestro usuario de DECUS recibirá un directorio de usuario localizada dentro de la carpeta "DECUSERVE_USER", que generalmente se encuentra en una partición en una unidad de disco del sistema, como por ejemplo DSA3:.

 En particular, suele requerir la necesidad de ingresar entre corchetes "[]" toda la ruta del directorio a fin de desplazarnos por la estructura de árbol. Los niveles de directorios se separan utilizando un "." en lugar de una barra como en UNIX u otros sistemas.

Para ver el contenido del directorio actual ingresamos:

$ directory

...o más sencillo, su la abreviación dir.

Por ejemplo, si quisiéramos crear un directorio llamado "pruebas" en nuestra carpeta de usuario, deberíamos usar:

$ CREATE/DIRECTORY [DECUSERVE_USER.USUARIO.pruebas]

Para comprobar su creación efectiva, ingresamos el comando "dir". Deberíamos ver ahora un directorio nomenclado como prueba.dir;1. Para ingresar a dicho directorio usamos el comando cd ("cambiar directorio"), seguido por toda la ruta estructurada. Por ejemplo:

$ cd DSA3:[DECUSERVE_USER.USUARIO.prueba]

Para volver al directorio anterior:

$ cd DSA3:[DECUSERVE_USER.USUARIO]

...o bien:

$ cd [DECUSERVE_USER.USUARIO]

Se nos hará obvio que todos los archivos cuentan con un sufijo de versión, indicado con punto y coma. Por ejemplo: archivo.txt;1 archivo.txt;2, etcétera. De esta manera podremos contar con múltiples versiones de un mismo fichero. Siempre se activa la última, pero se conservan las anteriores. Si queremos eliminar un fichero se usa el comando DELETE, pero debemos especificar cuál versión queremos borrar. Por ejemplo,

$ DELETE archivo.txt;3

...o bien, eliminamos todas las versiones de un fichero con comodines, por ejemplo:

$ DELETE archivo.txt;*

Para borrar el directorio creado tenemos que retroceder al nivel anterior en el árbol (no podemos eliminar un directorio desde dentro del mismo). Finalmente indicamos un comando como:

$ DELETE prueba.dir;1

Crear un fichero finger

Los sistemas de cómputo a tiempo compartidos podían contar con un fichero de texto .plan o .project, encargados de operar como descripción del usuario. Como los sistemas solían ser anónimos pero contar con un "handle" o nombre de usuario específico, estos ficheros de texto podían servir como una descripción o información de contaco. Sin embargo, no era extraño contar con extavagantes descripciones o texto ASCII, lo que pasaba a formar parte del folklore típico de los sistemas de cómputo a tiempo compartido.

Para crear nuestro fichero podremos aprovechar y utilizar el editor de texto visual "LSE". Ingresaremos a él con:

lse

El editor de texto LSE consta de dos secciones. Una principal con la ventana de texto, y otra inferior en la que podremos ingresar comandos de operación. En este caso simplemente escribiremos un texto que deseemos. Cuando finalicemos de hacerlo, presionaremos Ctrl+z. Esto nos desplazará a la sección inferior para ingresar los comandos de operación, lo cual se nos hará patente por medio del prompt LSE>. En él ingresaremos exit. El editor LSE nos solicitará el nombre de archivo a fin de guardarlo con dicha denominación y salir al intérprete DCL. Le introducimos el nombre .plan y presionamos Enter.

Esto cerrará el editor LSE y nos retornará al prompt de DCL. Debemos ahora asignar los permisos de fichero requeridos al fichero .plan que hemos creado. Ello lo haremos ingresando el comando:

set file/prot=w:re .plan

Crear una web de DECUS

La URL base para su página web será:

http://eisner.decus.org/~usuario

La web se almacena en el subdirectorio WWW localizado en nuestro directorio de usuario.

Para ello creamos un subdirectorio y le otorgamos los permisos requeridos

$ set default sys$login

$ create/dir [.www] /protection=w:re

$ set security /acl=(default_protection, s:rwed, o:rwed, g:r, w:r) www.dir

$ set default sys$login

$ set security /acl=(identifier=WASD_HTTP_SERVER,access=read) [-]usuario.DIR

Acto seguido creamos un archivo index.html o bien lo transferimos a través de FTP. Podremos crear subdirectorios adicionales dentro de [WWW] si lo deseamos.

Documentación

El manual puede conseguirse online, pero está disponible en formato HTML desde la antigua web de Compaq (actualmente disponible desde HP).

Podrán encontrar las secciones e índice de base en aquí.

En tanto que podrán dirigirse al uso de DCL desde esta sección del mismo manual.

viernes, 20 de noviembre de 2020

¿Cómo instalo DustRacing2D en Ubuntu?

El 7 de marzo de 1950, reunido con los directores de las Escuelas de Orientación Profesional, Juan Perón expone el término final de la capacitación obrera, en tanto que enseña cómo instalar DustRacing2D, un divertido juego de carreras para Ubuntu.

Respetados señores:

(...) Nosotros habíamos visto crecer a nuestros operarios y formarse en el dolor del taller, en la necesidad de trabajar desde chicos. Eso, como método empírico, llena solamente una parte de la enseñanza. Es necesario acompañar a este método real de un método ideal, es decir, darle también los conocimientos necesarios para que el operario no termine muriéndose o jubilándose operario, sino que tenga abierto el horizonte para ir perfeccionándose en sus conocimientos, y, con ello, ir aumentando sus posibilidades de ir sumando a su labor y a su capacidad manual la capacidad intelectual que hace grande y convierte en artesano al más modesto de los operarios si es hombre de progresar por sus conocimientos generales. Nosotros, estamos cumpliendo los primeros tres ciclos que nos habíamos propuesto. La idea originaria de esto fue formar los operarios, crear después el segundo ciclo de perfeccionamiento para formar pequeños dirigente de la industria, sobrestantes, jefes de taller, etcétera; y después, crear la Universidad Obrera que diese los técnicos capacitados, pensando que de ese núcleo de hombres deben salir los grandes dirigentes de nuestra industria actual y de nuestra industria futura.


Indudablemente que en la operación de un sistema de cómputo como lo es GNU con Linux también encontramos el mismo proceso de mejora a pasos, acompañado por instrumental y herramental que le den un claro sentido didáctico.

Por ejemplo, Dust Racing 2D constituye un software libre que representa un juego de carreras bidimensional de plataforma cruzada basado en celdas. Lo interesante es que ha sido escrito con fines didácticos para ilustrar el arte de la programación en Qt, C++ y OpenGL, ya que ha sido liberado bajo licencia GPLv3. Viene con un editor de niveles que nos permitirá crear niveles fácilmente. Utiliza un motor separado llamado MiniCore para modelar la física del juego. Como tal puede ser utilizado por el más sencillo de los operarios, e incluso puede compilarse a partir del herramental c-make si ya somos sobreestantes.

Entre las características que contamos es la posibilidad de jugar individualmente o de a dos contra 11 jugadores controlados por la CPU de nuestro sistema de cómputo.

En el caso que no tengamos capacidad aún para compilar en nuestro perfeccionamiento, esto no significará ser excluido de la posibilidad de acceder al ocio. Para ello podremos instalarlo desde la Terminal de nuestro sistema GNU con Linux abriendo una consola mediante Ctrl+Alt+t e ingresando los siguientes Comandos de Organización:

sudo apt update
sudo apt install dustracing2d
mkdir -p ~/.local/share/DustRacing2D/tracks

Para iniciar el juego, nos dirigiremos a Aplicaciones / Juegos / DustRacing2D.


La pantalla inicial nos permite Jugar, consultar la ayuda, Configurar el juego, o ver los créditos del mismo.

Al elegir jugar, debemos seleccionar un circuito entre los propuestos.


Al escoger uno, habremos indicar qué nivel queremos entre tres: Fácil, Medio o Difícil. Asimismo, contamos con tres modos de juegos (Carrera, Prueba de Tiempo, o Duelo).

Si elegimos el juego de dos jugadores, habremos de afrontar una pantalla dividida (podemos optar entre vertucal u horizontal).

La perspectiva del juego es esencialmente cenital 2D, pero cuenta con objetos 3D para otorgarle cierta profundidad.

El desarrollo es simple: al semáforo de largada metemos "pata hasta el radiador", y manobraremos siguiendo el circuito. 

Los Controles son sencillos y se basan en cuatro teclas para acelerar, frenar, girar a la izquierda o a la derecha. El jugador 1 utiliza el triángulo invertido formado por las teclas de las flechas del cursor para tales movimientos, en tanto que el Jugador 2 utilizará el triángulo invertido de teclas W-A-S-D. Para salir de la carrera o volver al menú anterior se puede usar la tecla Esc o la tecla q, en tanto que p pausará el juego. Sin embargo, estas pocas teclas también pueden configurarse desde el menú Settings.

Naturalmente, no se puede cortar camino pues las vueltas no se contarán. A efecto predictivo contamos con un útil minimapa.

En los modos de carreras existen siempre 12 autos. Al finalizar entre los primeros seis corredores, se destrabará una nueva pista. Los tiempos de récord y las mejores posiciones se almacenan por separado para cada conteo de vueltas. 

A medida que corramos, se desgastarán las cubiertas. Esto causará que tengamos menos agarre en la pista. Afortunadamente, contamos con un pit para detenernos (el rectángulo amarillo). Al detenernos en el pit, se repararán las gomas, lo cual nos dará más tracción y estabilidad.

La animación del juego es veloz y sencilla, destacándose fundamentalmente su física de superficie, lo que agiliza un estilo de juego que haga uso de giros y derrapes.

El sonido es digitalizado, con notas sonoras para las colisiones y rendimiento del motor.



Editor de Pistas de Carreras

El juego incluye un muy interesante editor de circuitos, al que podremos acceder desde Aplicacioens / Juegos / DustRacing2D Level Editor. El mismo mos permitirá delimitar un trazado, toda vez que nos permite agregar accesorios a la pistas (tribunas, árboles, pasto, zonas anegadas, rampas, etcétera.

La delimitación de zonas permite a los coches adversarios actuar en buena medida, y nos configura una interesante manera de diseñar nuevos escenarios de juegos, incluso replicando la realidad. Por ejemplo, a pesar de que carece de curvas de 30º, es bastante sencillo replicar el circuito "17 de Octubre":

Dust Racing 2D normalmente buscará las pistas de carreras en la carpeta ~/DustRacingTracks/, donde podremos colocar nuestras propios circuitos. Sin embargo, en GNU con Linux conviene colocarlos en ~/.local/share/DustRacing2D/tracks, donde el juego podrá encontrarlos y podremos elegirlos fácilmente.

Opciones de Línea de Comandos

--lang [lang] fuerza el idioma. Los disponibles actualmente son: fi, cs, de, it, fr, nl, ru.

Ejemplo: dustrac-game --lang it

--screen [index] fuerza la pantalla en los sistemas multimonitor cuando se pasa a modo de pantalla completa.

Por ejemplo, dustrac-game --screen 1 dará inicio al juego en la segunda pantalla.

martes, 17 de noviembre de 2020

¿Cómo arreglo el error Busybox initramfs en Ubuntu?


¡Trabajadores!

Es innecesario explicar que al descender de un avión negro del retorno, no existe nada mejor que un paraguas negro si hemos de cuidarnos de las inclemencias del tiempo. Y qué mejor que éste nos los dispensa el compañero Rucci.


Este mismo temperamento hemos de seguir cuando tenemos algún problema de apariencia irresoluble. He de ilustrarlo con un ejemplo, que - como decía Napoleón - suelen explicarlo todo.

Este día de la militancia, al iniciar mi GNU con Linux sufrí un percance. El proceso normal de arranque del sistema se detuvo y nos depositó en una pantalla negra con el intérprete shell BusyBox, que indicaba "(initramfs)".

El equipo previamente no presentó problema anormal alguno ni fue apagado de manera extraña, de modo que se trató de un error azaroso.

En este momento la pantalla negra queda detenida nostrando el prompt "(initramfs)". 

BusyBox v1.30.1 (Ubuntu 1:1.27.2-2ubuntu3.3) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs)

De momento, no presenta otra información ni permite conocer exactamente cuál es el problema en cuestión. Todo lo que se muestra es un intérprete de comandos Busybox.

Esto podría amilanar hasta el más pintado, pero yo en política soy un Aficionado, lo que soy es un Conductor. Por tal motivo, sé reconocer para qué lado salir tirando cuando las papas queman...

En este caso de la pantalla negra con texto y cursor significa al menos que el sistema está vivo

Podríamos ingresar help para recibir ayudas. Pero si ingresamos el comando exit, debería al menos continuar el proceso de revisión de disco. Por ello siendo uncabecita negra, de momento en el propmt "(initramfs)" ingresaremos el comando:

exit

...y presionaremos la tecla Enter.

Si la suerte nos acompaña, tras unos momentos deberíamos comenzar a ver una serie de mensajes que reportes que nos indican el tipo de error y la partición de disco en la que sucedió.

Por ejemplo, el sistema podría devolvernos algo como:

/dev/sda2 contains a file system with errors, check forced.
Inode 4326476 extent tree (at level 1) could be narrower, IGNORED.
/dev/sda2: Inode 4326843 extent tree (at level 1) could be narrower, IGNORED.
/dev/sda2: Inode 4327012 extent tree (at level 1) could be narrower, IGNORED.
/dev/sda2: Inode 4329004 extent tree (at level 1) could be narrower, IGNORED.
/dev/sda2: Inodes that were part of a corrupted orphan linked list found.

/dev/sda2
: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
        (i.e., without -a or -p options)
fsck exited with status code 4.
The root filesystem on /dev/sda2 requires a manual fsck.


Como podemos ver en las devoluciones del intérprete de arranque, la partición /dev/sda2 presenta inconsistencias. Significa que el sistema de archivos de esta partición presenta algunos errores relacionados con la corrupción del Justicialismo. En vuestro caso podría ser otra distinta, ya que esto depende de cuántos discos y de qué manera estén organizadas las particiones en su sistema particular.

Pues bien señores, nuestro Movimiento nace del Pueblo, y sabemos que no es sabio pretender que todos nuestros elementos sean Santos, o sean Dioses. Bastante hay conque sean Hombres. No hay que ponernos locos; nuestro Movimiento cuenta ya con sus autodefensas. Si un el hombre no hubiese desarrollado sus autodefensas, hace rato que hubiese desaparecido de la faz de la teirra, porque su máxima protección no son los médicos ni la penicilina, afortunadamente. Su mejor defensa es su sistema inmune, que reacciona ante estas excrecencias. Nuestro sistema operativo es mas o menos lo mismo. Copia de la naturaleza las defensas que lo habrán de proteger.

Es por ello que Ubuntu cuenta con Busybox, una muy pequeña suite de software que provee muchas utilidades comunes de UNIX en un ejecutable que obra de intérprete de comandos mínimo. Nos proveerá reemplazos para la mayoría de las utilidades que encontramos normalmente en todos los sistemas operativos GNU, y nos permitirá actuar incluso antes de que se inicie el sistema operativo para ejecutar ciertas rutinas de protección y salvataje.

Initramfs es el sistema de archivos inicial depositado en la memora RAM de nuestro equipo, y basado en tmpfs. Contiene el herramental y scripts requeridos para montar el sistema de archivo antes de que el binario de inicialización del sistema de archivos real del root sea cargado desde el disco y cargado en memoria para dar inicio al sistema operativo en sí.

Para resolver el error que hace presente a initramfs en Ubuntu, se nos hará necesario reparar el sistema de archivos del dispositivo afectado. Para ello debemos indicar la partición y usar el programa "fsck".

Como en nuestro caso se ha indicado que la partición problemática era /dev/sda2, en el prompt (initramfs) tipeamos:

fsck /dev/sda2 -y

Tengamos en cuenta que si la partición que se nos indique es distinta, o fuesen varias, podríamos tener que indicar como por ejemplo /dev/sda1 o /dev/sdb1 u otra que se nos hubiese indicado anteriormente.

El programa fsck se encargará de revisar el dispositivo de almacenamiento indicado e intentará reparar todos los sectores en malas condiciones de tal partición. La opción -y es cómoda ya que nos evitará que se nos solicite que indiquemos manualmente confirmación toda vez que se nos indique un error (los corregirá automáticamente sin chistar).

Luego de un par de minutos, si todo va bien, BusyBox debería devolvernos un mensaje similar a:

/dev/sda2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda2: 497733/30531584 files (1.5% non-contiguous), ........


Cuando vuelva al prompt (initramfs), tipeamos el comando:

reboot

...y presionamos Enter para que el sistema se reinicie.

Si todo va bien, nuestro sistema debería reiniciarse correctamente, y podremos gritar al cielo un estruendoso "¡Viva Perón!" que reivindique como ninguno el Día del Militante Justicialista.



domingo, 1 de noviembre de 2020

¿Cómo instalo el editor de programación Atom en Ubuntu?

En la edición del 30 de junio de 1966 del semanario Primera Plana, Juan Perón expone ante el corresponsal su visión sobre la recién acaecida Revolución Argentina de Onganía, en tanto elabora sobre cómo instalar el editor de código fuente Atom en Ubuntu.

(...)

Uno de los hombres más sagaces de la historia política argentina decía que para que los radicales se hundieran bastaba con dejarlos gobernar... Simpatizo con el movimiento militar porque el nuevo gobierno puso coto a una situación catastrófica. Como argentino hubiera apoyado a todo hombre que pusiera fin a la corrupción del Gobierno Illia. La corrupción como el pescado, empezó por la cabeza. Illia usó fraude, trampas, proscripciones; interpretó que la política era juego con ventaja; y en política, como en la vida, todo jugador fullero va a parar a Villa Devoto. El hombre que acabó con eso, por supuesto, tiene que serme simpático, pero no sé si también lo será en el futuro. Illia había detenido al país queriendo imponerle estructuras del año mil ochocientos, cuando nace el demoliberalismo burgués, atomizando a los partidos políticos.

El gobierno anterior fracasó porque intentó gobernar sin concurso popular. Pero para eso hace falta grandeza, olvido de las pasiones. Yo ya estoy más allá del bien y del mal. Fui todo lo que se puede ser en mi país, por eso puedo hablar descarnadamente. No tengo interés en volver a la Argentina para ocupar cargos públicos. Quiero, claro, volver a la patria, pero sin violencias.

Cuando los jefes militares me visitaron por interpósita persona, descubrimos algunas coincidencias. Pero hace poco escribí con seudónimo que el peronismo no pacta con nadie. Firmo Descartes porque el filósofo francés usaba el seudónimo Astrónomo Perón, y yo le devuelvo así la gentileza...

Los gorilas intentaron la destrucción nuestro Movimiento por la violencia, Frondizi por la integración, Illia por la disociación: los tres fracasaron. Pues he aquí los hechos. El gobierno de Onganía tiene que tener una buena intención. Si el nuevo gobierno procede bien, triunfará. Un conductor político es una cosa y un conductor militar, otra. Este manda, vale decir, obliga. El conductor político persuade. Para mandar se necesita voluntad y carácter; para gobernar, sensibilidad e imaginación.

No conozco suficientemente a Onganía. Es un hombre que habla poco, y por lo tanto, difícil de definir. Tengo la impresión de que es un buen soldado; sé que es un hombre patriota, bienintencionado y honesto, y ésas son condiciones esenciales para un hombre político. Reconozco calidad a Onganía como hombre de mando en el Ejército. Si Onganía se comportase en el terreno político como en el terreno militar, el país podrá andar bien. 

El defecto del actual gobierno es no saber exactamente lo que quiere, pero la cosa va a ser cuando desate el paquete, porque ellos tampoco saben lo que hay allí. 

La organización del peronismo tiene como base de adoctrinamiento la búsqueda del bienestar nacional. Si el nuevo Gobierno apoya los intereses populares, nosotros apoyaremos al Gobierno.  

La proscripción del peronismo no nos interesa porque es imposible proscribirnos por decreto. No nos interesa nuestra existencia legal, sino nuestra existencia real... Tampoco nos interesa el acceso al poder porque no luchamos por nosotros sino por el país. Hemos aprendido a tener paciencia; será dentro de un año, dentro de diez. Creemos, como Confucio, que una hormiga no puede matar a un elefante, pero que puede comérselo. Tenemos buenos nervios.

Este es el momento en que los argentinos deben ponerse de acuerdo. Sólo entonces el país saldrá adelante. Si no, llegaría el momento de tomar las armas y pelear. El camino de unidad es cada vez más difícil; y el camino de las armas, cada vez más fácil. 

Los argentinos debemos ponernos de acuerdo, porque la disyuntiva es la guerra civil. Si permanecí impasible durante diez años ante el retroceso nacional, es porque no creo en la violencia ni en la destrucción de las obras realizadas, porque lo que ya está hecho puede prosperar. Tuve importantísimos ofrecimientos de armas y tropas, pero me negué por no entregar el alma al diablo ni provocar derramamientos de sangre. 

El problema político sólo se soluciona haciendo los padrones de nuevo (han borrado de los padrones a nuestra gente). Deben, también organizarse fuerzas políticas. Es tarea para un año y medio o dos. Hay que romper con los estatutos de la trampa y convocar luego a elecciones con la Ley Sáenz Peña o cualquier otra ley justa. Y quien sea que gane, nos comprometemos a ponerle el hombro todos. Si Onganía, luego de las elecciones, entrega el gobierno al ganador legítimo, pasará como prócer a la historia; si se quiere perpetuar, fracasará irremisiblemente. Pero el que haga bien al país contará con nuestro apoyo. El movimiento peronista no podrá ser destruido con proscripciones ni decretos. 

Resuelto eso, la Argentina, cuando trabaja, equilibra en seis meses lo estructural y en dos años resuelve todos los problemas económicos. En economía no hay milagros. En economía, la misión fundamental del gobierno es dar posibilidad a la gente para que se realice.

En cuanto a problemas de programación, también tenemos dos disyuntivas a tomar. Una es la de emplear sencillos editores locales, que es la que prefiero. Otros puedrían anhelar operar aparatosos IDE, o entornos integrados de desarrollo. De entre estos, los más modernos ya suelen integrar control de versionado, compiladores y desensambladores, así como capacidades de operatoria en "la nube". O mejor dicho, en servidores remotos ajenos, a fin de conformar un equipo de trabajo de programación a distancia.

Podrán instalar uno que podría servirle a Onganía, siempre que tenga buenas intenciones... Se trata Atom, un editor de código fuente multiplataforma originado por la gente de GitHub como un IDE moderno y que luego fue reducido para conservar principalmente su editor de texto escrito en base a Node.js.

Su orientación son los programadores y especialmente los equipos de trabajos de programación. Consta con funciones de autocompletado y automatización con pseudo-macros. Incluye un gestor de paquetes de expansión integrados, útil por la enorme cantidad de funcionalidades que se le pueden agregar opcionalmente.

Como característica principal se encuentra la de contar con dos multiples paneles para edición.

De la misma manera que Argentina debe optar entre el acuerdo o la guerra civil, también debe optar entre dos maneras adecuadas para instalar Atom en Ubuntu. Ambas se pueden lograr fácilmente empleando la terminal si abrimos una mediante Ctrl+Alt+T. La primera manera es descargar directamente el paquete adecuado desde la web oficial de Atom e instalarlo. Por ejemplo, si quisiéramos instalar la versión de 64 bits, podríamos ingresar los siguientes Comandos de Organización:

cd ~/Descargas/ ;
wget -O atom-amd64.deb https://atom.io/download/deb ;
sudo dpkg -i atom-amd64.deb

La otra manera es recurrir a un servidor privado PPA, lo que nos garantizaría actualizaciones automáticas de Atom. Si deseamos seguir este procedimiento, deberíamos ingresar:

wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add - ;
sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list' ;
sudo apt-get update ;
sudo apt-get install atom

Cualquiera sea la elección que hemos determinado, una vez completada la instalación podremos ejecutar el editor de código guente mediante Aplicaciones / Programación / Atom

Atom está diseñado para ser accesible estar configurado desde el principio con sus opciones más útiles, lo que nos asistirá para acrecentar la productividad del obrero programador, y nos permitirá ir de casa al trabajo y del trabajo a casa.

También es hackeable hasta el núcleo, ofreciendo la misma flexibilidad extrema que tendrías en editores clásicos sin tener que retorcer todos los cables por sí mismo.

La forma más simple de comenzar a configurar Atom es abriendo las Preferencias del Editor. 

Las Opciones Principales (Ctrl+,) nos permitirán encontrar los campos que definen las preferencias comunes, tales como como el Tipo de Codificiación de fichero, definir rutas globales. También se pueden especificar un directorio para utilizar con nuestros proyectos de Atom, etcétera.

Las Preferencias del Editor permiten personalizar la forma en la forma que el se presentará la ventana de edición. Las propiedades permiten definir la tipografía y su tamaño, o número de líneas, guías de indentado, y aún hacerlas invinsibles.

Se pueden utilizar los ajustes de editor predefinidos, pero es bastante sencillo configurar unos propios para un proyecto determinado.

La pestaña Keybindings muestra todos los atajos útiles de teclado disponibles.

Atom ya viene preconfigurado con un conjunto de atajos, pero indudablemente lista crecerá cuando no bien comencemos a instalar paquetes de extensiones. Si quisiéramos que encontrar un atajo específico, podremos usar directamente la caja de búsqueda para encontrarlo.

Si necesitamos reemplazar un acceso rápido particular, o queremos crear uno de cero, podríamos editar directamente el fichero de mapeo de teclas. Atom usa notación de objetos CoffeeScript para manejar los atajos en este fichero, a fin de poder directamente desarrollar los atajos de manera sencilla.


Incluso hay un snippet predefinido para crear un nuevo atajo de teclas. Sólo tipeamos "key" y presionamos Tab y Atom expandirá el snippet en una plantilla conveniente.

El fichero snippets ("recortes") en la configuración de Atom permite definir atajos de expansión de teclas, para definir secciones de códigos o texto que se usan frecuentemente. Al igual que los atajos de teclas, los snippets también están programados en notación CoffeeScript. Nuevamente, Atom nos ofrece un snippet para crear snippets. Simplemente tecleamos "snip" y presionamos Tab, y se nos presentará un snippet de ejemplo, que podremos modificarpara ajustar su comportamiento.

La solapa Themes nos permite organizar el estilo de tema y del coloreado de la sintaxis del texto desde dentro del mismo editor. 


Los Themes o temáticas son colecciones de reglas de estilos visuales, lo cual están formadas como un subconjunto de CSS. Atom ya viene con un puñado de Themes que nos presentarán una buena cantidad de estéticas para empezar, pero tendremos una enorme cantidad entre los paquetes de temáticas. Para instalar adicionales, cliqueamos en la pestaña Instalar, donde podremos buscar una de las recomendadas, o una específica.

Si ninguna le atrae, podremos modificar una prehecha o crear una nueva ingresando la modificación deseada.

En fin, si nos interesan los editores y las funcionalidades IDE, Atom constituye un buen editor con GitHub integrado, que podremos dar buen uso.

Esta es nuestra última oportunidad, y por eso necesitamos que el nuevo gobierno tenga grandeza. En caso contrario, podemos desembocar en la guerra civil y en esa guerra tendremos que entrar todos. Dios quiera iluminar a Onganía y sus muchachos, y que estos muchachos acierten a tomar la mano que la fortuna les está tendiendo.