Guia v4/GNU Linux, el sistema operativo

De Guadapedia, la enciclopedia libre.

Tabla de contenidos

GNU/Linux, el sistema operativo

"The Dynamic Duo: The Gnu and the Penguin in flight", de Lissanne Lake
Enlarge
"The Dynamic Duo: The Gnu and the Penguin in flight", de Lissanne Lake

Se denomina sistema operativo al conjunto de programas necesarios para activar un ordenador y convertirlo en una herramienta manejable [1] (http://es.wikipedia.org/wiki/Sistemas_operativos). Cuando encendemos un ordenador el sistema operativo se encarga de dar los pasos necesarios para que, segundos más tarde, podamos identificarnos, llegar a nuestro escritorio y abrir los programas que queramos utilizar. Aunque pase desapercibido a nuestros ojos, el sistema operativo se encuentra activo siempre que el ordenador está encendido. Todo lo que informáticamente sucede se produce encima suyo.

Cuatro décadas de historia informática han visto nacer, crecer y morir a decenas de sistemas operativos [2] (http://en.wikipedia.org/wiki/Operating_systems_timeline). GNU/Linux nació en 1992 y actualmente es el sistema operativo libre más extendido. Con frecuencia se denomina de forma simplificada "Linux", aunque como explicaremos a continuación hay motivos para ser precisos y no ahorrarse el prefijo "GNU".

A veces se menciona a GNU/Linux como el sistema operativo libre. Aunque es el más implantado, no es el único. Destaca la familia BSD [3] (http://es.wikipedia.org/wiki/BSD) (FreeBSD, OpenBSD...), cuyo kernel se coordina desde la Universidad de Berkeley (California, Estados Unidos). Centralización versus descentralización resumiría las diferencias entre los sistemas *BSD y los del kernel Linux, aunque ambas partes reconocen las ventajas y desventajas de cada estrategia. GNU/Linux oficializa este reconocimiento incorporando componentes clave procedentes del proyecto BSD.

Mac OS X, el sistema operativo utilizado por los ordenadores Apple actuales, es una variante no libre de BSD. Algo así como un primo lejano de GNU/Linux, con quien comparte parentesco (el sistema UNIX). Por este motivo los usuarios de Macintosh tienen un acceso algo más sencillo a aplicaciones de código abierto [4] (http://www.apple.com/downloads/macosx/unix_open_source/) que los usuarios de MS Windows, sistema operativo radicalmente diferente que, además, se ha empeñado en los últimos años en dificultar la compatibilidad e interoperabilidad con el software libre por razones comerciales. Aunque esta estrategia obstaculizadora parece estar cambiando.


La importancia de distinguir entre ordenador y sistema operativo

Uno de los principales problemas que nos encontramos a la hora de divulgar el software libre es la extendida creencia de que el sistema operativo y el entorno de escritorio son parte intrínseca e inseparable del ordenador. Esta creencia lleva al muy frecuente error de confundir la informática con MS Windows, la ofimática con MS Office y hasta Internet con MS Internet Explorer. Es lógico: millones de usuarios se han encontrado con un sistema operativo y un escritorio MS Windows cada vez que han encendido un ordenador. Cosas de vivir inmersos en uno de los monopolios más extendidos del planeta.

Pero el error sería comparable al de los habitantes de un valle pobremente comunicado que sólo pudieran sintonizar un canal de televisión y pensaran que la que ven es la única programación que su televisor puede mostrar. Algunos vecinos pensarían que para ver otra programación deberían adquirir un televisor diferente. No pocos estarían convencidos de que ese canal es el único que existe. Habría que sacarles del valle con su propio televisor bajo el brazo para que entendieran que pueden elegir entre varios canales y comprobaran que su propio aparato les permite dicha elección si salen de la zona de sombra herziana. También se les podría mostrar el uso de cámaras y cintas de vídeo, DVD, videojuegos... para que entendieran mejor qué es un televisor y cómo es capaz de vehicular múltiples canales y tipos de contenidos.

Algo así es lo que intentamos hacer los difusores del software libre, sólo que con ordenadores en vez de televisores. A muchos usuarios les cuesta imaginar que su propio ordenador sea capaz de funcionar sin pasar por la ventana de Microsoft (o la manzana de Apple). Pero los ordenadores corrientes son capaces de funcionar con varios sistemas operativos. Y pueden funcionar con sistemas operativos libres que activen entornos de escritorio libres, aplicaciones libres, controladores de dispositivo libres, y todo lo necesario para trabajar con un ordenador libremente.

Quien entiende esto empieza a salir del valle de la sombra, de la caverna del mito.


El software que despierta el hardware

Algunos recordarán la teleserie Los hombres de Harrelson con ese esperado momento en que el teniente Hondo movilizaba a sus agentes en todas las direcciones y enviaba a TJ al tejado. Algo así es lo que hace el sistema operativo con los componentes del ordenador (básicamente sílice, metales y plásticos) cuando encedemos la máquina (suministrándole electricidad).

En los primeros milisegundos de vida el ordenador se encuentra ante una paradoja: debe iniciar el sistema operativo que se encuentra en un dispositivo (disco duro, memoria RAM o memoria Flash), pero antes debe activar este dispositivo y para ello necesita un sistema operativo. Es decir, antes de movilizar a nadie el teniente Hondo se debe movilizar a sí mismo. La solución de esta paradoja la aporta el cargador de arranque, una mínima esencia de un sistema operativo ubicado en la minúscula memoria ROM del ordenador que, como el Barón de Münchhausen, es capaz de levantarse a sí mismo estirando de sus propias botas. De esta fábula proviene el término bootstrapping (tirar de las botas) que denomina este proceso inicial, así como su derivación booting que ha generado los anglicismos no oficiales en español botar (iniciar) o rebotar (reiniciar).

Superada la paradoja, el sistema operativo empieza a pasar lista más o menos en este orden:

  1. Comprobación de la propia integridad del programa de arranque. El teniente Hondo se palpa a sí mismo para comprobar que está entero.
  2. Busqueda y medición de las memorias principales ROM (donde reside el programa de arranque) y RAM (donde se empieza a extender estirando de sus botas).
  3. Búsqueda y comprobación de los canales de comunicación internos (buses) así como de los dispositivos que el sistema requiere para arrancar en condiciones: discos duros, lectores de CD/DVD y disquet, USB, teclado y monitor, principalmente. Pasa lista para ver si podemos emprender la misión.
  4. Generación de un interfaz para la configuración básica del sistema. Ese "Press F1..." que durante unos segundos se nos muestra en la pantalla antes de cargar el sistema operativo en sí y con el que hay que ir con mucho cuidado.
  5. Búsqueda del arranque del sistema operativo y de particiones del disco duro (algo así como las parcelas de una urbanización, donde cada parcela permite construir una casa). Si encuentra varios sistemas arrancables (varias casitas en la urbanización), muestra un menú de selección. Si encuentra sólo uno lo inicia directamente.
  6. Una vez decidido el sistema operativo a utilizar, descompresión y carga del kernel (el grano, la semilla de la que brota todo el sistema).
  7. Cuando el kernel ya está en su puesto y controlando la situación, pasa una lista exhausitiva a todo el hardware. El kernel efectúa las configuraciones necesarias para trabajar correctamente con todos los dispositivos, tanto los que han sido detectados anteriormente como los que ha llegado el momento de activar: ratón, conexiones de red, impresora, módem, escáner, webcam y todo lo demás que tengamos conectado al ordenador.
  8. Arranque de servidores, demonios y demás procesos latentes. Que conste que estos demonios son más griegos (ayudantes de los dioses) que judeo-cristianos (esbirros de Satanás), aunque a veces jueguen alguna mala pasada.
  9. Arranque del entorno gráfico que cargará la bonita pantalla de bienvenida e identificación de usuario.

Y así llegamos a la puerta de acceso al escritorio. Una vez que entremos en nuestra oficina digital, Harrelson y sus agentes ya estarán en sus puestos preparados para acometer todas las misiones que les planteemos.


Los programas de sistema del proyecto GNU

Imagen: Aurélio A. Hecker
Enlarge
Imagen: Aurélio A. Hecker

Veamos el origen de todos estos programas que acompañan al kernel en el arranque y funcionamiento básico del ordenador.

A mediados de los años 70 un nuevo mercado con grandes expectativas empezaba a tomar forma: la informática doméstica, los ordenadores personales. Hasta entonces los ordenadores habían sido aparatos caros, pesados y de producción no masiva adquiridos por universidades, centros de investigación, organismos públicos y grandes empresas. Los desarrolladores de software mantenían su código abierto y colaboraban entre sí a través de canales como las redes de la Internet de aquellos años, operadas ellas mismas con software libre. Con la comercializasión del software esta tendencia cambió y las empresas obligaron a sus programadores contratados a cerrar el código, vendiendo los programas sin facilitar su código fuente.

Esto generó una reacción de rechazo que se materializó en 1983 con un llamado de Richard Stallman [5] (http://stallman.org) a la creación del proyecto GNU [6] (http://es.wikipedia.org/wiki/GNU) con el objetivo de crear un sistema operativo libre. Por aquel entonces el sistema operativo de referencia era UNIX, propiedad de AT&T. La denominación GNU definía una inspiración y desmarque de UNIX, puesto que las siglas responden a "GNU's Not Unix" (GNU no es Unix). Su emblema sería un ñu, el primer especimen de una larga lista zoológica que el software libre ha generado.

El proyecto GNU cuajó, diversos programadores se identificaron con su manifiesto fundacional y empezaron a colaborar y producir componentes libres del futuro sistema operativo. Muchos de esos programas siguen vivos hoy y son herramientas claves del sistema operativo GNU/Linux, a destacar la colección de compiladores GCC (digamos que la fibra muscular de GNU/Linux) y el editor de texto Emacs, con el cual se han escrito kilómetros de código libre.

Otras contribuciones clave de este proyecto fueron el concepto de copyleft (opuesto al copyright) y la Licencia Pública General de GNU (GNU/GPL) que regula legalmente la autoría y derechos de uso del software libre. En 1985 se creó la Free Software Foundation [7] (http://fsf.org) para canalizar ayudas económicas y dar una cierta estructura al movimiento, que entraba en su primera fase de maduración.

No obstante, faltaba una pieza clave: el kernel. Sin nucleo libre no podía haber sistema operativo libre, y aunque se realizaron aproximaciones como GNU Hurd, la solución práctica y aplicable seguía sin concretarse.


El kernel Linux

Imagen: Anja Gerwinski & co
Enlarge
Imagen: Anja Gerwinski & co

El primer kernel libre y operativo no llegaría hasta la década de los 90. Su aparición fue una sorpresa y el día que fue anunciado por primera vez seguramente nadie imaginó lo que se desencadenaría después. En 1991 un estudiante finlandés de 21 años llamado Linus Torvalds [8] (http://www.cs.helsinki.fi/u/torvalds/) envió un mensaje a un grupo de noticias de Usenet explicando: "Estoy haciendo un sistema operativo libre (sólo un hobby, no será algo grande y profesional como gnu)... [9] (http://en.wikipedia.org/wiki/Linux_kernel)

Llevaba cuatro meses desarrollando en solitario este nuevo kernel, empezando a escribir su código desde cero. Días después del anuncio publicó una versión 0.0.1. Pasaron dos años y medio y múltiples versiones de desarrollo hasta llegar a la versión 1.0.0 en marzo de 1994. Mientras tanto el kernel Linux (denominado así como derivación de su nombre Linus con la popular terminación X de UNIX) ya se había consolidado como la punta del iceberg de la comunidad del software libre.

Dos años más tarde, en 1996, el kernel Linux 2.0.0 vería la luz ya asociado con la mascota pingüino (llamada Tux). En la actualidad el kernel Linux va por la versión 2.6.14, está disponible para una gran variedad de arquitecturas de ordenador y tiene el reconocimiento de la industria informática y de la comunidad como estable, sólido y seguro.

Su desarrollo no forma parte del proyecto GNU, pero la colaboración entre ambas iniciativas es estrecha y ambos complementos han llevado el software libre a ser una alternativa real al software propietario, materializándose así una parte de las aspiraciones y objetivos que dieron lugar a este movimiento.

"A 3D baby GNU and baby Tux", de Nicolas Rougier
Enlarge
"A 3D baby GNU and baby Tux", de Nicolas Rougier


     Sigue: Debian, la distribución madre