ArchiTecnologia

Aprendizaje abierto. Conocimiento libre.

ArchiTecnologia
Código abiertoLinux

Una historia de UNIX: … y llegó el kernel, la pieza que faltaba

Y llegamos al fin de esta historia de UNIX. Aquí se termina esta serie de artículos especiales de octubre por la muerte de Dennis Ritchie hace 8 años. A partir de ahora, volveré a los contenidos del blog tradicionales sobre LPIC, Linux en general, RISC-V, programación, etc. Espero no haberte aburrido demasiado con esta historia, pero era algo que creo que es justo. Además, para amar algo creo que es necesario conocer su historia.

¿Sábes? He tenido la oportunidad de hablar con algunos de los personajes históricos que aparecen aquí y con otros importantes del mundo Linux que no he citado. Me siento realmente afortunado por ello, y cuando echo la vista atrás, ni me imaginaría hace unos años que podría haber conseguido tener contacto con: Jon «maddog» Hall, Richard Stallman, Eric S. Raymond, Rudd Canaday, etc. Te confieso que me siento muy pequeñito al lado de ellos, y solo intento ser cada día un poquito mejor…

Plan 9: el sustituto de UNIX que no llegó a serlo…

Plan 9 y Glenda
Plan 9 from Bell Labs y la mascota Glenda

Como ya comenté en el artículo de historia de Unix, Bell Labs no pararon tras abandonar el desarrollo de UNIX. Buscaban sucesor con lo aprendido con Unix y, aunque los conceptos radicales en cuanto a diseño estructural de los sistemas operativos se habían congelado en la década de los 80, aún había innovaciones por incluir. Por eso comenzaron a desarrollar un revolucionario sistema operativo llamado Plan 9 from Bell Labs.

Los problemas conceptuales de UNIX eran demasiado profundos como para repararlos. Se necesitaba un rediseño completo, un nuevo SO. Los problemas de los que hablo pasan por que Unix es un sistema de tiempo compartido, algo que para microcomputadoras no es lo más adecuado cuando. Es decir, en un PCs, no sirve de mucho el tiempo compartido, cuando solo suele haber un usuarios a la vez, se busca una administración centralizada, sin depender de varios terminales o equipos conectados.

UNIX se apoyaba sobre dos pilares fundamentales que lo han hecho tan bueno: todo es un archivo (incluido los dispositivos), los programas deben cumplir una sola funcionalidad, pero hacerlo bien (para funciones complejas, se pueden usar varios programas simples en vez de un solo programa complejo y pesado).

Por otro lado, otra gran traba de UNIX fue la de una ausencia de un entorno gráfico moderno. Existían algunos entornos, y el servidor gráfico X-Windows, pero se necesitaba algo más que eso.

Eso es lo que se pretendía subsanar con el sistema operativo distribuido Plan 9. Y aunque actualmente se use con fines de investigación sobre sistemas operativos, no fue creado para eso por el Computing Research Center de los laboratorios Bell. Allí trabajaron algunos de los padres de UNIX como Dennis Ritchie, Ken Thompson, Rob PIke, Doug McIlroy y Brian Kernighan, además de otros como Dave Presotto, Phil WInterbottom, Tom Duff, Sean Dorward, Bob Flandrena, Howrad Trickey, Bjarne Stroustrup y muchos más.

El nombre de Plan 9 from Bell Labs proviene de la película de Ed Wood de ciencia ficción Plan 9 del espacio exterior. Tras este nombre se esconde un sistema operativo con kernel híbrido escrito en ANSI C y publicado bajo licencia dual: Lucent Public License y GNU GPL v2. Estaba disponible para diferentes arquitecturas: IA-32, MIPS, DEC Alpha, SPARC, PowerPC, ARM, 68k, etc. Algunas de sus apps se escribieron en lenguaje Alef, aunque más tarde también fueron reescritas en C. Se importaron también aplicaciones POSIX y se emuló sockets de Berkeley.

Su desarrollo comenzó en los 1980, pero no estuvo disponible hasta 1992 para universidades y en 1995 para el público en general. Pero el interés por Plan 9 no duraría mucho, tan solo un año más tarde de su apertura para todos, AT&T Bell Labs decidiría dejarlo de lado y centrar sus esfuerzos en desarrollar otro nuevo SO llamado Inferno.

Además, Lucent Technologies (propietarios de Bell Labs entonces) no se interesaron por el desarrollo comercial de Plan 9 y acabaron con él en 2000. Su desarrollo se ha mantenido hasta 2002, lanzando dos versiones no comerciales. De hecho, han surgido algunas distribuciones como 9atom, 9font, 9legacy, Akaros, HarveyOS, etc.

Era un sistema operativo embebido de código abierto que puede funcionar como una aplicación de usuario en la parte superior de otro SO o como sistema autónomo. Inferno también mejora el rendimiento de las apps mediante la compilación del código objeto sobre la marcha. La idea de Inferno era poder rivalizar con la plataforma Java de Sun Microsystems.

Dice Eric Raymond que Plan 9 fracasó por que era imposible hacer un sistema operativo mejor que UNIX. No obstante, le comenté este a Richard Stallman y discrepa de esto… Sea como sea, que no es el caso ahora, lo cierto es que fracasó. A pesar de eso, tiene innovaciones dignas de mención:

  • Codificación Unicode (UTF-8)
  • Los recursos/dispositivos son accedidos como ficheros bajo un sistema jerarquizado de directorios.
  • Incluye un concepto de directorios de unión que combinan y agrupan recursos a través de diferentes medios y redes. Por ejemplo, un directorio /bin puede ser vinculado al de otro equipo de la red para que el usuario pueda usar tanto los binarios locales como los que hay en otros ordenadores de esa red de forma totalmente transparente. Igual para otros directorios…
  • El protocolo 9P de comunicación permite acceder a recursos remotos como si fuesen locales. Es decir, en Plan 9 todo se trata como un recurso local, así que si un ordenador de la red necesita más capacidad de procesamiento o RAM, lo puede tomar «prestado» de algún otro equipo conectado a la red.
  • Tiene sistemas de ficheros virtuales especiales como /net, que suple la carencia de llamadas al sistema ioctls para acceder a la pila de red. Otro de esos directorios especiales es /proc, que también ha heredado Linux para acceder a información de los procesos.
  • Incluye un sistema de ventanas gráficas moderno llamado Río.
  • Los namespaces o espacios de nombres permiten que cualquier fichero pueda ser nombrado y accedido por cualquier objeto, algo similar a una URI de WWW para manejar recursos no locales. Recuerda que se trata de un SO distribuido… Y cada usuario puede tener diferentes nombres para los mismos objetos reales.
  • Gran cantidad de herramientas que han sido portadas a otros sistemas operativos por lo prácticas que resultan.

Plan 9 from Bell Labs no estaba preparado para sustituir a UNIX a pesar de que fue creado para eso. En cambio, Linux que no fue creado con ese objetivo parece haberlo conseguido…

Linux, verdadero sustituto

Tux logo

¿Recuerdas? A GNU le faltaba la pieza principal, el kernel. Sin él no era un sistema operativo libre completo. Y esa pieza llegó desde el sitio más insospechado: Finlandia.

Un joven suecoparlante llamado Linus B. Torvalds de Helsinki compraría (a plazos) en 1991 su propia computadora 80386 sobre la que escribiría su propio sistema basándose en Minix (1988 por el profesor Andrew S. Tanenbaum). También se ayudaría del trabajo publicado por Maurice J. Bach, «Design of the Unix Operating System» de 1986.

Todo comenzó como algunos de los grandes descubrimientos, por un error. Linus había borrado por accidente los primeros sectores del disco duro donde residía Minix. Tenía dos opciones, reinstalar todo de nuevo o aprovechar lo que aún quedaba para mejorarlo y añadir otras funcionalidades. Cualquiera de los mortales habrían reinstalado, pero Linus no era un cualquiera…

Linus llevaba tiempo pensando en mejorar Minix, porque no le gustaba para algunas de las tareas que tenía que realizar en la universidad. Tenía defectos y pensó que podía mejorarlo. Además, tampoco se podía comprar una licencia UNIX que costaba miles de dólares en aquella época.

Poco después de comenzar a escribir el kernel en lenguaje C lo anunció en un grupo de noticias comp.os.minix:

«Estoy haciendo un sistema operativo (gratuito, sólo un hobby, no será nada grande ni profesional como GNU) para clones AT 386(486). Llevo en ello desde abril y está empezando a estar listo. Me gustaría saber vuestra opinión sobre las cosas que les gustan o disgustan de Minix, ya que mi SO tiene algún parecido con él […] Actualmente he portado bash(1.08) y gcc(1.40), y parece que las cosas funcionan. Esto implica que tendré algo práctico dentro de unos meses…».

El 5 de octubre de 1991 vendría la versión 0.02 de aquel sistema junto con un nuevo mensaje anunciándolo:

«¿Echa de menos los días felices de Miniz-1.1, época bendita, cuando los hombres eran dignos de este nombre y escribían sus propios controladores de periféricos? ¿Quiere comprometerse en un proyecto original y está deseando encontrar un sistema modificable a su conveniencia? ¿Está deseando que todo funcione bajo Minix? ¿Echa de menos las noches en blanco intentando implementar un programa recalcitrante? Si es así, lea lo que sigue: como ya he publicado hace un mes, estoy trabajando actualmente en una versión libre de un sistema similar a Minix para un ordenador AT-386. Este sistema ya está operativo (aunque tal vez no le convenga, todo depende de lo que esté buscando), y pienso publicar sus fuentes. Se trata, de momento, de la versión 0.02, capaz sin embargo de ejecutar bash, gcc, gnu-make, gnu-sed, compress, etc.»

Lo que pocos saben es que inicialmente se llamó Freax (de raro o freak) y que no era de código abierto. Un compañero de la universidad llamado Ari Lemmke, convenció a Torvalds de que debía tener otro nombre. Ari fue el encargado de subir esta primera versión al sitio FTP y renombró la carpeta con el nombre de linux, y la gente comenzó a llamarlo así. Lemmke creía que era más comercial así y tomó esta decisión sin consultarlo con Torvalds.

Ari también sería «culpable» de otra cosa que ha hecho que Linux sea lo que es a día de hoy. Y es que lo publicase bajo licencia GPL. Hasta antes de la versión 0.12 estaba licenciado bajo una licencia propia que restringía su uso comercial. Además, ya que se había servido de gcc y de otras utilidades de GNU para su proyecto, esto sería una buena idea para Lemmke.

Linux necesitaba de GNU y GNU necesitaba de Linux, el ciclo estaba cerrado. A partir de aquí, creo que la historia la conoces bastante bien.

¡Gracias Dennis Ritchie! Todo esto se debe a tu legado…

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

2 thoughts on “Una historia de UNIX: … y llegó el kernel, la pieza que faltaba

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar