jueves, 6 de septiembre de 2012

El Hinternet criollo, apuntes subre Linux

A poco de ponerse a estudiar el material disponible sobre el HSMM es claro que, parrafaseando el ancestral dicho imperial, "todos los caminos conducen a Linux".
Linux es, en principio, un sistema operativo para computadoras derivado  de la arquitectura Unix. Como definición técnica debería bastar, pero es al mismo tiempo un montón de otras cosas. Es un esfuerzo cooperativo gigantesco que involucra al mismo tiempo a plataformas de procesamiento masivas o diminutas, pero que tuvo un nacimiento casi romántico en las manos del (entonces) adolescente Linus Torsvald inmortalizado casi como un eterno rebelde (aunque ya no lo es tanto). Es una potente plataforma para desarrollar software, en particular  para lo que se denomina "Software Abierto" (Open Software). Es parte de un movimiento tecno-cultural que lo asocia con la "libertad", en algunos ámbitos con un marcado sesgo de confrontación con otras alternativas (quizás la mas marcada, los productos MicroSoft). Es también el origen de la noción que es una plataforma para la que el software "es gratis".
Es concebible desarrollar un concepto como el HSMM sobre Windows, pues los principales "bloques constructivos" están ahi disponibles y de hecho mucho del software necesario es parte del Windows mismo o es gratis o tiene un valor accesible. Hay por supuesto herramientas y aplicativos que pueden ser costosos, pero no serán en general necesarios.
Con el suficiente nivel de profundidad técnica y algunas limitaciones prácticas hay un factor que no es muy difundido; casi cualquier paquete que corra en Windows puede correrse en Linux y viceversa.
En realidad la única razón por la que el Windows no es atractivo no tiene ninguna relación con la eterna (y algo esteril) discusión sobre sistemas "abiertos" o "propietarios". La principal razón es que Windows solo reina en el ámbito (extenso por cierto) de las plataformas Intel (no por casualidad denominadas como Wintel), las versiones para otras plataformas son espasmos mal concebidos y peor implementados del énfasis corporativo de Microsoft de sacar cualquier moneda de cualquier lugar.
Linux puede ser utilizado en virtualmente cualquier plataforma, desde los mas grandes computadores de alta performance (supercomputadores) hasta los mas pequeños dispositivos embebidos; en una gama de procesadores y arquitecturas enorme.
Hace una década las opciones de un aficionado eran solo conseguirse la máquina PC mas grande que pudiera pagar su presupuesto; hoy las opciones son muchas otras. Y eso nos conduce a esta nota.
Linux se "construye", es decir uno puede obtener los binarios para su plataforma, pero si desea modificarlos en algun aspecto siempre puede "contruirlos" desde cero. O llevarlos a otra plataforma ("portarlos"). Esto lo permite una arquitectura increiblemente modular donde cada componente es lo mas pequeño que se pueda implementar para que haga su función y un marco donde todos ellos interoperan. Por eso, el número de componenetes que realmente son diferentes para una determinada plataforma (un procesador por ejemplo) son muy pocos. Una vez "re-escritos" esos pocos componentes el resto es esencialmente el mismo código, compilado para máquinas diferentes. Esta caracteristica es clave, porque puedo adaptar el software para cualquier uso aunque este no hubiera sido previamente concebido, y para hacerlo no tengo que empezar desde cero. Me apoyo en una gigantesca plataforma, estable y sostenida globalmente.
Una plataforma que incluso me permite trabajar en máquinas que aún no tengo (o no existen aún) pues no necesito
... ni siquiera estén construidos en la misma máquina, dado que son usuales los compiladores "cruzados", es decir que funcionan en una arquitectura pero generan código para otra.
... ni siquiera sean ejecutados en la misma máquina, dado que son usuales los emuladores, que permiten simular a cualquier procesador (o mas propiamente, arquitectura de procesador).
Hoy se puede correr Windows bajo un Linux Ubuntu y que esto sea transparente para todos los programas involucrados; o corre un Ubuntu bajo Windows. Programas de emulación como el qemu, VirtualBox o VMWare lo hacen posible.
¿Que pasa si el paquete que quiero usar corre solo en Windows/Linux?... Simple, lo corro bajo emulación en Linux/Windows!!!!
Tambien, aunque es menos atractivo para el propósito de esta entrada, correr aplicaciones en forma cruzada sin recurrir a la emulación del procesador sino utilizando emulaciones de la plataforma misma. Por ejemplo puedo correr aplicaciones concebidas para Linux en la plataforma Windows utilizando un conjunto de librerias denominadas CygWin que le permiten al programa "ver" lo mismo que vería si estuviera corriendo en un Linux, o correr una réplica cruda de Windows pero escrita para Linux como Wine.
Pero esta facilidad no se limita a estas dos plataformas, por cierto ambas en la arquitectura Intel (X86); puedo emular cualquier procesador que se me antoje (ARM, MIPS, PowerPC, etc) con los mismos recursos.
Eso significa que puedo utilizar un ambiente Windows en PC para correr software especializado que solo tiene una expresión conveniente en Linux, puedo tener una máquina virtual que lo haga. O puedo desarrollar en forma cruzada.
Todo esto puede parecer una descripción mas o menos llevadera de las posibilidades tecnológicas de interoperar las dos principales plataformas que se pueden utilizar en radio; pero no se debe ir mucho mas lejos sin reconocer que utilizar estas facilidades requiere muchos menos conocimientos que lo que hubieran sido necesarios hace una década, pero aún por encima del usuario promedio.
El principal atractivo es que en los usos de HSMM hay dispositivos mucho mas económicos que una PC y por eso son tan atractivos para utilizarlos, tanto para construir una infraestructura con ellos como para... jugar con ellos (!!).
Por ejemplo puedo tomar uno de los (literalmente) miles de modelos de dispositivos "utilitarios" de propósitos específico (print server, disk server, settop box, TV controllers, etc) de, generalmente, costo muy moderado (mucho menor que una PC en todo caso) y mediante el cambio de su firmware por una versión "abierta" de Linux transformarlos en un computador de propósito general.
¿Abstracto? Tomemos un router TP-Link modelo WRT741ND (o cualquier otro similar) como el que se compra en cualquier shopping a un costo del entorno de los USD 50, le cambiamos su microcódigo propietario por la versión adecuada al nivel de hardware de OpenWrt (o, con menor énfasis, dd-wrt) y tenemos un pequeño computador Linux de propósito general que además es un muy buen router de protocolos TCP/IP y al cual se le pueden compilar (o desarrollar) toda suerte de protocolos robustos o experimentales, como los que pueden ser útiles para un despliegue experimental de... por ejemplo una red HSMM (!!!).
No son ejemplos aislados, nada impide transformar un printer server o un storage server con la cantidad de memoria adecuada en un Web server, o un DX Cluster o un mail server de bajo volumen; una vez que se le reemplazó el firmware original por un Linux se puede hacer todo lo que se puede hacer con un Linux... es decir... todo. No es teoría, el DXCluster de Rick (LU9DA) corre en esa plataforma.
Me es (muy) dificil encontrarle una diferencia a este tipo de experimentación de lo que podría haber sido construir un receptor "novelero" modificando un receptor de radio común.
La tendencia, habilitada por la revolución tecnológica de los sistemas embebidos, es que incluso las prestaciones de mayor performance de alguna manera reservadas a las PC también estan siendo crecientemente desplazadas por estos utilitarios, solo sigan con atención la maravilla tecnológica llamada "Raspberry Pi".
Un poco para redondear el panorama resta entender como se puede hacer frente a desarrollar para semejante blanco movil de plataformas; si tuviera que desarrollar software para que una Raspberry Pi se comunique con un router inalámbrico justamente me apoyaría en la esencia misma de los sistemas abiertos (e interoperables) que pregona Linux, podría hacerlo porque en definitiva todos los Linux funcionan en forma similar. Pero aunque quisiera llegar tan profundo como estar seguro que lo que estoy experimentando va a funcionar incluso a pesar de las pequeñas diferencias que hay en los Linux entre distintas plataformas, bueno, en ese caso lo que haría sería emular ambos ambientes en mi PC bajo qemu.
Un ecosistema potencialmente tan rico como puede ser una red HSMM requiere una plataforma que se pueda adaptar a todos las probables plataformas que se usen; pero al mismo tiempo que tenga un grado de interoperabilidad con máquinas que corran en versiones mayores de Linux o Windows. Esa plataforma es sin duda Linux.
Por eso es que en materia de HSMM, "todos los caminos conducen a Linux", cuanto antes empecemos la marcha más rápido llegaremos.

No hay comentarios:

Publicar un comentario

Buscar este blog

Páginas vistas en total