1.1.- Introducción a UNIX, Linux y GNU

En los últimos años Linux se ha convertido en un fenómeno. No pasa ni un día sin que Linux aparezca de un modo u otro en los medios de comunicación, de hecho, están a la vanguardia en los teléfonos móviles de última generación (Android) y en la mayoría de los GPS. Hemos perdido la cuenta del número de aplicaciones disponibles en Linux, y el número de organizaciones que las han adoptado, entre los que se incluyen algunos departamentos gubernamentales y administraciones locales. Los principales vendedores de hardware como IBM y Dell también proporcionan Linux, y los principales vendedores de software como Oracle, aceptan que su software se ejecute en Linux. Linux se ha convertido en un sistema operativo viable, especialmente en el mercado de los servidores.

Linux debe su éxito a los sistemas y aplicaciones que lo preceden: el software UNIX y GNU.

¿Que es UNIX?

Unix (registrado oficialmente como UNIX®) es un sistema operativo portable, multitarea y multiusuario; desarrollado, en principio, en 1969, por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy.

El sistema, junto con todos los derechos fueron vendidos por AT&T a Novell, Inc. Esta vendió posteriormente el software a Santa Cruz Operation en 1995, y esta, a su vez, lo revendió a Caldera Software en 2001, empresa que después se convirtió en el grupo SCO. Sin embargo, Novell siempre argumentó que solo vendió los derechos de uso del software, pero que retuvo el copyright sobre «UNIX®». En 2010, y tras una larga batalla legal, ésta ha pasado nuevamente a ser propiedad de Novell.3

Solo los sistemas totalmente compatibles y que se encuentran certificados por la especificación Single UNIX Specification pueden ser denominados «UNIX®» (otros reciben la denominación «similar a un sistema Unix» o «similar a Unix»). En ocasiones, suele usarse el término «Unix tradicional» para referirse a Unix o a un sistema operativo que cuenta con las características de UNIX Versión 7 o UNIX System V.

Breve historia de UNIX

8CED_1024_30277A finales de 1960, el Instituto Tecnológico de Massachusetts, los Laboratorios Bell de AT&T y General Electric trabajaban en un sistema operativo experimental llamado Multics (Multiplexed Information and Computing Service),4 desarrollado para ejecutarse en una computadora central (mainframe) modelo GE-645. El objetivo del proyecto era desarrollar un gran sistema operativo interactivo que contase con muchas innovaciones, entre ellas mejoras en las políticas de seguridad. El proyecto consiguió dar a luz versiones para producción, pero las primeras versiones contaban con un pobre rendimiento. Los laboratorios Bell de AT&T decidieron desvincularse y dedicar sus recursos a otros proyectos.

Uno de los programadores de los laboratorios Bell, Ken Thompson, siguió trabajando para la computadora GE-6355 y escribió un juego llamado Space Travel,6 7 (Viaje espacial). Sin embargo, descubrió que el juego era lento en la máquina de General Electric y resultaba realmente caro, algo así como 75 dólares de EE.UU. por cada partida.

De este modo, Thompson escribió nuevamente el programa, con ayuda de Dennis Ritchie, en lenguaje ensamblador, para que se ejecutase en una computadora DEC PDP-7. Esta experiencia, junto al trabajo que desarrolló para el proyecto Multics, condujo a Thompson a iniciar la creación de un nuevo sistema operativo para la DEC PDP-7.8 Thompson y Ritchie lideraron un grupo de programadores, entre ellos a Rudd Canaday, en los laboratorios Bell, para desarrollar tanto el sistema de ficheros como el sistema operativo multitarea en sí. A lo anterior, agregaron un intérprete de órdenes (o intérprete de comandos) y un pequeño conjunto de programas. El proyecto fue bautizado UNICS, como acrónimo Uniplexed Information and Computing System, pues solo prestaba servicios a dos usuarios (de acuerdo con Andrew Tanenbaum, era solo a un usuario ). La autoría de esta sigla se le atribuye a Brian Kernighan, ya que era un hack de Multics. Dada la popularidad que tuvo un juego de palabras que consideraba a UNICS un sistema MULTICS castrado (pues eunuchs, en inglés, es un homófono de UNICS), se cambió el nombre a UNIX, dando origen al legado que llega hasta nuestros días.

Filosofía UNIX

El sistema operativo UNIX y, por consiguiente, Linux, fomenta un estilo de programación determinado que posee algunas de las características siguientes:

  • Sencillez.- La mayoría de las prestaciones más útiles de UNIX son muy sencillas y, consecuentemente, pequeñas y de fácil comprensión. Resulta aconsejable seguir la técnica «breve y conciso«. Cuanto más grande y complejo sea el sistema, podemos asegurar que contendrá más y más errores, y preferimos evitar la ardua tarea de localizarlos y darles solución.
  • Enfocado.- Es preferible que un programa realice una sola tarea correctamente, en vez de tirar todas las prestaciones por la borda. Puede resultar difícil usar o mantener un programa con «sobrecarga de prestaciones«. Es más sencillo mejorar los programas que cumplen un único propósito a medida que se desarrollen mejores algoritmos o interfaces. En UNIX, las prestaciones pequeñas se suelen combinar para realizar las tareas demandadas una vez que surge la necesidad, en vez de intentar anticiparse a las necesidades del usuario con un programa más grande.
  • Componentes reutilizables.- Hace que el núcleo de su aplicación esté disponible a modo de biblioteca. Las bibliotecas bien documentadas, junto con interfaces de programación sencillas a la vez que flexibles pueden hacer que otros desarrollen variaciones, o que usen las técnicas con nuevas áreas de aplicación. Entre los ejemplos se encuentra la biblioteca de base de datos dbm, que se trata de un conjunto de funciones reutilizables en lugar de un programa de gestión de base de datos único.
  • Filtros.- La mayoría de aplicaciones UNIX, se pueden usar a modo de filtros. Es decir, transforman los datos de entrada y los convierte en datos de salida. Como verá, UNIX proporciona prestaciones que permiten el desarrollo de aplicaciones bastantes complejas a partir de otros programas UNIX, gracias a la combinación de ambos siguiendo unos novedosos métodos. Por supuesto,  dicha reutilización es posible gracias a los métodos de desarrollo mencionados previamente.
  • Formato de fichero abierto.- Los programas UNIX más famosos y con mayor éxito usan archivos de configuración y de datos escritos en texto ASCII o XML. Si cualquiera de los dos es una opción para desarrollar un programa, ambos son una buena elección. Permite que los usuarios usen herramientas estándar para buscar y configurar los elementos de configuración  y para desarrollar nuevas herramientas  que podrán realizar nuevas funciones en los archivos de datos. Un buen ejemplo es el sistema de referencia cruzada de código fuente ctags, que registra información sobre la ubicación de símbolos a modo de extensiones regulares apropiadas para que las usen los programas de búsqueda.
  • Flexibilidad.- No se puede preveer el grado de ingenio con el que utilizará los usuarios su programa. Intente ser lo más flexible posible al realizar la programación. Evite los límites arbitrarios en lo relativo al tamaño de los campos o el número de registros. Si puede, escriba el programa para que sea consciente de la red o a través de un ordenador local. No dé nunca por hecho que puede conocer todos los deseos del usuario.

¿Que es Linux?

jx2S.linus_torvalds_jpgLinux fue desarrollado por Linus Torvald en la University of Helsinki, con la ayuda de programadores Unix a través de Internet. Todo comenzó a modo de hobby inspirado por el Minix de Andy Tanenbaum, un pequeño sistema similar a UNIX, pero que se ha convertido en un sistema completo con sus propios derechos. Se pretende que el kernel de Linux contenga únicamente código que se pueda distribuir libremente, y no código registrado.

GNU/Linux es uno de los términos empleados para referirse a la combinación del núcleo o kernel libre similar a Unix denominado Linux con el sistema GNU. Su desarrollo es uno de los ejemplos más prominentes de software libre; todo su código fuente puede ser utilizado, modificado y redistribuido libremente por cualquiera bajo los términos de la GPL (Licencia Pública General de GNU, en inglés: General Public License) y otra serie de licencias libres.

A pesar de que Linux es, en sentido estricto, el núcleo del sistema operativo, parte fundamental de la interacción entre el hardware y el usuario (o los programas de aplicación) se maneja usualmente con las herramientas del proyecto GNU y con entornos de escritorio basados en GNOME, que también forma parte del proyecto GNU aunque tuvo un origen independiente. Sin embargo, una parte significativa de la comunidad, así como muchos medios generales y especializados, prefieren utilizar el término Linux para referirse a la unión de ambos proyectos. Para más información consulte la sección «Denominación GNU/Linux» o el artículo «Controversia por la denominación GNU/Linux».

A las variantes de esta unión de programas y tecnologías, a las que se les adicionan diversos programas de aplicación de propósitos específicos o generales se las denomina distribuciones. Su objetivo consiste en ofrecer ediciones que cumplan con las necesidades de un determinado grupo de usuarios. Algunas de ellas son especialmente conocidas por su uso en servidores y supercomputadoras. donde tiene la cuota más importante del mercado. Según un informe de IDC, GNU/Linux es utilizado por el 78% de los principales 500 servidores del mundo, otro informe le da una cuota de mercado de 89% en los 500 mayores supercomputadores. Con menor cuota de mercado el sistema GNU/Linux también es usado en el segmento de las computadoras de escritorio, portátiles, computadoras de bolsillo, teléfonos móviles, sistemas embebidos, videoconsolas y otros dispositivos.

El proyecto GNU y The Free Software Foundation

GNUEl proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistema operativo completamente libre. GNU es un acrónimo recursivo que significa GNU No es Unix (GNU is Not Unix). El 27 de septiembre de 1983 se anunció públicamente el proyecto por primera vez en el grupo de noticias net.unix-wizards. Al anuncio original, siguieron otros ensayos escritos por Richard Stallman como el «Manifiesto GNU», que establecieron sus motivaciones para realizar el proyecto GNU, entre las que destaca «volver al espíritu de cooperación que prevaleció en los tiempos iniciales de la comunidad de usuarios de computadoras».

El Manifiesto GNU fue escrito por Richard Stallman y fue publicado en marzo de 1985 en Dr. Dobb’s Journal of Software Tools como una explicación y definición de las metas del Proyecto GNU, para llamar a la participación y obtener apoyo. Es considerado por muchos en el movimiento del software libre como una fuente filosófica fundamental. El texto completo se incluye con el software GNU, como Emacs, y está disponible en la web. En los primero años tuvo pequeñas actualizaciones que justificaban su desarrollo, pero desde 1993 no ha sido modificado.

El movimiento del software libre comenzó en 1983 cuando Richard Stallman anunció el proyecto GNU. La meta del movimiento fue dar libertad a los usuarios de computadoras reemplazando el software con términos de licencia restrictivos, como el software privativo, por software libre.

La Free Software Foundation (Fundación para el software libre) es una organización creada en octubre de 1985 por Richard Stallman yRichard Stallman otros entusiastas del software libre con el propósito de difundir este movimiento. La Fundación para el software libre (FSF) se dedica a eliminar las restricciones sobre la copia, redistribución, entendimiento, y modificación de programas de computadoras. Con este objeto, promociona el desarrollo y uso del software libre en todas las áreas de la computación, pero muy particularmente, ayudando a desarrollar el sistema operativo GNU.

En sus inicios, la FSF destinaba sus fondos principalmente a contratar programadores para que escribiesen software libre. A partir de mediados de la década de 1990 existen ya muchas compañías y autores individuales que escriben software libre, por ello los empleados y voluntarios de la FSF han centrado su trabajo fundamentalmente en asuntos legales, organizativos y promocionales en beneficio de la comunidad de usuarios de software libre.

El proyecto GNU ha proporcionado ya a la comunidad de software muchas aplicaciones que imitan estrechamente a las que se encuentran en los sistemas UNIX. Todos esos programas, denominados software GNU, se distribuyen al amparo de la GNU General Public License (GPL), que podrá obtener en http://www.gnu.org/. Dicha licencia plasma el concepto de copyleft (lo opuesto a copyright). Copyleft está pensado para evitar que otros impongan restricciones sobre el uso del software libre.

A continuación vemos los principales ejemplos del Proyecto GNU distribuidos al amparo de la GPL:

  • GCC.- GNU Compiler Collection, que contiene el compilador GNU C.
  • G++.- Un compilador C++, incluido como parte de GCC.
  • GDB.- Un programa de depuración a nivel del código fuente.
  • GNU make.- Una versión GNU make.
  • Bison.- Un generador de análisis compatible con UNIX yacc.
  • bash.- Una shell de comando.
  • GNU Emacs.- Un editor de texto y entorno.

Distribuciones Linux

Existen distribuciones que están soportadas comercialmente, como Fedora (Red Hat), openSUSE (Novell), Ubuntu (Canonical Ltd.), Mandriva, y distribuciones mantenidas por la comunidad como Debian y Gentoo. Aunque hay otras distribuciones que no están relacionadas con alguna empresa o comunidad, como es el caso de Slackware. Las distribuciones Linux comenzaron a surgir poco después de que el núcleo Linux fuera utilizado por otros programadores además de los creadores originales. Existía mayor interés en desarrollar un sistema operativo que en desarrollar aplicaciones, interfaces para los usuarios o un paquete de software conveniente.

Entre las distribuciones más antiguas se incluían:

  • Dos discos denominados H J Lu’s «Boot-root» con el núcleo y un mínimo de herramientas para utilizar.
  • MCC Interim Linux, que se podía descargar en un servidor público FTP de la Universidad de Mánchester en febrero de 1992.
  • TAMU, creado por entusiastas de la Universidad de Texas A&M al mismo tiempo que SLS.
  • SLS (Softlanding Linux System).
  • Yggdrasil Linux creó el primer CD-ROM de una distribución Linux.

Entre las distribuciones Linux más populares se incluyen:

logos-distros

  • Arch Linux, una distribución basada en el principio KISS, con un sistema de desarrollo continuo entre cada versión (no es necesario volver a instalar todo el sistema para actualizarlo).
  • Debian, una distribución mantenida por una red de desarrolladores voluntarios con un gran compromiso por los principios del software libre.
  • Fedora, una distribución lanzada por Red Hat para la comunidad.
  • Ubuntu, una popular distribución para escritorio basada en Debian y mantenida por Canonical.
  • Kubuntu, la versión en KDE de Ubuntu.
  • Linux Mint, una popular distribución derivada de Ubuntu.
  • Chakra project, una popular distribución para escritorio, inicialmente basada en Arch Linux, actualmente se encuentra en un desarrollo independiente.
  • openSUSE, originalmente basada en Slackware es patrocinada actualmente por la compañía SUSE (The Attachmate Group).
  • Puppy Linux, versión para equipos antiguos o con pocos recursos que pesa unos 130 MiB.
  • CentOS, una distribución creada a partir del mismo código del sistema Red Hat pero mantenida por una comunidad de desarrolladores voluntarios.
  • Gentoo, una distribución orientada a usuarios avanzados, conocida por la similitud en su sistema de paquetes con el FreeBSD Ports, un sistema que automatiza la compilación de aplicaciones desde su código fuente.
  • Knoppix, fue la primera distribución live en correr completamente desde un medio extraíble. Está basada en Debian.
  • Mandriva, mantenida por la compañía francesa del mismo nombre, es un sistema popular en Francia y Brasil. Está basada en Red Hat.
  • Mageia, creada por ex trabajadores de Mandriva, muy parecida a su precursor.
  • PCLinuxOS, derivada de Mandriva, pasó de ser un pequeño proyecto a una popular distribución con una gran comunidad de desarrolladores.
  • Red Hat Enterprise Linux, derivada de Fedora, es mantenida y soportada comercialmente por Red Hat.
  • Slackware, una de las primeras distribuciones Linux y la más antigua en funcionamiento. Fue fundada en 1993 y desde entonces ha sido mantenida activamente por Patrick J. Volkerding.
  • Slax, es un sistema Linux pequeño, moderno, rápido y portable orientado a la modularidad. Está basado en Slackware.
  • Dragora y Trisquel, que van adquiriendo importancia entre las distribuciones que sólo contienen software libre.
  • Canaima, es un proyecto socio-tecnológico abierto, construido de forma colaborativa, desarrollado en Venezuela y basado en Debian.
  • Tuquito Basada en Ubuntu, distribución desarrollada en argentina con buenas interfaces gráficas y drivers universales. Recomendada para usuarios iniciales.
  • Trisquel Distribución 100 % libre, utiliza el núcleo Linux-Libre y es apropiada para usuarios finales.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.